プロトタイプ宣言を使ってコードを書いたのですが長くなってしまいました。
もっと簡単にできる方法を教えてください。
実行例↓
#include<stdio.h> #define SIZE 20 void get_score( int score[ ], int n); void error_message(int point); void show_array( int array[ ], int n); int max_array(int array[ ], int n); int min_array(int array[ ], int n); double average_array(int array[ ], int n); int array[SIZE]; int score[SIZE]; int main(){ int n,max,min; double ave; printf("データ数を入力してください(1~20):"); scanf("%d",&n); get_score(score,n); printf("\n"); printf("データを表示します\n"); show_array(array,n); printf("\n"); max=max_array(array,n); min=min_array(array,n); ave=average_array(array,n); printf("最大値は%dです\n",max); printf("最小値は%dです\n",min); printf("平均値は%.1lfです\n",ave); return 0; } void get_score( int score[ ], int n){ int i; for(i=0;i<n;i++){ printf("No.%d:",i+1); scanf("%d",&score[i]); array[i]=score[i]; while( score[i]<0 || score[i]>100){ error_message(score[i]); printf("No.%d:",i+1); scanf("%d",&score[i]); array[i]=score[i]; } } } void error_message(int point){ if( point<0){ printf("****入力ミス:%dは0未満です****\n",point); } if( point>100){ printf("****入力ミス:%dは100をこえています****\n",point); } } void show_array( int array[ ], int n){ int i; for(i=0;i<n;i++){ printf("No.%d:%d\n", i+1,array[i]); } } int max_array(int array[ ], int n){ int i,max; max=array[0]; for(i=1;i<n;i++){ if(array[i]>max){ max=array[i]; } } return max; } int min_array(int array[ ], int n){ int i,min; min=array[0]; for(i=1;i<n;i++){ if(array[i]<min){ min=array[i]; } } return min; } double average_array(int array[ ], int n){ int i,sum=0; double ave; for(i=0;i<n;i++){ sum += array[i]; } ave=(double)sum/n; return ave; }
回答2件
あなたの回答
tips
プレビュー