読者です 読者をやめる 読者になる 読者になる

プログラミングぜんっぜんわかんない!!

コードひたすら貼り付けるの。

個人毎の成績の合計・平均点と教科ごとの平均点を出力するプログラムを作りたい。

C言語。大学の課題。

“クラスの人数は最大30名、科目数は4、成績は0~100(整数) ⑴試験の成績はキーボードから入力。 ⑵各科目の平均点を求める。 ⑶個人毎の合計と平均点を求める。 ”

未完成時。

/*現時点での完成度はこの程度*/
#include <stdio.h>
int main(void){

  int i,n,totala,totalb,totalc,totald;
  float avea,aveb,avec,aved;
  float a[n];
  float b[n];
  float c[n];
  float d[n];
  float ave[n];

  printf("個人の合計、平均、教科ごとの平均を求める。\n");
  printf("人数は?:");
  scanf("%d",&n);

 for(i=0;i<n;i++){
   printf("%d人目\n",i+1);
   printf("科目1:  ");scanf("%f",&a[i]);
   printf("科目2:  ");scanf("%f",&b[i]);
   printf("科目3:  ");scanf("%f",&c[i]);
   printf("科目4:  ");scanf("%f",&d[i]);
   ave[i]=(a[i]+b[i]+c[i]+d[i])/4;
}

 avea=totala/n;
 aveb=totalb/n;
 avec=totalc/n;
 aved=totald/n;

 printf("          科目1  科目2  科目3  科目4  平均\n");

 for(i=0;i<n;i++){
   printf(" %3d人目    %3f   %3f   %3f   %3f     %2.3f\n",i+1,a[i],b[i],c[i],d[i],ave[i]);
 }

 for(i=0;i<n;i++){
   totala += a[i];
   totalb += b[i];
   totalc += c[i];
   totald += d[i];
 }


 printf("平均       %2.3f   %2.3f   %2.3f   %2.3f \n",avea,aveb,avec,aved);

  return 0;
}

一応コンパイルは出来るし出力は出来るがどうも計算値がおかしい。

友人を巻き込み、少しずつ修正をしながらなんとか完成。

#include <stdio.h>
int main(void){

  int i,n,totala=0,totalb=0,totalc=0,totald=0;
  int sum[n];
  float avea,aveb,avec,aved;
  float a[n];
  float b[n];
  float c[n];
  float d[n];
  float ave[n];

  printf("個人の合計、平均、教科ごとの平均を求める。\n");
  printf("人数は?:");
  scanf("%d",&n);

 for(i=0;i<n;i++){
   printf("%d人目\n",i+1);
   printf("科目1:  ");scanf("%f",&a[i]);
   printf("科目2:  ");scanf("%f",&b[i]);
   printf("科目3:  ");scanf("%f",&c[i]);
   printf("科目4:  ");scanf("%f",&d[i]);
   ave[i]=(a[i]+b[i]+c[i]+d[i])/4;
}
 printf("          科目1  科目2  科目3  科目4   合計  平均\n");

 for(i=0;i<n;i++){
   sum[i] = a[i]+b[i]+c[i]+d[i];
}


 for(i=0;i<n;i++){
   printf(" %3d人目     %.0f      %.0f     %.0f     %.0f     %d     %.0f\n",i+1\
,a[i],b[i],c[i],d[i],sum[i],ave[i]);
 }

 for(i=0;i<n;i++){
   totala += a[i];
   totalb += b[i];
   totalc += c[i];
   totald += d[i];
 }
 avea=totala/n;
 aveb=totalb/n;
 avec=totalc/n;
 aved=totald/n;

printf("平均       %2.3f   %2.3f   %2.3f   %2.3f \n",avea,aveb,avec,aved);

  return 0;
}


このプログラムの問題点

いや、単純にきったねぇ・・・・いや、うん、ほんとごめん。

さぁこれを読んだあなたに、このプログラムを短くするという任務を与えよう!

・・・・・頑張ります。

ともかく配列を使えばもっと分かりやすい・・・はず?

配列を上手く使えば変数をこんなに使う必要のないのはわかる。だがそんな技術をまだ持ってないのが現状。

・・・・・・・でも大学のクラスじゃこれでもプログラミング出来る部類なんだ・・・・・

プログラミング嫌いは多いよ。情報系専攻と言っても挫折者は多いね。

何にしたって僕も反省点は多いな・・・・うん。

Qiitaに投げた

http://qiita.com/haruhara_kilili/items/5473c1b64b11e1528ab6

・・・・質問をするところじゃない雰囲気なのは何となくわかってたけど、それっぽい言い訳をしながら取りあえず質問紛いのモノを投げてみた。

ブッ叩かれるかと思いきや、懇切丁寧なコメントが沢山寄せられて本当に嬉しい。

・・・・糞な投稿かもしれないけど、それでも真面目に反応してくれたのは本当に嬉しいね。

・・・・リアルもこんな振る舞いしてるんだ僕。リアルは何とかなってるけど、ネットじゃ事故起こしそうだな・・・・・

そんな話はメインにでも書くかな。

追記

友人が作ったコードをパクって参考にして少しばかり書き換えました。

イマイチ咀嚼出来てねぇ・・・・でも取りあえず貼り付けとこう。

#include<stdio.h>
int main(){
  int s[31][8];
  double ave[31]; //個人の平均
  double SUM[7]={0};
  double AVE[7]={0}; //全体の平均
  int n,i,j;

  printf("個人の合計と平均、全体各科目の平均を求める。\n");

  //生徒の人数
  printf("何人分の成績を入力しますか。(最大30名):");
  scanf("%d",&n);

  //生徒No
  for(i=1;i<=n;i++){
    s[i][1]=i;
  }

  //点数の入力
  for(i=1;i<=n;i++){
    printf("%d人目の点数を入力してください。\n",i);
    printf("科目1:");
    scanf("%d",&s[i][2]);
    printf("科目2:");
    scanf("%d",&s[i][3]);
    printf("科目3:");
    scanf("%d",&s[i][4]);
    printf("科目4:");
    scanf("%d",&s[i][5]);
  }

  //個人の合計点
  for(i=1;i<=n;i++){
    s[i][6]=s[i][2]+s[i][3]+s[i][4]+s[i][5];
  }

  //個人の平均点
  for(i=1;i<=n;i++){
    ave[i]=s[i][6]/4;
  }

  //全体の科目ごとの平均点
  for(j=2;j<=5;j++){
    for(i=1;i<=n;i++){
      SUM[j] += s[i][j];
    }
  }
  for(i=2;i<=5;i++){
    AVE[i] = SUM[i] / n;
  }

  //生徒の点数の出力
  printf("    No.  科目1  科目2  科目3  科目4   合計  平均\n");
  for(i=1;i<=n;i++){
    for(j=1;j<=6;j++){
      printf("%7d",s[i][j]);
    }
    printf("  %3.2f",ave[i]);
    printf("\n");
  }

  //全体の平均を出力
  printf("   平均");
  for(i=2;i<=5;i++){
    printf("  %3.2f",AVE[i]);
  }
  printf("\n");
  return 0;
}


数学とかさ!物理とかさ!英語とかさ!訳の分からない実験とか放棄してずっとプログラミングだけしてたい・・・

そうも言ってられないのだけどさ・・・

てか友人のこのコード分かりやすいよね・・・・いや、よくわかってないんだけど"プログラミングやってましたよ"感を感じるのは初心者が故か。

ははは・・・・

初めまして。

初めまして。

 

 

・・・・・ひたすらこの場所にコードを貼りつけます。

 

 

はてなダイアリーを勉強教材として使わせていただいている代わりといっては何ですが、いつか誰かの役に立つかもしれないという思いでコードを公開・・・いやみて下さい。ここのコードが僕の作品です。

 

 

見てもらえた方が上手くなる気がする・・・・・ただそんな思いで・・・・・