ダディクールがC/C++の宿題を片づけます 32代目
934 :
デフォルトの名無しさん:04/10/28 22:43:20
936 :
917:04/10/28 22:58:49
>>927 展開しておけとはどのように書けばようのでしょうか?
>>932 関数はまだやっていません。申し訳ありません。
//*
A
/*/
B
//*/
最初の/だけでABの選択可
>>928 /*という連続したものを探し当てたら、*/を探し当てるまでコメントとして扱う。
以上
>>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);
}
と全て書く。
>>939 sumが初期化されてないし答えが間違ってるぞ
- double sum;
+ double sum = 0;
- printf("%lf\n", sum);
+ printf("%lf\n", sum * h /3.0);
>>940 もうどうでもいいやん
適当に書いたんだよ
>>943 ヒントものだね。
ないよりマシってやつだ。
という事にしたいのですね
948 :
デフォルトの名無しさん:04/10/29 01:12:52
/\___/ヽ
/'''''' '''''':::::::\
. |(●), 、(●)、.:| + 終わり?
| ,,ノ(、_, )ヽ、,, .::::|.
. | `-=ニ=- ' .:::::::| +
\ `ニニ´ .:::::/ +
,,.....イ.ヽヽ、ニ__ ーーノ゙-、
: | '; \_____ ノ.| ヽ i
| \/゙(__)\,| i |
> ヽ. ハ | ||.
>>948 ざんねんだったな。
エシュロンのエサになりな!
950 :
872 :04/10/29 03:14:26
>>873さん、ありがとうございます!
レスが遅くなってすみませんでした。
僕もプログラムを組んでみていたのですが、
再帰のところの条件がうまくできなくて、∞ループに
なったりしていたんですが、おかげさまで解決できました!
>>879 おもしろいですね、僕も考えてみます。
最初から最後までどうしようもないスレだったな
953 :
デフォルトの名無しさん:04/10/29 12:42:38
次スレでも常識人さんが降臨しますように・・・
>>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;
}
配列は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;
}
>>957 いいかげんにしろよ
話を聞く気が無いなら去れ
>>957 どんな症状かも言わないとは。人に尋ねる態度じゃないな。
大変申し訳ありません。m(_ _)m
956様のおっしゃることを再度考え直しましたところ、
解決することが出来ました。
ありがとうございました。
>m(_ _)m
なにこれ
最後までふざけた奴だな
>>961 ふざけてないんていませんよ!
氏んでください!
#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
いや良いと思うぞ
細かいこというと 虎->寅 竜->辰 なわけだが
>>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分使ってすっきりしたいんですけど、どうやるんですか?
970 :
969:04/10/30 00:35:46
if文じゃなくてfor文です
>>968 敢えて言うが、「風潮」は「文化」ではないね。
「風潮がある」ことも「文化」ではないし。
細かいことを指摘すること自体は賛同するが、
自分が普段使わないような言い回しを無理して使うことはないよ。
>>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;
}
って、展開してみてわかった。オセロの評価関数か。
976 :
969:04/10/30 01:02:03
>>974 正解です。
そっちのほうがわかりやすい気がするが、if文がまだまだあるので
できるだけすっきりしたい。
点対称・線対称で1/4に正規化したデータ作れ
#define hoge(x,y,z) ( (z) += (( (x) != 0 && (x) == (y) ) ? 20 : 0));
こんなマクロでも
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;
}
980 :
969:04/10/30 01:34:26
>そっちのほうがわかりやすい気がするが、if文がまだまだあるので
>できるだけすっきりしたい。
ここまで言っといてそれはないだろ
982 :
969:04/10/30 02:09:08
>>981 すっきりできるように考えてたら、まったく進まない。
if文ずらーと書けば時間かかるけど、単純作業だし。
でも見せなきゃなんないからあほみたいな書き方したくない。
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] );
}
}