목적
- 문자열을 받아 판단하여 조건문을 실행하게 한다.
문제
코드
#include <iostream>
#include <cstring>
using namespace std;
int main(void)
{
int i, iCurriculum, iScr;
float fTotal, fScrTotal;
char sGrade[2] = {0};
i = 1;
fTotal = fScrTotal = iCurriculum = 0.0;
cout << "수강과목 수 : ";
cin >> iCurriculum;
while(i<= iCurriculum)
{
cout << i << "번째 과목 학점과 등급 : ";
cin >> iScr >> sGrade;
if(!strcmp(sGrade,"A+"))
fTotal += 4.5 * iScr;
if(!strcmp(sGrade,"A"))
fTotal += 4.0 * iScr;
if(!strcmp(sGrade,"B+"))
fTotal += 3.5 * iScr;
if(!strcmp(sGrade,"B"))
fTotal += 3.0 * iScr;
if(!strcmp(sGrade,"C+"))
fTotal += 2.5 * iScr;
if(!strcmp(sGrade,"C"))
fTotal += 2.0 * iScr;
if(!strcmp(sGrade,"D+"))
fTotal += 1.5 * iScr;
if(!strcmp(sGrade,"D"))
fTotal += 1.0 * iScr;
fScrTotal += iScr;
i++;
}
cout << "이번학기 학점 : " << fTotal / fScrTotal << endl;
return 0;
}
해설
- F 학점은 fTotal 더하지 않기 때문에 판정을 하지 않아도 문제 없습니다.
- 다중 if 문으로 else 없이 써도 한 루프에 하나의 if 만 걸리기 때문에 문제 없이 작동할수 있습니다.
- float 형으로 선언하여 소숫점 계산을 할수 있습니다.
- 문자형 이나 기타 단순 비교용 == 연산자로 sGrade == "A+" 이렇게 될거 같지만 문자열에 대한 비교는 이 연산자로는 되지 않습니다. 대신 strcmp 함수를 쓰면 가능합니다.
참고
-유사 문제 검색