ダディクールがC/C++の宿題を片づけます 32代目

このエントリーをはてなブックマークに追加
934デフォルトの名無しさん:04/10/28 22:43:20
>>930
すいません、昨日から考えている。でした。

>>931
対応できるようにお願いします。
935デフォルトの名無しさん:04/10/28 22:46:19
>>933
マジ?
ちょーうれしいんだけど
936917:04/10/28 22:58:49
>>927
展開しておけとはどのように書けばようのでしょうか?

>>932
関数はまだやっていません。申し訳ありません。
937デフォルトの名無しさん:04/10/28 23:01:21
//*
A
/*/
B
//*/
最初の/だけでABの選択可
938デフォルトの名無しさん:04/10/28 23:03:20
>>928
/*という連続したものを探し当てたら、*/を探し当てるまでコメントとして扱う。
以上
939デフォルトの名無しさん:04/10/28 23:05:34
>>936
ネタみたいだから、もう何も書かないけれど、ループをgotoで置き換えれば良い。
もしくは、
int main() {
double sum;
double x;
double h;
h = PI / 20;
x = 0;
sum += sin(x) + 4 * sin(x + h) + sin(x + 2 * h);
x += 2 * h;
sum += sin(x) + 4 * sin(x + h) + sin(x + 2 * h);
x += 2 * h;
sum += sin(x) + 4 * sin(x + h) + sin(x + 2 * h);
x += 2 * h;
sum += sin(x) + 4 * sin(x + h) + sin(x + 2 * h);
x += 2 * h;
sum += sin(x) + 4 * sin(x + h) + sin(x + 2 * h);
x += 2 * h;
sum += sin(x) + 4 * sin(x + h) + sin(x + 2 * h);
x += 2 * h;
sum += sin(x) + 4 * sin(x + h) + sin(x + 2 * h);
x += 2 * h;
sum += sin(x) + 4 * sin(x + h) + sin(x + 2 * h);
x += 2 * h;
sum += sin(x) + 4 * sin(x + h) + sin(x + 2 * h);
x += 2 * h;
sum += sin(x) + 4 * sin(x + h) + sin(x + 2 * h);
x += 2 * h;
printf("%lf\n", sum);
}
と全て書く。
940デフォルトの名無しさん:04/10/28 23:10:05
>>939
sumが初期化されてないし答えが間違ってるぞ
941デフォルトの名無しさん:04/10/28 23:14:43
- double sum;
+ double sum = 0;

- printf("%lf\n", sum);
+ printf("%lf\n", sum * h /3.0);
942デフォルトの名無しさん:04/10/28 23:15:18
>>940
もうどうでもいいやん
適当に書いたんだよ
943デフォルトの名無しさん:04/10/28 23:16:12
>>942
じゃあ書くなよ
944デフォルトの名無しさん:04/10/28 23:16:39
>>943
ヒントものだね。
ないよりマシってやつだ。
945デフォルトの名無しさん:04/10/28 23:31:01
という事にしたいのですね
946デフォルトの名無しさん:04/10/28 23:35:44
>>945
好きにしてくれ
947デフォルトの名無しさん:04/10/29 00:35:21
一応次スレ
暇な人がエレガントにC/C++の宿題片づけます 33代目
http://pc5.2ch.net/test/read.cgi/tech/1097932699/
948デフォルトの名無しさん:04/10/29 01:12:52
    /\___/ヽ
   /''''''   '''''':::::::\    
  . |(●),   、(●)、.:| + 終わり?
  |   ,,ノ(、_, )ヽ、,, .::::|.   
.   |   `-=ニ=- ' .:::::::| +  
   \  `ニニ´  .:::::/  + 
,,.....イ.ヽヽ、ニ__ ーーノ゙-、   
:   |  '; \_____ ノ.| ヽ i  
    |  \/゙(__)\,|  i |  
    >   ヽ. ハ  |   ||. 
949デフォルトの名無しさん:04/10/29 01:30:13
>>948
ざんねんだったな。
エシュロンのエサになりな!
950872 :04/10/29 03:14:26
>>873さん、ありがとうございます!
レスが遅くなってすみませんでした。
僕もプログラムを組んでみていたのですが、
再帰のところの条件がうまくできなくて、∞ループに
なったりしていたんですが、おかげさまで解決できました!
>>879
おもしろいですね、僕も考えてみます。
951872:04/10/29 03:36:30
>>950
どちらさん?

>>873
ありがとうございました。ドンピシャでした。

952デフォルトの名無しさん:04/10/29 06:39:25
最初から最後までどうしようもないスレだったな
953デフォルトの名無しさん:04/10/29 12:42:38
次スレでも常識人さんが降臨しますように・・・
954873:04/10/29 15:39:55
>>950,951
同じ学校?
判ってるとは思うが「硬貨」に直すなら main 内での count() の第2引数を 7 -> 4 にしる。
955デフォルトの名無しさん:04/10/29 18:44:26
1900年以降の干支を出力するプログラムなのですが、下記のところが未熟者の私には限界です。
どうかご指摘お願いします。
#include <stdio.h>
int main(void)
{
char *eto[13][2]={"子","丑","虎","卯","竜","巳","午","未","申","酉","戌","亥",};
int e,da,sa,i;
printf("1900以降の西暦を入力して下さい\n");
scanf("%d",&e);
da=(e-1900)%12;9
for(i=0;i<=12;i++){
if(da==i){printf("%s",*eto[da]);}
}
return 0;
}
956デフォルトの名無しさん:04/10/29 19:11:20
配列は12個で、定数"子"の型は char[]だから
char eto[][12]={"子", ・・・か
char *eto[12]={"子", ・・・のどちらか

printf("%s\n",eto[da]);

あとfor ループは不要
957デフォルトの名無しさん:04/10/29 19:30:37
>>956様ありがとうございます
色々考えて下記のとおりになりましたが、なかなかうまくいきません。
ご指導の方、お願いします。
#include <stdio.h>
int main(void)
{
char eto[14][2]={"子","丑","虎","卯","竜","巳","午","未","申","酉","戌","亥",};
int e,i;
for(i=0;i<13;i++){
printf("%s\n",eto[i]);}
printf("1900以降の西暦を入力して下さい\n");
scanf("%d",&e);
printf("%s",eto[(e-1900)%12]);
return 0;
}
958デフォルトの名無しさん:04/10/29 19:36:15
>>957
いいかげんにしろよ
話を聞く気が無いなら去れ
959デフォルトの名無しさん:04/10/29 19:40:02
>>957
どんな症状かも言わないとは。人に尋ねる態度じゃないな。
960957:04/10/29 19:55:08
大変申し訳ありません。m(_ _)m
956様のおっしゃることを再度考え直しましたところ、
解決することが出来ました。
ありがとうございました。
961デフォルトの名無しさん:04/10/29 19:59:35
>m(_ _)m
なにこれ
最後までふざけた奴だな
962デフォルトの名無しさん:04/10/29 20:01:01
>>961
ふざけてないんていませんよ!
氏んでください!
963デフォルトの名無しさん:04/10/29 20:38:18
#include <stdio.h>
int main(void)
{
char eto[12][3]={"子","丑","虎","卯","竜","巳","午","未","申","酉","戌","亥"};
int e,i;
for(i=0;i<12;i++){
printf("%s\n",eto[i]);}
printf("1900以降の西暦を入力して下さい\n");
scanf("%d",&e);
printf("%s",eto[(e-1900)%12]);
return 0;
}
これじゃだめなんかねー
964デフォルトの名無しさん:04/10/29 20:45:29
>>963駄目だろ
965デフォルトの名無しさん:04/10/29 20:47:05
いや良いと思うぞ
966デフォルトの名無しさん:04/10/29 21:07:09
細かいこというと 虎->寅 竜->辰 なわけだが
967デフォルトの名無しさん:04/10/29 21:46:52
>>966
オサーン
968!=966:04/10/29 21:55:05
>>967
別に細かいことを言うのはオサーンの特性ではないぞ。
細かいことに気を使うことを「かっこわるい」だとか「器が小さい」などと
いう風に連想するような風潮があるみたいだが、それは良くない文化だ。
命題論理としてでもそれが正しいとは言えない。
969デフォルトの名無しさん:04/10/30 00:22:54
for(i=1;i<=8;i=i+7){
if(data[i][1]!=0 && data[i][1]==data[i][3])point[i][2]+=20;
if(data[i][8]!=0 && data[i][8]==data[i][6])point[i][7]+=20;
if(data[1][i]!=0 && data[1][i]==data[3][i])point[2][i]+=20;
if(data[8][i]!=0 && data[8][i]==data[6][i])point[7][i]+=20;
}

これにもう一個if分使ってすっきりしたいんですけど、どうやるんですか?
970969:04/10/30 00:35:46
if文じゃなくてfor文です
971デフォルトの名無しさん:04/10/30 00:38:32
>>968
敢えて言うが、「風潮」は「文化」ではないね。
「風潮がある」ことも「文化」ではないし。
細かいことを指摘すること自体は賛同するが、
自分が普段使わないような言い回しを無理して使うことはないよ。
972デフォルトの名無しさん:04/10/30 00:38:49
>>969
渦巻きでも作りたいのか?
973デフォルトの名無しさん:04/10/30 00:42:23
>>971
風潮は文化だよ
974デフォルトの名無しさん:04/10/30 00:47:22
>>969
無理にループにしようとするより、この方が判り易くない?
if(data[1][1]!=0) {
if(data[1][1]==data[1][3]) point[1][2]+=20;
if(data[1][1]==data[3][1]) point[2][1]+=20;
}
if(data[1][8]!=0) {
if(data[1][8]==data[1][6]) point[1][7]+=20;
if(data[1][8]==data[3][8]) point[2][8]+=20;
}
if(data[8][1]!=0) {
if(data[8][1]==data[6][1]) point[7][1]+=20;
if(data[8][1]==data[8][3]) point[8][2]+=20;
}
if(data[8][8]!=0) {
if(data[8][8]==data[8][6]) point[8][7]+=20;
if(data[8][8]==data[6][8]) point[7][8]+=20;
}
って、展開してみてわかった。オセロの評価関数か。
975デフォルトの名無しさん:04/10/30 00:58:44
>>971
不倫は文化だよ
976969:04/10/30 01:02:03
>>974
正解です。
そっちのほうがわかりやすい気がするが、if文がまだまだあるので
できるだけすっきりしたい。
977デフォルトの名無しさん:04/10/30 01:13:52
点対称・線対称で1/4に正規化したデータ作れ
978r:04/10/30 01:14:15
#define hoge(x,y,z) ( (z) += (( (x) != 0 && (x) == (y) ) ? 20 : 0));
こんなマクロでも
979デフォルトの名無しさん:04/10/30 01:28:04
int data[10][10];
int point[10][10];
void update_point_a(int x, int *n){
  if( data[x][n[0]] != 0 &&
      data[x][n[0]] == data[x][n[1]] )
    point[x][n[2]] += 20;
}
void update_point_b(int x, int *n){
  if( data[n[0]][x] != 0 &&
      data[n[0]][x] == data[n[1]][x] )
    point[n[2]][x] += 20;
}
void ( *func_tbl[] )(int, int* ) = {
  update_point_a,
  update_point_b
};
int main(){
  int index1[2] = {1, 8};
  int index2[2][3] = {{1,3,2}, {8, 6, 7}};
  int i, j, k;
  for( i = 0; i < 2; i++){
    for(j = 0; j < 4; j++){
      k = j % 2;
      func_tbl[k](index1[i], index2[k]);
    }
  }
  return 0;
}
980969:04/10/30 01:34:26
>>977
>>978
>>979
はまったく理解できない。しこしこif文書きます。
981デフォルトの名無しさん:04/10/30 01:57:43
>そっちのほうがわかりやすい気がするが、if文がまだまだあるので
>できるだけすっきりしたい。

ここまで言っといてそれはないだろ
982969:04/10/30 02:09:08
>>981
すっきりできるように考えてたら、まったく進まない。
if文ずらーと書けば時間かかるけど、単純作業だし。
でも見せなきゃなんないからあほみたいな書き方したくない。
983デフォルトの名無しさん
int data[8][8], point[8][8];

#define GET_PTR(a, x, y) ( &(a)[(x)][(y)] )
#define PDATA(x, y) GET_PTR(data, x, y)
#define PPOINT(x, y) GET_PTR(point, x, y)
#define UPDATE( a ) \
  { if( *((a)[0]) && *((a)[0]) == *((a)[1]) ){ *((a)[2]) += 20; } }

int *A[][3] = {
  { PDATA(1, 1), PDATA(1, 3), PPOINT(1, 2)},
  { PDATA(1, 8), PDATA(1, 6), PPOINT(1, 7)},
  { PDATA(1, 1), PDATA(3, 1), PPOINT(2, 1)},
  { PDATA(8, 1), PDATA(6, 1), PPOINT(7, 1)},
  { PDATA(8, 1), PDATA(8, 3), PPOINT(8, 2)},
  { PDATA(8, 8), PDATA(8, 6), PPOINT(8, 7)},
  { PDATA(1, 8), PDATA(3, 8), PPOINT(2, 8)},
  { PDATA(8, 8), PDATA(6, 8), PPOINT(7, 8)}
};

void foo(){
  int i;
  for( i = 0; i < sizeof(A) / sizeof(A[0]); i++){
    UPDATE( A[i] );
  }
}