• 締切済み

平均、最大、最小値の求め

データーを20個入力して平均値、最小値、最大値を求めるという問題を解こうとしたのですが、どうも分からないので教えていただけないでしょうか? 友達と二人で取り組んでプログラムを作成したのですがエラーが出たりして成功しませんでした。 (1)算術型関数heikin、saidai、saishoに分けて作成せよ #include<stdlib.h> #include<stdio.h> #define N (20) int main(void){ double Saidai(double data[], int N){ int i; double saidai; saidai = data[0]; for (i=1; i<N; i=i+1){ if(data[i] > saidai){ saidai = data[i]; }else } double Saisho(double data[], int N){ int i; double saisho; saisho = data[0]; for (i=1; i<N; i=i+1){ if(data[i] < saisho){ saisho = data[i]; }else } double Heikin(double data[], int Ninzu){ int i; double heikin; double goukei; goukei = 0; for (i=0; i<Ninzu; i=i+1){ goukei = goukei+data[i]; } heikin = goukei / ((double)Ninzu); fprintf(stdout,"saidai=%lf\n",saidai); fprintf(stdout,"saisho=%lf\n",saisho); fprintf(stdout,"heikin=%lf\n",heikin); return(EXIT_SUCCESS); } エラー E2293 ) が必要(関数 main ) エラー E2139 宣言に ; がない(関数 main ) エラー E2134 複合文に } がない(関数 main ) 警告 W8070 関数は値を返すべき(関数 main ) (2)手続き型関数を用いて、平均値、最大値、最小値を一括に処理するプログラムを作成せよ こちらに関してはお互い手も出ませんでした。 乱文で分かりずらいと思うかも知れませんが、分かる方がいましたら教えていただけないでしょうか? よろしくお願いします。

みんなの回答

  • aigaion
  • ベストアンサー率47% (287/608)
回答No.1

C言語ですよね? 私にはC以外の新たな言語に見えます. もしこれが,C言語なら関数呼び出しを1から学び直した方が良いと思いますよ. 具体的にどこが間違っているかと言うと,関数の呼び出し方と宣言位置です. 関数の中身自体はあっていると思いますよ. あぁ,あとdataが宣言されていないうえに空っぽですね. (2)の方は算術型関数,手続き型関数の定義を教えてください. 語彙からなんとなく想像はつきますが具体的にはよくわかりません.

rive880823
質問者

お礼

返信ありがとうございました。 もう一度教科書を読み直すことにします

関連するQ&A

  • 配列 平均値と分散値

    #include <stdio.h> void mean_vari(int *s, int n, double *mean, double *variance); int main(void) { int i, n; int a[]={34, 54, 21, 80, 60, 90, 15, 24, 100}; double heikin, bunsan; mean_vari(&i,n,&heikin,&bunsan); printf("平均=%f 分散=%f\n",heikin,bunsan); return (0); } /* 合計を求める関数 */ void mean_vari(int *s, int n, double *mean, double *variance) { int i; int sum=0; /* 合計の初期化 */ double sum2=0; for (i = 0; i < n; i++) sum += s[i]; ????=sum/(double)????; for (i = 0; i < n; i++){ sum2 +=????; } ????=????; } 平均値と分散値を求めたいのですが、????の部分になりをいれていいかわかりません。 教えてください。

  • C言語を始めたばかりですが、なかなか難しいです。

    C言語を始めたばかりですが、なかなか難しいです。 下記のプログラムですが、誤りを指摘して頂けないでしょうか? /************************************************************************ 合計と平均を求める ************************************************************************/ #include <stdio.h> #define KAMOKU 3 main() { int ten[KAMOKU]={73,59,92}; /*得点*/ int goukei=0; /*合計点*/ double heikin; /*平均点*/ char shimei[20]="太郎"; /*氏名*/ char kamokuName[KAMOKU][10]={"国語","数学","英語"}; int i; /*科目数*/ /*合計点と平均点の算出*/ for(i = 0; < KAMOKU;i++) { goukei+=ten[i]; } heikin=(double)goukei / i; /*画面に表示*/ printf("氏名:%s\n",shimei); for(i = 0; < KAMOKU;i++) { printf("%-6s:%3d点\n",kamokuName[i],ten[i]); } printf("\n"); printf("%sさんの合計:%3d点 平均:%5.1f点\n",shimei,goukei,heikin); エラーメッセージは for.c: In function ‘main’: for.c:18: error: expected expression before ‘<’ token for.c:27: error: expected expression before ‘<’ token です。 どうぞ宜しくお願い致します。

  • 標準偏差・分散

    標準偏差と分散を求めるプログラムで #include <stdio.h> #include <math.h> int main(void){ int i; double data[10]; double heikin, total = 0.0, variance = 0.0, deviation = 0.0; for ( i = 0; i < 10; i++ ){ printf("%d番目の値を入力:",i + 1); scanf( "%lf",&data[i] ); total += data[i]; } heikin = total / 10.0; for(i = 0; i < 10; i++ ){ variance += ((data[i]-heikin)*(data[i] - heikin))/10.0; } deviation += sqrt(variance); printf("平均値は%f\n" , heikin ); printf("分散は%fです。\n",variance); printf("標準偏差は%fです\n",deviation); getchar(); getchar(); return(0); } という感じでいいのでしょうか? 分散と標準偏差の式はこれであっているとおもうのですが・・・・。

  • C++の配列についてなんですが

    #include <iostream> using namespace std; int main() { int i,goukei=0; int kokugo[5]; float heikin; for(i=0;i<5;i++) { cout << "出席番号" << i+1 << "番の国語の成績を入力してください\n"; cin >> kokugo[i]; goukei = goukei + kokugo[i]; } heikin = (float)goukei/5.0; cout << "平均点は" << heikin << "点です\n"; for(i=0;i<5;i++) { cout << "出席番号" << i+1 << "番の国語の成績は" << kokugo[i]; cout << "点で、平均との差は" << heikin-(float)kokugo[i] << "です\n"; } return 0; } これを基に 数学の点数も入力する 数学の平均も出力する 国語と数学の総合的な平均点も出力する ようにするにはどうすればいいんですか?

  • C++で10進数→2進数に

    C++で10進数を2進数に変換するプログラムを 順番通りに表示できるようにする っていうのを配列を使って作るんですが 下はあまり関係ないですが、こんな感じのが参考になるかなと思ったんですが、どうすればいいんですか #include <iostream> using namespace std; int main() { int i,goukei=0; int kokugo[5]; float heikin; for(i=0;i<5;i++) { cout << "出席番号" << i+1 << "番の国語の成績を入力してください\n"; cin >> kokugo[i]; goukei = goukei + kokugo[i]; } heikin = (float)goukei/5.0; cout << "平均点は" << heikin << "点です\n"; for(i=0;i<5;i++) { cout << "出席番号" << i+1 << "番の国語の成績は" << kokugo[i]; cout << "点で、平均との差は" << heikin-(float)kokugo[i] << "です\n"; } return 0; }

  • C言語(線形リスト)

    #include <stdio.h> #include <string.h> typedef struct { char name[100]; double height, weight; } HW; int main (void) { FILE *fp; int i, ninzu = 0; char name[100]; double height, weight; double hsum = 0.0; double wsum = 0.0; HW class[100]; if ((fp = fopen ("hw.dat", "r")) == NULL) { perror ("\a ファイルをオープンできません。\n"); exit (1); } else { while (fscanf (fp, "%s %lf %lf", class[ninzu].name, &(class[ninzu].height), &(class[ninzu].weight)) == 3) { ninzu++; } for (i = 0; ninzu > i; i++) { printf ("%-10s %5.1f %5.1f\n", class[i].name, class[i].height, class[i].weigh t); hsum += class[i].height; wsum += class[i].weight; } printf ("----------------------------------------\n"); printf ("平均 %5.1lf %5.1lf\n", hsum / ninzu, wsum / ninzu); fclose (fp); } return (0); } このプログラムを100人分のデータをファイルから読み込んで線形リストにするにはどのようにプログラムを改良すれば良いのでしょうか?

  • C言語について

    #include <stdlib.h > #include <stdio.h> double sum ( double data[] , int number) { double result; int a ; result = 0; for (a = 0; a < number; a+1){ result += data[a]; } return (result); } double average ( double data[] , int number) { double result; result = sum(data,number)/number; return (result); } int main ( void ) { double heikin; double data[9]; double average; int number,i; printf("数値の数を入力(1~10) = "); scanf("%d",&number); printf("データを入力 "); for( i=0;i<number;i++ ) { printf("%d個目 = ",i+1); scanf("%d",&data[i]); } heikin = average(data,number); printf("平均は%lfです\n",heikin);//文を使って平均値(heikin)を出力 return(EXIT_SUCCESS); } というプログラムがありエラーで 「35行目」で記述エラーを発見しました。 「function pointer」を付け忘れています。 と出てきます。ほかのサイト様で写真とかありえないといわれましたのでテキストで再度質問させていただきました。 よろしくお願いします。 前投稿から編集もしているので少しプログラムが違います。

  • 学校の課題で悩んでます

    #include <stdio.h> void main(){ float syushi[7],goukei,heikin; int i; goukei = 0; for( i=1; i<=7; i++ ){ printf("%dの収支は?\n",i); scanf("%f",&syushi[i-1]); goukei =goukei+syushi[i-1]; } heikin = goukei / 7.0; printf("7日分の平均収支: %f円\n",heikin); } 1週間分の合計収支が 20万円より大きかったら(ぼろ勝ち) 20万円以下で0円より大きいかったら(まあいいか) 0円なラ(意味ないな) マイナスなら(焼肉を食おう)

  • データの損失について

    はじめまして今回が初めての投稿になります、よろしくお願い致します。実はCの復習をかねて以下のようなプログラムを作ったのですが、なぜかjirouとsaburouの英語の点数が0と表示されてしまいます。tarouとshirouはきちんと表示されるのですが・・・ソフトはVisual C++6.0を使っていてコンパイルの際に「'const double ' から 'int ' に変換しました。データが失われているかもしれません。」と出ているのですがいまいち良くわかりません。もしよろしければご教授お願い致します。 #include<stdio.h> #define KAMOKU 3 main() { /*変数の宣言*/ int ten[4][3] = { {73,59,92}, {52,95.70}, {22.19,31}, {100,99,96} }; int goukei[4],i; double heikin[4]; char lank[4] = {'B','B','C','A'}; char shimei[4][10] = {"tarou","jirou","saburou","shirou"}; /*合計と平均の計算*/ for(i = 0;i < 4;i++){ goukei[i] = ten[i][0]+ten[i][1]+ten[i][2]; heikin[i] = (double)goukei[i]/KAMOKU; } /*表示*/ printf("氏名   国語 数学 英語 合計  平均 評価\n"); for(i = 0;i<4;i++){ printf("%-10s %5d %5d %5d %5d %7.1f %c\n",shimei[i],ten[i][0],ten[i][1],ten[i][2], goukei[i],heikin[i],lank[i]); } }

  • C言語のポインタのプログラムについての質問です。

    C言語のポインタについて質問です。 nこの配列データaを受け取り、それらの値をもとに、2つのデータを引数で受け取って交換する関数void swap(double *a,*b)を用いることにより最終的に降順に並べ替えて出力したのち、それらを平均(average)と標準偏差(standard deviation)を引数で受け渡す関数 void calc_ave_stddev(int n,double a[],double *ave,double*stddev)を利用して出力されるプログラムを教えてほしいです。 main関数内での書式は printf("enter n:"); scanf("%d,&n"); for(i=0;i<n;i++){ printf("enter a[%d]:",i); scanf("%lf"&a[i]); } main関数での結果の出力は、 for(i=0;i<n;i++){ printf("a[%d]=%lf\n",a[i]); } printf("ave=%lf stddev=%lf\n",ave,stddev); です。

専門家に質問してみよう