• ベストアンサー

教えてください

seven_starの回答

回答No.2

すいません。少し荒いですが参考にしてみてはどうでしょうか。 そのままコピーしてもらってもちゃんと動きます。 int wari(int a,int b){ int g=0; while(a>=b){ a=a-b; g++; } return g; } void ans(int k){ int j=k; printf("答えは%dです\n",j); } #include<stdio.h> void main() { int k,j; int c; printf("k÷j= としてkとjの値を入力してください\n"); printf("k=");scanf("%d",&k); printf("j=");scanf("%d",&j); c=wari(k,j); ans(c); } このようにvoidをつかい結果表示関数と割り算の関数を別に作るのはむりかと・・・ すいません こんな答えしかできません。

関連するQ&A

  • 加減剰余を筆算で表示したい

    加減剰余を筆算の形式で表示するプログラムを作りたいんです。でも、割り算と掛け算は中途計算も表示しなくてはならなくてどうやっていいのかわかりません。関数を使用して作りたいんですが・・・ご助力お願いいただければと思います。

  • 滝のように流れる・・・・・

    学校の宿題なので、先生に見つかったら怒られそうですが・・・。みつかりませんように☆ このプログラムを実行したら滝のように流れます(汗;)どこを直せばよいのでしょうか。  キーボードから入力した値(整数)を5つのランクのうちのどのランクに属するかを 表示するプログラム。ランクは1=0~20,2=21~60,3=61~70,4=71~80,5=81~100とする。 #include <stdio.h> void main(void) { int x; scanf("%d",&x); printf("Data;%d",x); while(x>=0 || x<=100){ if(0<=x && 20>=x)printf("%dはランク1です。",x); else if(21<=x && 60>=x)printf("%dはランク2です。",x); else if(61<=x && 70>=x)printf("%dはランク3です。",x); else if(71<=x && 80>=x)printf("%dはランク4です。",x); else if(81<=x && 100>=x)printf("%dはランク5です。",x); else if break; } } また、もっと簡潔に書けるプログラムがあったら教えてください。よろしくお願いします。

  • 課題がうまくいかない

    課題で &lt; と入力されたら < と表示し、 &gt; と入力されたら > と表示し、…といった感じで5種類の入力に対応して表示させるプログラムを書いたのですが、うまく思った通りの結果がでません。我ながら汚いプログラムだと思いますが、自分が考えたプログラムは以下のようです。 #include <stdio.h> int main(void){ char c[50]; int i=0; while(c[i]!=-1){ scanf("%c",&c[i]); i=i+1; } if((c[0]=='&')&&(c[1]=='l')&&(c[2]=='t')&&(c[3]==';')){ printf("<"); } else if((c[0]=='&')&&(c[1]=='g')&&(c[2]=='t')&&(c[3]==';')){ printf(">"); } else if((c[0]=='&')&&(c[1]=='a')&&(c[2]=='m')&&(c[3]=='p')&&(c[4]==';')){ printf("&"); } else if((c[0]=='&')&&(c[1]=='q')&&(c[2]=='u')&&(c[3]=='o')&&(c[4]=='t')&&(c[5]==';')){ printf("\""); } else if((c[0]=='&')&&(c[1]=='a')&&(c[2]=='p')&&(c[3]=='o')&&(c[4]=='s')&&(c[5]==';')){ printf("'"); } return(0); } こんな感じです。 何卒アドバイスお願いします。

  • 続・C言語について

    http://okwave.jp/qa5241461.html 先ほど、このような質問をして、いただいた回答を参考に下記のようなプログラムを作ってみたのですが、実行結果は、数値の入力と最後の"\n"しか反映していません…。 このプログラムのどの部分がマズイのか、お教えいただけたら幸いです。 よろしくお願いいたします。 #include <stdio.h> void draw_even(int, int); void draw_odd(int, int); int main(void) { int kazu; int gyou=1; printf("数字2~9を入力してください:"); scanf("%d", &kazu); while(kazu < 2 || kazu >9) { printf("※入力エラー!! 2~9を入力してください:"); scanf("%d", &kazu); } while(gyou <= kazu) { if(kazu = 2*(kazu/2)) { gyou = kazu+1; draw_even(kazu, gyou); } else { gyou = kazu; draw_odd(kazu, gyou); } gyou++; } } void draw_even(int kazu, int gyou) { int keta = 1; if(kazu!=(gyou+1)/2) { while(keta==kazu && keta==(gyou+1)/2 && keta==gyou-(kazu-1)) { printf("*"); } } else { for(keta=1; keta<=gyou; keta++) { if(keta!=(gyou+1)/2) { printf("*"); } else { printf(" "); } } } printf("\n"); } void draw_odd(int kazu, int gyou) { int keta = 1; if(kazu!=(gyou+1)/2) { while(keta==kazu && keta==(gyou+1)/2 && keta==gyou-(kazu-1)) { printf("*"); } } else { for(keta=1; keta<=gyou; keta++) { printf("*"); } } printf("\n"); }

  • C言語 座標軸の設定

    こんにちわ。私は最近プログラミングを学び始めた女学生です。 環境はVisual Studio 2008で、C++を使っています。 今回、課題として座標軸を-と|でつくり、その上にxの3乗-9xのグラフをあらわすというものが出ました。 おおよそわかったのですが、なぜかx軸を形成する軸(-)がこのプログラムだとひとつおきに表示されてしまい、軸として成立しません。なぜなのでしょうか。熟練者の方々、ご指導ご鞭撻のほど、よろしくお願いいたします。 #include<stdio.h> main(void){ int a[40][60],x,y; for(x=0;x<40;x++){ for(y=0;y<60;y++){ a[x][y]=0; if (x==20){ printf ("-");} else if (y==30) { printf ("|"); } if(y==(x-20)*(x-20)*(x-20)-9*(x-20)+30){ printf("*"); } else {printf(" "); } } printf("\n"); } }

  • C言語の問題がわからないです。

    C言語のプログラムで、列数を自分で決めて、 (例)3列         ●(この行を最後として)   □● ●□● 上記のプログラムを作りたいのですが、 上手くいきません。途中まで作ったのですが、なかなか思うようにいかないです。どうすれば上記のようになりますでしょうか? #include <stdio.h> void disp(int x, int y); main() { int i,n; printf("表示する列:"); scanf("%d",&n); disp(3,3); for(i=1;i<=n;i++){ if(i%2==0){ disp(n-i,4); disp(i,2); } else{ disp(n-i,4); disp(i,1); } disp(1,3); } } void disp(int x, int y) { int i; for(i=0;i<x;i++){ if(y==1){ printf("●"); } else if(y==2){ printf("□"); } else if(y==3){ printf("\n"); } else{ printf("\0"); } } }

  • サブ関数、メイン関数

    C言語の質問です! ランダムに九九の計算を出題して、キーボードから答えを入力し、正解かどうかを判定するプログラムをつくりたいです。出題の部分をサブ関数、判定の部分をメイン関数として作成する場合、どのようなプログラムの書き方になるのか、教えてください! #include<stdio.h> #include<stdlib.h> #include<process.h> void kakezan(void); void answer(void); void hanrei(void); int a,b,c; int main() { printf("やめるときは、100と入力してください。\n");   while(1){ kakezan(); answer(); hantei(); } return 0; } void kakezan(void) { a=rand() %10; b=rand() %10; printf("%d×%d=",a,b); } void answer(void) { scanf("%d",&c); if(c==100) exit(0); } void hantei(void) { if(c==a*b) printf(">>正解\n"); else printf(">>不正解\n"); printf("\n"); return; } 一応考えてみたのですが、 ちゃんと、判定→メイン  出題→サブ関数になっているのかなとおもって・・・   このプログラムであっているのでしょうか??

  • プログラミングCの質問です

    現在10×10の市松模様を表示させるというプログラムを作成しています。 #define文、IF文、for文の使用、printfを使って■と□を表示させることが条件です。 間違っているところの指摘をお願いします。 #include <stdio.h> #define N 10 int main(void) { for( i=1 ; i<=N ; ++i ) { for( j=1 ; j<=N ; ++j ) } if( (i+j) % 2 ){ printf("■"); }else printf("□"); } printf("\n"); i++; } return 0; }

  • プログラムの添削

    以下のような数当てゲームを作りました.なるべくうまいプログラムを書けるようになりたいのですが,どのような改善点がありますか?よろしくお願いします. /*数当てゲームを作りなさい.*/ #include<stdio.h> void maegaki(void); /*このように関数を定義しまくることに意味はあるのか?main関数はすっきりするけど.*/ void in_check_out(int i); int main(void) { int i; int j; maegaki(); for(j=0;j<10;j++) { scanf("%d",&i); in_check_out(i); if(!(i-1)) return 0; printf("残り%d回です.\n",9-j); } return 0; } void maegaki(void) { printf("数当てゲームをはじめます.\nぼくの好きな整数を当ててください.\nチャンスは10回です.\nヒントはボゾン\n"); } void in_check_out(int i) { if(!(i-1)) { printf("正解!答えは1です.\n"); } else { printf("残念!\n"); if(i>1) printf("%dより小さいです.\n",i); else printf("%dより大きいです.\n",i); } }

  • エラーメッセージ(無効な間接参照)

    こんにちは。 早速ですが質問させていただきます。 (このプログラムの概要は省略させていただきます。) 下記プログラムなのですが、 #include <stdio.h> int i=0,j=0,count=0; int data[3][25]={ +1,-1,-1,-1,+1, //N +1,+1,-1,-1,+1, +1,-1,+1,-1,+1, +1,-1,-1,+1,+1, +1,-1,-1,-1,+1, -1,-1,+1,-1,-1, //A -1,+1,-1,+1,-1, -1,+1,+1,+1,-1, +1,-1,-1,-1,+1, +1,-1,-1,-1,+1, +1,+1,+1,+1,+1, //J -1,-1,+1,-1,-1, +1,-1,+1,-1,-1, +1,-1,+1,-1,-1, -1,+1,+1,-1,-1 }; int joint_data[3][25]; void out(void); void ketugou(void); void out(){ while(i<3){ while(j<25){ if(data[i][j] > 0) printf("●"); else printf("○"); j++; if((count+1) % 5 == 0) printf("\n"); count++; } printf("\n\n"); j=0; i++; } } void ketugou(){ int i1,j1,k1; for(i1=0;i1<3;i1++){ //結合係数の初期化 for(j1=0;j1<25;j1++){ for(k1=0;k1<25;k1++) joint_data[i1][j1][k1]=0; //このあたりでエラーメッセージが表示される } } /* for(i1=0;i1<3;i1++){ //結合係数の計算 for(j1=0;j1<25;j1++){ for(k1=j1+1;k1<25;k1++){ joint_data[i1][j1][k1]+=data[i1][j1]*data[i1][k1]; joint_data[i1][k1][j1]=joint_data[i1][j1][k1]; printf("joint_data[%d][%d][%d]=%d\n",i1,j1,k1,joint_data[i1][k1][j1]); } } }*/ printf("結合係数の計算を終了しました。\n"); } main(){ out(); ketugou(); return 0; } このプログラムを実行すると エラー 無効な間接参照(関数ketugou)と表示されます。 いったい何が問題あるのかが分かりません。 一応、ネットで検索をしてはみましたがポインタがなんたらかんたらと言うようなサイトしか見つかりませんでした。 ちなみにコメントで囲ったプログラムも同じメッセージが表示されでしまいます。 どなたか分かりますでしょうかよろしくお願いします。