ページ 1 / 1
無題
Posted: 2009年10月09日(金) 11:55
by あ
scanf を用いて、5個の数を入力すると合計と平均を計算し出力するプログラムを作成するのが分かりません。
=== プログラム ===
#include <stdio.h>
int main()
{
/* ほげほげ */
}
=== プログラムの実行結果 === 教えてもらえたらうれしいです。
Re:無題
Posted: 2009年10月09日(金) 12:28
by 通りすがり
ググる癖をつけましょう^^
http://www.google.co.jp/search?hl=ja&q= ... lr=lang_ja
<DIV align="right">
<BR clear=all>253ポイント を手に入れた。</DIV>
Re:無題
Posted: 2009年10月09日(金) 14:35
by あ
#include <stdio.h>
int main(void)
{
char str[20];
int num1;
int num2;
int num3;
int num4;
int num5;
int sum;
puts( "整数を5回入力して下さい。" );
fgets( str, 20(str), stdin );
sscanf( str, "%d", &num1 );
fgets( str, 22(str), stdin );
sscanf( str, "%d", &num2 );
fgets( str, 24(str), stdin );
sscanf( str, "%d", &num3 );
fgets( str, 26(str), stdin );
sscanf( str, "%d", &num1 );
fgets( str, 28(str), stdin );
sscanf( str, "%d", &num1 );
/* 合計を求める */
sum = num1 + num2 + num3 + num4+ num5;
/* 合計と平均値を出力する */
printf( "合計: %d\n", sum );
printf( "平均: %d\n", sum / 5 );
return 0;
}
これでどうですか?
Re:無題
Posted: 2009年10月09日(金) 15:17
by ねこ
何故fgetsやsscanfが・・・
普通に「scanf( "%d", &num1 );」とかでいいと思います。他気になった点は
1.num3以降が全部num1
2.平均は5で割ってますがint型なので整数(75.5点とかは出せない)になる
3.現在そのソースを実行できる環境の有無は?これを書いておくと「試せば?」って言われなくなります。
無ければcodepadってググると実行結果を出してくれるブラウザでのツールもあります。
scanf等は多分未対応なのでprintf絡みのチェックにしか使えませんが・・・
Re:無題
Posted: 2009年10月09日(金) 15:45
by Naohiro19
#include <stdio.h>
#define COUNT 5
int main()
{
int i;
double num[COUNT] = {0}, t = 0;
for(i =0; i < COUNT; i++){
scanf("%f", &num);
t += num;
}
printf("total:%f, average:%f\n", t, t / COUNT);
return 0;
}
このほうがすっきりするかと思います
Re:無題
Posted: 2009年10月09日(金) 22:48
by lbfuvab
#include<stdio.h>
int main(){
int i;
double ave=0,input;
for(i=0;i<5;i++){
scanf("%lf",&input);
ave += (input-ave) / (i+1);
}
printf("sum:%g ave:%g\n",ave*5,ave);
return 0;
}
どうでしょう。
Re:無題
Posted: 2009年10月10日(土) 05:03
by ゆーずぃ
>Naohiro19さん
初めまして。横槍を失礼します。
>> scanf("%f", &num
);
うっかりだとは思いますが、それでは計算結果がNaNになるのではないでしょうか? %lf にしたほうが良いかと。
>lbfuvabさん
初めまして。横槍を失礼します。
>> ave += (input-ave) / (i+1);
のくだりですが、初心者さんに教えるにはちょっと式が難しすぎると思います。特に初心者じゃ0除算対策はぱっと見では分かりませんし(^^;)
無理に平均から作らない方がすっきりするし分かり易くていいかと思います。
偉そうな事を言ってすみません。口だけだと何なので自分のソースも晒しますw
#include <stdio.h>
#define COUNT 5
void main(void)
{
int i;
double num[COUNT] = {0}, sum = 0.0;
for(i = 0; i < COUNT ; i++ ){
scanf(" %lf",&num);
sum += num;
}
printf("合計 => %g , 平均 => %g ",sum , sum / COUNT);
}
テストしていないのでどこかおかしいかも知れませんw