• 締切済み

覆面算 C(2)

このプログラミングの何が違うんでしょうか? どなたか教えてください。 #include <stdio.h> int main(void){ int D,A,Y,R,E,M,Z,U,I; for(D=1; D<10; D++){ for(A=0; A<10; A++){ if(A!=D){ for(Y=0; Y<10; Y++){ if(Y!=D && Y!=R && Y!=E && Y!=A && Y!=M){ for(I=1; I<10; I++){ if(I!=D && I!=A && I!=Y){ for(Z=0; Z<10; Z++){ if(Z!=D && Z!=A && Z!=Y && Z!=R && Z!=E && Z!=M && Z!=U && Z!=I){ if((D*100+A*10+Y)+D*10000+R*1000+E*100+A*10+M == I*10000+Z*1000+U*100+M*10+I){ printf("%d%d%d\n",D,A,Y); printf("%d%d%d\n",D,R,E,A,M); printf("-------\n"); printf("%d%d%d\n",I,Z,U,M,I); printf("-------\n"); break; } } } } } } } } } } return 0; }

みんなの回答

noname#88772
noname#88772
回答No.2

 こんにちは。  No.1さんに加えて最低でも以下の補足要求願います。  ・必要とする結果を得る為にどのような処理の流れで行っているか書いてください  ・各処理についてのコメントを入れてください  初心者は質問のようなコメント無しソースを出されている方が多いですが、 現場では、プログラムの設計書を出せとか、ソースを叩き返されます。  よろしくお願いします。

asaki2008
質問者

お礼

何が聞きたいのかわからないと回答の仕様がないですよね。 自分で頑張ったとこ解決しました。 回答していただきありがとうございました。

noname#77845
noname#77845
回答No.1

このプログラムを実行したらどうなって、本当はどうなって欲しかったのかを書かないと回答は付きません。 補足してください。

asaki2008
質問者

お礼

書くスペースがなかったものですみません。 自分で色々試したところ解決しました。 回答くださってありがとうございます。

関連するQ&A

  • 覆面算 C

    学校で覆面算のプログラミングについてならったので自分でもなるべく解の少ないもの作ろうと思っています。 それで DAY + DREAM IZUMI というのを作りたいのですが、 授業でならったものは、 #include <stdio.h> int main(void){ int O,N,E,T,W; for(O=1; O<10; O++){ for(N=0; N<10; N++){ if(N!=O){ for(E=0; E<10; E++){ if(E!=O && E!=N){ for(T=1; T<10; T++){ if(T!=O && T!=N && T!=E){ for(W=0; W<10; W++){ if(W!=O && W!=N && W!=T && W!=E){ if((O*100+N*10+E)*2 == T*100+W*10+O){ printf("%d%d%d\n",O,N,E); printf("%d%d%d\n",O,N,E); printf("-------\n"); printf("%d%d%d\n",T,W,O); printf("-------\n"); break; } } } } } } } } } } return 0; } こんな感じです。これからどう変えればいいのでしょうか?

  • c言語 プログラミング

    以下のプログラムで分からないところがあります。 数式をxpyの形式で入力して、(x,y:整数、p:x,-,*,/のいずれかの演算記号) 答えを表示するというプログラムなのですが、 5行目と9行目にある”-'0'”の意味が分からないので教えてください。 01: int x=0,y=0,z,i;char a[30],p; 02: printf("式を入力してください。:);gets(a); 03: for(i=0;a[i];i++) 04:  if('0'<=a[i] && a[i]<='9') 05:   x=10*x+a[i]-'0'; 06:  else{p=a[i]-'0';break;} 07: for(i++;a[i];i++) 08:  if('0'<=a[i] && a[i]<='9') 09:   y=10*y+a[i]-'0'; 010: switch(p){ 11:  case '+':z=x+y;break; 12:  case '-':z=x+y;break; 13:  case '*':z=x*y;break; 14:  case '/':z=x/y;break; 15:  default:puts("入力エラーです。");return 0; 16: } 17: printf("%d%c%d=%d\n",x,p,y,z); よろしくお願いします。(読みにくかったらメモ帳などにコピペしてください)

  • c言語

    c言語で写真の課題を出されたのですが自分のプログラムでは上手くいきません。どこが間違っているのか教えて欲しいです。 自分のプログラム #include<stdio.h> #include<math.h> int main(){ int i,j; double c,d,x,y,z; for(i=0;i<=360;i++){ c=10*cos(i*M_PI/180); d=10*sin(i*M_PI/180); if(c>=0 && d>=0){ for(j=0;j<=1000;j++){ x=0.001*j; y =x*d/c; z=1-x*x-(sqrt(x)+y)*(sqrt(x)+y); if(z<=0.0){break;} } } if(c<=0 && d>=0){ for(j=0;j<=1000;j++){ x=-0.001*j; y=x*d/c; z=1-x*x-(sqrt(-x)+y)*(sqrt(-x)+y); if(z<=0.0){break;} } } if(c<=0 && d<=0){ for(j=0;j<=1000;j++){ x=-0.001*j; y=x*d/c; z=1-x*x-(sqrt(-x)+y)*(sqrt(-x)+y); if(z<=0.0){break;} } } if(c>=0 && d<=0){ for(j=0;j<=1000;j++){ x=0.001*j; y=x*d/c; z=1-x*x-(sqrt(x)+y)*(sqrt(x)+y); if(z<=0.0){break;} } } printf("x=%lf y=%lf z=%lf\n",x,y,z); } return(0); }

  • C言語 ツェラーの公式を使った曜日の計算

    ツェラーの公式を使い、年、月、日にちから曜日を表示するプログラムを作りました。 #include<stdio.h> main() { int y,m,d,x,z; printf("年、月、日にちの順に入力してください→"); scanf("%d%d%d",&y,&m,&d); if(m<2){ m=m+12; y=y-1; } x=y+y/4-y/100+y/400+(13*m+8)/5+d; z=x%7; switch(z){ case 0: printf("日曜日\n"); break; case 1: printf("月曜日\n"); break; case 2: printf("火曜日\n"); break; case 3: printf("水曜日\n"); break; case 4: printf("木曜日\n"); break; case 5: printf("金曜日\n"); break; case 6: printf("土曜日\n"); break; } } これを基本に、1582年10月5日以前の入力があったとき「エラー」と表示するにはどうすればいいですか? 解答お願いします。

  • C++でグラフをリスト構造で作る

    今、『グラフのデータを読み込んで、行列形式で配列に保存するプログラム』を作りました。下記に私の作ったそのプログラムがあります。しかしこの次にこれと同じことを「リスト構造」を使って作らないといけないのですがなかなかうまくいかないです。どのように作ればいいか分かる人がいたら教えてください! #include<stdio.h> #define hairetu 5 int main(void){ int x, y, i, j, a[hairetu][hairetu]; for(i=0; i<5; i++){ for(j=0; j<5; j++){ a[i][j]=0; } } printf("0以下の数を入れると終了します\n"); while(1){ printf("1~5の数のうち、2つ数字を入力しなさい\n"); scanf("%d%d", &x, &y); if(x<=0 || y<=0){ break; } else if(x>5 || y>5){ printf("エラー\n"); return 1; } a[x-1][y-1]=1; } for(i=0; i<5; i++){ printf("\n"); for(j=0; j<5; j++){ printf("%d", a[j][i]); } } printf("\n"); return 0; }

  • C言語について プログラムが動きません

    ゲームのプログラムを作りたいものです。 今、試作の途中の段階で以下のようなプログラムを作ってみたのですが、 コアダンプが表示されてうまく起動しません。 どの点を変更すればいいのか、教えてください。 使っている言語はC言語です。 よろしくお願いいたします。 #include <stdio.h> #include <string.h> struct monster{ int type; /* タイプ */ char trick[25]; /* 技 */ char trick2[25]; /* 技2 */ int tricktype; /* 技1のタイプ */ int tricktype2; /* 技2のタイプ */ int trickeffect; /* 技1の威力 */ int trickeffect2; /* 技2の威力 */ char name[10]; /* 名前 */ int attack; /* 攻撃力 */ int diffence; /* 防御力 */ int speed; /* 素早さ */ /* 1,fire 2,water 3,nature 4,thunder 5,wind */ }; char names[5][10] = {"v", "w", "x", "y", "z"}; main(){ int s = 0; int a[3]; int i; int m; struct monster monster[5] = { { 1, "a", "b", 1, 2, 120, 80, "v", 60, 60, 60}, { 2, "a", "b", 2, 3, 120, 80, "w", 60, 60, 60}, { 3, "a", "b", 3, 4, 120, 80, "x", 60, 60, 60}, { 4, "a", "b", 4, 5, 120, 80, "y", 60, 60, 60}, { 5, "a", "b", 5, 1, 120, 80, "z", 60, 60, 60}, }; printf("好きなモンスターを3つ選んでください\n\n"); while (s < 1){ for (i = 0; i++; i<3){ printf("%d体目を選んでください。\n\n", i+1); for(m = 0; m++; m < 4) printf("%d, %s\n", m+1, monster[m].name); printf("5, %s\n\n", monster[4].name); scanf("%d", a[i]); printf("%d体目 : %s\n\n", i+1, monster[a[i]-1].name); } printf("これでよろしいですか?\n"); for(i = 0; i++; i<2) printf("%d体目 : %s ", i+1, monster[a[i]-1].name); printf("3体目 : %s\n\n", monster[a[2]-1].name); printf("1、はい 2、いいえ\n"); scanf("%d", &i); if(i=1) return s = 1; else return s = 0; } }

  • cプログラム

    #include<stdio.h> /*Calc MAX of (a,b)*/ int max(int x,int y) { if(x>y) return x; else return y; } /*Calc n!*/ void fact(int n) { int i,ans; ans=1; for(i=n;i>=1;i--){ ans*=i; } printf("ans=%d\n",ans); } /*END*/ void end() { printf("Thanks\n"); exit(0); } /*Main*/ int main() { int key; int a,b,saidai; int n; while(1){ puts("\n=====Main MENU ====="); puts("1.......max(a,b)"); puts("2.......n!"); puts("9.......END\n"); printf("Input No(1,2,9)=?"); scanf("%d",&key); switch(key){ case 1: printf("Inputs:a,b?"); scanf("%d,%d",&a,&b); saidai=max(a,b); //Call max(a,b) printf("max(%d,%d)=%d\n",a,b,saidai); break; case 2: printf("Input:n?"); scanf("%d",&n); fact(n); break; case 9: end(); break; default: printf("!!!!!Miss Input_No!!!!!\n"); break; } } のプログラムなのですが、1の処理を行った場合max(a,b)の値が正しく表示されません どこを直せばいいでしょうか? return(0);

  • C言語 ループ 詳細ver.

    本当にこんな稚拙なプログラムで申し訳ないのですが、以下のプログラムでr==1となってwhile以下をやりなおすときに、なぜかfor以下に入りません・・・ どなたか、アドバイスくれると助かります・・・ while(r==1){ z=spaces(); /*ここは~をカウントするものだと考えてください*/ y=rnd(&min,&z); printf("%d\n%d\n",z,y); for(i=0;i<hl;i++){ for(j=0;j<vl;j++){ if(A[i][j]=='~'){ /*二次元配列の中にある~である場合xをカウントアップしていきます*/ x++; if(x==y){ /*動作は省きます*/ r=occhl(&i,&b,&cp); if(r==1){ printf("%d\n",r); } } } } } }

  • C言語の問題です

    二つの仮分数の加算を行うプログラミングである。 x/w+z/y=(xy+wz)/(wy) 1. w,x,y,zは正の整数である。 2.上式のように計算した後、約分して結果を求める。約分には最大公約数を使う。最大公約数の計算は関数gcd(a,b)で以下のアルゴリズム(ユークリッド互除法)で行う。 (1) a,bの大きいほうをp,小さいほうをqとする。 (2) pをqで割った余りをrとする。r=0ならqが解。 r≠0なら、q=r、r=qとして(2)に戻る。 3.計算結果が仮分数ならば、帯分数にして出力する。 次のプログラムの空欄((1)から(3):を埋め、完成させて下さい。 #include <stdio.h> int gcd(int a, int b) { int p,q,r; if(a<b) { q=a; p=b; }else{ q=b; p=a; } while(q>0){ (1); p=q; q=r; } (2); } main(){ int g,k,m,n,p,q,w,x,y,z; printf("x/w + z/yの数値を入力して下さい(x w z y)"); scanf("%d %d %d %d, &x,&w,&z,&y"); m= w*y; n=x*y+w*z; p=m; q=n; g=gcd(p,q); m=m/g; n=n/g; if((3)) { k = n/m; n = n - k*m; if(n==0) printf("%d\n",k); else printf("%d %d/%d\n",k,n,m); } else printf("%d/%d\n",n,m); } 全く見当がつきません。どなたかお助け下さい。回答を教えてください。

  • C言語で電卓を作成する。

    C言語を用いて三項まで計算できる電卓を作りたいのですが、どうも上手くいきません。 四則演算(+、-、×、÷)の優先順位を用いたプログラミング方法が分かりません。 以下に自分で作成したソースを添付します。 このソースに修正や追加して3項までの四則演算できるプログラミングを教えていただけますか? 宜しくお願いします。 #include <stdio.h> int main(void) { int answer; /*答え*/ int x,y,z; /*x=第一項,y=第二項,第三項*/ char op1,op2; /*演算子1、演算子2*/ while(1){ printf("式を入力してください\n"); printf("式:"); scanf("%d %c %d %c %d" ,&x,&op1,&y,&op2,&z); if((op1=='+'|'-'|'*'|'/') && (op2=='+'|'-'|'*'|'/')){ switch(op2){ case '+': answer=y+z; break; case '-': answer=y-z; break; case '*': answer=y*z; break; case '/': if(z==0){ printf("ERROR\n"); return 0; } answer=y/z; break; default: printf("ERROR\n"); return 0; } switch(op1){ case '+': answer=x+answer; break; case '-': answer=x-answer; break; case '*': answer=x*answer; break; case '/': if(y==0){ printf("ERROR\n"); return 0; } answer=x/answer; break; default: printf("ERROR\n"); return 0; } printf("答え:%d\n",answer); } else { switch(op1){ case '+': answer=x+y; break; case '-': answer=x-y; break; case '*': answer=x*y; break; case '/': if(y==0){ printf("ERROR\n"); return 0; } answer=x/y; break; default: printf("ERROR\n"); return 0; } printf("答え:%d\n",answer); } } } 左辺に×、÷が来ても優先的に計算されません。

専門家に質問してみよう