• ベストアンサー

プログラミングについて質問です

プログラミングについて質問です 下のコードでaveに1.5を代入するにはどのようにコードを修正すればいいですか? main() { int a = 1, b = 2; double ave; ave = (a+b) / 2; }

質問者が選んだベストアンサー

  • ベストアンサー
  • ok-kaneto
  • ベストアンサー率39% (1798/4531)
回答No.2

aもbもintだから、 >(a+b) これも結果はint。 >(a+b) / 2 int同士の演算だから、結果もintになる。 割る方か割られる方の数を実数型(double)にすればOK。 (a+b)をdoubleにキャストするも良し、割る数を実数にしても良し。

abbbbbbbb
質問者

補足

すみません初心者なもので 何行目をどう直すのかをお手数ですが詳しく教えてもらえるとありがたいです

その他の回答 (3)

  • iori16
  • ベストアンサー率33% (1/3)
回答No.4

ANo.2の方が言っている「(a+b)をdoubleにキャストする」は main() { int a = 1, b = 2; double ave; ave = (double)(a+b) / 2; } にしろということで、「割る数を実数」にするということは main() { int a = 1, b = 2; double ave; ave = (a+b) / 2.0; } だということです。C言語の教科書はないんですか?あれば載ってるはずですが。

  • alara
  • ベストアンサー率66% (2/3)
回答No.3

//aとbをdoubleで宣言するケース main(){ double a=1, b=2; double ave; ave=(a+b)/2; } //宣言文を変えずに割る数を2.0にするケース main(){ int a=1, b=2; double ave; ave=(a+b)/2.0; } //宣言文を変えずに割られる数をdoubleにするケース main(){ int a=1, b=2; double ave; ave=(double)(a+b)/2; } すみません、試してないけど。これで多分いけるんじゃないかな……。

  • DIooggooID
  • ベストアンサー率27% (1730/6405)
回答No.1

ave = (a+b) / 2; というコードがありますが、 これを全く無視して、 ave に 1.5 を代入してしまう、 ということですか?

abbbbbbbb
質問者

補足

すみません説明不足でした ave = (a+b) / 2;は無視しないでaveに1.5を代入するということです

関連するQ&A

  • プログラミングについて質問があります。

    プログラミングについて質問があります。 次のコードを実行すると変数midに代入される整数値はいくらですか? #include <stdio.h> #define A 10 #define B 20 #define WA A+B main() { int mid; mid =WA / 2; }

  • javaでのプログラミング

    javaで平均と分散を求めるプログラムを作っているのですが、 分散の出力がうまくいきません。(出力が0になってしまいます) プログラミングとしておかしいところがあれば、教えていただけませんでしょうか 以下プログラムソースです。 public class test{ public static void main(String[] args){ int i,rand; double ave=0 double bun=0 double sum1=0 double sum2=0; int [] data = new int[10]; rand=(int)(Math.random()*100+0.5); for(i=0;i<10;i++){ data[i]=rand; } for(i=0;i<10;i++){ sum1+=data[i]; sum2+=data[i]*data[i]; } ave=sum1/10; bun=(sum2/10) - (ave*ave); System.out.println(ave); System.out.println(bun); } }

    • ベストアンサー
    • Java
  • プログラミングで質問があります。

    プログラミングで質問があります。 実数値を入力して、その平均を出すプログラミングを作ったのですが、うまく行きません。 どこが間違っているのか教えてほしいです #include <stdio.h> int main (void) { float a=1,sum=0; int b=0,i; while(a!=0) { printf("整数値を一つ入力してください。"); scanf("%f",&a); if(a!=0) { b=b+1; } for(i=0;i<=b;i=i++) { sum=sum+a; } } printf("平均値は%fです\n",sum/b); } 実行して、10、10、10と入力すると、90になってしまいます(..;)

  • プログラミングについて

    目標 1.偏差値が一番良い学生の番号,科目A,B,C の得点,平均点,偏差値の表示. 2.合計点が181 点~210 点,211 点~240 点,241 点~270 点,271 点~300点 の学生の人数を数え,その度数分布の表示。 手順 1.クラスの標準偏差を求め,各学生の偏差値を求めよ. その結果を画面に出力する。 2.成績優秀者(偏差値が一番良い学生)を見つけよ. 一番が複数いる場合は全員表示せよ. 3.度数分布と2.ををResults.txt ファイルに出力せよ。 要素数4 のint 型配列を作成して0 で初期化し,一人ひとり数える. 最後に度数分布を作れ(度数分布を作る際にはif文を使わない). クラスのデータは与えられており、50人の2教科分の点数が与えられています。 これは構造配列を使い、Studentsに格納。もう1教科分の点数を整数の一様乱数により格納。 合計50人×3教科のテストデータの集計をするプログラムです。 というプログラミングを作りたいです。 途中まで作りましたが長くなりすぎてわからなくなりました。 どなたか教えてくださいお願いします。 #include <stdio.h> #include <stdlib.h> #include <math.h> #define SIZE 50 struct students{ int No; int A; int B; int C; int Sum; double Avee; double hensa; }; double Average(int a){ double b; b=(double)a/3.0; return b; } double Hensachi(double a,double b,double c){ double d; d=(double)50+10*(a-b)/c; return d; } int main(void){ struct students Std[SIZE]; srand(1000); int i; double Ave,Sum=0,H,stand; FILE *file=fopen("Data.txt","r"); for(i=0;i<SIZE;i++){ fscanf(file,"%d",&Std[i].No); fscanf(file,"%d",&Std[i].A); fscanf(file,"%d",&Std[i].B); Std[i].C=(int)(rand()/(RAND_MAX +1.0)*31)+70; Std[i].Sum=Std[i].A+Std[i].B+Std[i].C; Std[i].Avee=Average(Std[i].Sum); Sum+=Std[i].Avee; } fclose(file); Ave=(double)Sum/(SIZE); for(i=0;i<SIZE;i++){ H+=(double)pow(Std[i].Avee-Ave,2); } stand=sqrt(H/50); for(i=0;i<SIZE;i++){ Std[i].hensa=Hensachi(Std[i].Avee,Ave, stand); printf("%4d,%3.1lf,%3.1lf\n",Std[i].Sum,Std[i].Avee,Std[i].hensa); } return 0; } 自分が作ったのはここまででです。

  • プログラミングについて教えてほしいんですが・・・

    プログラミングについて教えてほしいんですが・・・ プログラミングで四則演算プログラムをやっているのですが余りの求め方がわかりません。足し算の求め方は /*lesson2.c*/ #include<stdio.h> int add(int,int); int main(){ int a,b,c; printf("a="); scanf("%d",&a); printf("b="); scanf("%d",&b); c=add(a,b); printf("a+b=%d\n",c); } int add(int x, int y){ return x+y; } というやり方で求めることができたのですが、余りは上のプログラムのどこを変えたらいいのでしょうか? 誰かわかる人がいたら教えてください。お願いします。

  • プログラミング 構造体に関する質問です

    4人を個別で平均点を求めるプログラミングを作りたいのですが外部関数にする方法がいまいちわかりません。あとこのプログラムもなぜかエラーがでてしまいます。どなたかご教授お願いします #include<stdio.h> typedef struct{ char name[4]; int point[4]; }tokutenn; int main(void) { int x, y; int sum[5] = {0}; double ave[5] = {0.0}; tokutenn sd[5] = {{"kou", {55, 44, 33,34}}, {"mei", {34, 74, 67,56}}, {"sai", {72, 36, 68,35}}, {"kai",{34, 82, 73,56}}, for(x = 0; x < 4; x++){ for(y = 0; y < 3; y++){ sum[x] += sd[x].point[y]; } } for(y = 0; y < 4; y++){ ave[y] = sum[y] / 3.0; } for(y = 0; y < 4; y++){ printf( "%sの平均は%.10f点\n",&sd[y].name[0], ave[y]); } return 0; }

  • プログラミング

    プログラミング初心者なのですが、次のソースについて説明お願いします。 #include<stdio.h> int main(void) { int a[3]; int i; for(i = 0; i <= 2; i++) { a[i] = i + 1; printf("a[%d] = %d\n", i a[i]); } return 0; } for文でiに0を代入して繰り返す条件を仮定したあとの a[i] = i + 1; とprintfの中の仕組みがよくわかりません・・・。 お願いします<(_ _)>

  • プログラミングの質問です。学校でLinuxを使ってプログラミングを授業

    プログラミングの質問です。学校でLinuxを使ってプログラミングを授業中にかじったのですが、 Windowsでのコンパイルの仕方がわからなくて困っています。 ちなみに下は、私がつくったものです #include <stdio.h> int main(void) { printf("あほじゃないの?"); return(0); }

  • プログラミング 関数について教えて下さい。

    プログラミングについての質問です。 関数を使った以下のプログラムを作成し、実行してみたのですが、上手くいきません。 どこかおかしいのでしょうか? 教えていただけると幸いです。ご回答お待ちしております。 #include <stdio.h> double add (double x,double y); int main(void) { double a,b,c; printf("double型の数を入力して下さい。\n"); scanf("%f\n",&a); printf("もうひとつdouble型の数を入力してください\n"); scanf("%f\n",&b); c=add(a,b); printf("入力された2数の和は%fです。\n",c); return 0; } double add(double x,double y) { double z; z=x+y; return z; }

  • C++に関する質問です

    #include <stdio.h> double calave (double [ ] ); double calmax (double [ ] ); main () { int i; double average,maximum; double a[5]; for ( i=0;i<=4;i++) { printf ("Input data %d\n", i ); scanf ("%lf",&a [i] ); } average = calave (a); maximum = calmax (a); printf ("Average = %lf\n", average); printf (" Maximum = %lf\n", maximum); } double calave (double x [5]) { int i; double ave; ave = 0; for (i=0; i<=4; i++) { ave = ave + x[i]; } ave = ave /5.0; return (ave); } double calmax (double x[5]) { int i; double max; max = x[0]; for ( i=0; i<=4; i++) { if ( max >= x [i] ){ max = max; }else{ max = x[i]; } } return (max); } 上のプログラムでは,関数calaveに入力している配列変数はa[ ]だが,関数calave内で使用している配列変数はx[ ]であり,名前が違う変数である。これが,プログラム上は問題ない理由を教えてください。 よろしくお願いします。