質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

3回答

4069閲覧

計算結果がうまく出力されない

Teemro_431265

総合スコア29

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2018/06/19 07:01

編集2018/06/19 07:11

計算式
例 国語と数学

重み付き合計点=国語の点数国語の重み+数学の点数数学の重み

重み付きの平均点=重み付き合計点/国語よ重み+数学の重み

C

1 2#include<stdio.h> 3int main(){ 4 int lan,math,eng,sci,soci,sum,imp1,imp2,imp3,imp4,imp5; 5 double ave; 6 printf("国語の点数と重みを入力してください : "); 7 scanf("%d %d",&lan,&imp1); 8 printf("\n数学の点数と重みを入力してください : "); 9 scanf("%d %d",&math,&imp2); 10 printf("\n英語の点数と重みを入力してください : "); 11 scanf("%d %d",&eng,&imp3); 12 printf("\n理科の点数と重みを入力してください : "); 13 scanf("%d %d",&sci,&imp4); 14 printf("\n社会の点数と重みを入力してください : "); 15 scanf("%d %d",&soci,&imp5); 16 sum=lan*imp1+math*imp2+eng*imp3+sci*imp4+soci*imp5; 17 ave=(double)sum/(double)(imp1+imp2+imp3+imp4+imp5); 18 printf("5教科の重み付き合計点は%d点で、重み付き平均点は%f点です。\n",sum,ave); 19 return 0; 20} 21

入力
国語 74 1
数学 83 2
英語 77 2
理科 63 2
社会 50 1

出るべき答え
合計点 570点 平均点 71.250000点

出力される答え
合計点 463点 平均点 1.695971点
説明が至らないことがあったらすみません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takabosoft

2018/06/19 07:07

入力したデータの情報も記載してください。
Teemro_431265

2018/06/19 07:10

失礼しました、追加しました。
coco_bauer

2018/06/19 07:13

どのような入力を想定して「出るべき答え」が作られているのでしょうか? printf("国語 %d %d\n",lan,imp1); というような行を5教科分追加して、キーボードから入力された値の確認をしてください。
guest

回答3

0

最初のscanf()の引数で2つの%dの間が全角スペースになっているために正しく値を入力できていないのではないでしょうか。

ご参考になれば。

投稿2018/06/19 07:22

tkanda

総合スコア2425

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

0

フォーマットに全角空白がまじっています。

C

scanf("%d %d",&lan,&imp1);

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

C

1scanf("%d %d",&lan,&imp1);

そこを直したら希望する出力になりました。 Wandbox

投稿2018/06/19 07:16

LouiS0616

総合スコア35658

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Teemro_431265

2018/06/19 07:29

ありがとうございます。 質問するたびに答えて頂いて非常に助かってます。
guest

0

ベストアンサー

printf("国語の点数と重みを入力してください : ");
scanf("%d %d",&lan,&imp1);

______________↑ここの全角スペースを半角スペースにして試してみてください。

手元ではこれで出ました。

出力結果:

text

1語の点数と重みを入力してください : 74 1 2 3数学の点数と重みを入力してください : 83 2 4 5英語の点数と重みを入力してください : 77 2 6 7理科の点数と重みを入力してください : 63 2 8 9社会の点数と重みを入力してください : 50 1 105教科の重み付き合計点は570点で、重み付き平均点は71.250000点です。

投稿2018/06/19 07:14

編集2018/06/19 07:16
takabosoft

総合スコア8356

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Teemro_431265

2018/06/19 07:28

そんなところに全角があったんですね、ありがとうございます。 全角と半角の見分ける方法ってなにかあるんですか??
takabosoft

2018/06/19 07:49

見分ける方法は難しいですが、自分の場合はVisual Studioでreturn 0の行にブレークポイントを張り、各変数の値に何が入っているかを確認したところ、imp1の値が不定値(ちゃんと値が入っていない)→おそらくscanf内の全角が原因だろう→修正してみたら上手く動いた、という経緯です。こういったデバッグツールを使うと問題特定が楽になるのでおすすめです。
Teemro_431265

2018/06/21 00:26

なるほど、ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問