C言語初めて1週間です。
IF文のコードがない場合の結果はあっているので
IF文内がおかしいところがわかりません。
このコードのどこを直せばよいか教えて下さい。
問題文と入力値は後ろに記載しております。
C言語
1#include <stdio.h> 2#include <string.h> 3int main(void){ 4 5 char buf[1000]; 6 int n; 7 int pass = 0; 8 fgets(buf, sizeof(buf), stdin); 9 sscanf(buf, "%d", &n); 10 11 for(int i = 0; i < n; i++){ 12 char bunri[100]; 13 int d1, d2, d3, d4, d5; 14 fgets(buf, sizeof(buf), stdin); 15 sscanf(buf, "%s %d %d %d %d %d", bunri, &d1, &d2, &d3, &d4, &d5); 16 17 int sum1 = d1 + d2 + d3 + d4 + d5; //総得点 18 int sum2 = d2 + d3; //理系得点 19 int sum3 = d4 + d5; //文系得点 20 if(sum1 >= 350 && sum2 >= 160){ //理系条件 21 if(strcmp(bunri,"s") == 0){ 22 pass++; 23 } 24 } else if(sum1 >= 350 && sum3 >= 160){ //文系条件 25 if(strcmp(bunri,"l") == 0){ 26 pass++; 27 } 28 } 29 } 30 printf("%d", pass); 31}
問題文
総合力を重視する大学の入試では 1 次試験 (英語、数学、理科、国語、地理歴史の 5 科目で各 100 点満点) の成績で2段階選抜を行います。2段階選抜を通過する条件は以下のようになっています。
全科目の合計得点が 350 点以上
理系の受験者の場合は理系 2 科目 (数学、理科) の合計得点が 160 点以上
文系の受験者の場合は文系 2 科目 (国語、地理歴史) の合計得点が 160 点以上
受験者それぞれの各科目の点数が入力されるので、何人2段階選抜を通過できるかを求めてください。
2段階選抜を何人通過できるかを整数で 1 行に出力してください。
入力値
20
l 100 67 39 85 87
s 38 75 75 45 90
l 43 95 7 35 49
l 82 77 74 35 44
s 96 80 92 58 84
l 23 60 44 27 3
l 42 24 52 23 63
s 44 78 98 51 10
l 93 38 73 88 12
l 34 29 43 48 61
l 83 33 97 3 59
l 24 84 22 35 33
s 81 42 80 34 87
l 8 87 82 80 100
l 48 75 75 3 50
l 93 76 25 71 31
s 60 92 64 66 11
l 61 47 6 21 83
l 68 1 47 81 78
l 8 72 54 20 25
・1 行目には受験者の人数を表す整数 N が与えられます。
・続く N 行のうち i 行目 (1 ≦ i ≦ N) には受験者の文理の区分を表す文字 t_i と、英語、数学、理科、国語、地理歴史の点数を表す整数 e_i, m_i, s_i, j_i, g_i がこの順に半角スペース区切りで与えられます。
・t_i について文系は "l" ("L" の小文字)、理系は "s" で表されます。
・入力は合計で N + 1 行となり、入力値最終行の末尾に改行が1つ入ります。