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

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

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

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

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

Q&A

解決済

3回答

6628閲覧

GPAを計算するプログラムの作成

mememe0331

総合スコア55

C

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

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

0グッド

1クリップ

投稿2020/05/14 09:29

編集2020/05/14 14:53

前提・実現したいこと

科目の点数と単位数を受け取り,GPAを計算,表示するプログラムを作成したい。

GPAを計算するための情報.

 評価    評点   GP 
S  90 ~ 100点  4
A  80 ~ 89点  3
B  70 ~ 79点  2
C  60 ~ 69点  1
X  59点以下  0
GPA=(Sの修得単位数×4+Aの修得単位数×3+Bの修得単位数×2+Cの修得単位数×1)/履修登録単位数(Xの科目も含む)

以下を入力して
科目数: 4
科目1の点数: 80
科目1の単位数: 2
科目2の点数: 100
科目2の単位数: 1
科目3の点数: 75
科目3の単位数: 2
科目4の点数: 62
科目4の単位数: 3
GPAの値を出力したいです。
GPA 2.125

発生している問題・エラーメッセージ

エラーメッセージは表示されていませんが、sum/xの部分が0と表示されてしまいます。

エラーメッセージ

該当のソースコード

C言語

1#include <stdio.h> 2 3int main(void) 4{ 5 int x,i,a,b; 6 int sum1=0,sum2=0; 7 8 printf("科目数:"); 9 scanf("%d",&x); 10 11 for(i=1;i<=x;i++){ 12 13 printf("科目%dの点数:",i); 14 scanf("%d",&a); 15 16 if(a<=100&&a>=90){ 17 a=4; 18 } 19 if(a<=89&&a>=80){ 20 a=3; 21 } 22 if(a<=79&&a>=70){ 23 a=2; 24 } 25 if(a<=69&&a>=60){ 26 a=1; 27 } 28 if(a<=59){ 29 a=0; 30 } 31 32 printf("科目%dの単位数:",i); 33 scanf("%d",&b); 34 sum1+=a*b; 35 sum2+=b; 36 } 37 38 printf("GPA%d",sum1/sum2); 39 return 0; 40}

試したこと

スペルの見直しと条件の確認は何度も行いました。

補足情報(FW/ツールのバージョンなど)

パソコンはWindows10、エディタはサクラエディタです。

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

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

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

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

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

fana

2020/05/14 09:47

このコードでaやbは何のために存在しているのでしょう? 何か用途があるなら適切に使う処理を書きましょう. 書きかけのプログラムでまともな結果が出るわけないです.
mememe0331

2020/05/14 14:37

ご指摘ありがとうございます。
guest

回答3

0

ベストアンサー

C

1#define _CRT_SECURE_NO_WARNINGS 2#include <stdio.h> 3 4int main(void) 5{ 6 int x, i, a, b; 7 int sum1 = 0, sum2 = 0; 8 9 printf("科目数:"); 10 scanf("%d", &x); 11 12 for (i = 1; i <= x; i++) { 13 14 printf("科目%dの点数:", i); 15 scanf("%d", &a); 16 17 if (a <= 100 && a >= 90) { 18 a = 4; 19 } else 20 if (a <= 89 && a >= 80) { 21 a = 3; 22 } else 23 if (a <= 79 && a >= 70) { 24 a = 2; 25 } else 26 if (a <= 69 && a >= 60) { 27 a = 1; 28 } else 29 if (a <= 59) { 30 a = 0; 31 } 32 33 printf("科目%dの単位数:", i); 34 scanf("%d", &b); 35 sum1 += a * b; 36 sum2 += b; 37 } 38 39 printf("GPA%f", (float)sum1 / sum2); 40 return 0; 41}
  • else 忘れてる。
  • GPAはfloatじゃないと。

投稿2020/05/14 21:46

episteme

総合スコア16612

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

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

mememe0331

2020/05/15 01:56

解決しました。ありがとうございます!
guest

0

sum/xの部分が0と表示されてしまいます

そりゃあ,sumの値は0ですから,そうなるでしょう.
int sum=0;として初期化してから最後までsumの値はそのまんまですから.

投稿2020/05/14 09:43

編集2020/05/14 09:44
fana

総合スコア11996

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

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

mememe0331

2020/05/14 14:46

ありがとうございます。 sum+=a*bを書き忘れていました。 この式を入力しても、sum/xは0になってしまうのは、どうしてなのでしょうか? 教えていただけると幸いです。
guest

0

sum が計算されていません.
int 同士の計算は int に切り捨てられます.

投稿2020/05/14 09:42

編集2020/05/14 09:45
jimbe

総合スコア13209

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

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

mememe0331

2020/05/15 01:55

ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問