無題

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
kidd

無題

#1

投稿記事 by kidd » 18年前

c言語で「正整数Nを入力後、N個の実数を入力し、それらの平均値と最大値を表示するプログラム」を教えてください。

tk-xleader

Re:無題

#2

投稿記事 by tk-xleader » 18年前

こんな感じでしょうか↓
#include<stdio.h>
#include<stdlib.h>

double average(int,double*); /*平均値を求める関数*/
double max(double,double); /*二つの実数のうち大きいほうを返す関数*/

int main(void)
{
      char nyuryoku[1000]; /*入力した値を一時的に記憶する変数*/
      int N; /*最初の正整数N*/
      int count;/*実数入力時のカウントのための変数*/
      double *input; /*そのあとの実数を記憶する変数*/
      double heikin; /*平均値の変数*/
      double saidai; /*最大値の変数*/

      /*Nの入力部分*/
      fgets(nyuryoku,1000,stdin);
      N = atoi(nyuryoku);

      input = (double*)malloc(sizeof(int)*N); /*N個の配列を確保(動的配列)*/
      if(input==NULL){
             return -1;
      }

      /*実数の入力部分*/
      for(count=0;count<N;count++){
             fgets(nyuryoku,1000,stdin);
             input[count] = atof(nyuryoku);
      }
      
      /*平均値を求める*/
      heikin = average(N,input);

      /*最大値を求める*/
      saidai=input[0];
      for(count=0;count<N;count++){
             saidai=max(saidai,input[count]);
      }

      /*まとめて表示*/
      printf("%f,%f\n",heikin,saidai);

      free(input);
      return 0;
}

double average(int kazu,double *value)
{
      int count; /*カウント用変数*/
      double total=0;/*配列の総和*/
      for(count=0;count<kazu;count++){
             total += value[count];
      }
      return(total/kazu);
}

double max(double index1,double index2)
{
      if(index1>=index2){
            return index1;
      }else{
            return index2;
      }
      return 0.0;
}
表示はコンマで区切るようにしています。数値入力については、一回一回改行が必要です。

kidd

Re:無題

#3

投稿記事 by kidd » 18年前

ありがとうございました

Justy

Re:無題

#4

投稿記事 by Justy » 18年前

>[color=#d0d0ff" face="aria[/url]input = (double*)malloc(sizeof(int)*N);[/color]
 この行はちょっとまずい気がします。
 sizeof(int) >= sizeof(double)な環境なら大丈夫かもしれませんが、
sizeof(int) < sizeof(double)な環境だと、後で領域が不足しそうです。

tk-xleader

Re:無題

#5

投稿記事 by tk-xleader » 18年前

あっ、そうでした。これはまずいですね。kiddさん、justyさん、申し訳ありませんでした。

閉鎖

“C言語何でも質問掲示板” へ戻る