PGR21.com
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
Date 2007/11/07 22:14:08
Name zeros
Subject 프로그래밍 과제를 하는중에.. 정말 막혀서 못하겠습니다.. 도와주세요..
많은분들이 이런글을 보시면 '아 이놈 하다가 귀찮으니까 그냥 올렸나보네' 하실수도 있지만
전 진짜로 풀다풀다 정말 너무 막혀서 답답한 마음에 올려봅니다.
제출도 제출이지만 왠만한 학교 진도에 맞춘 프로그래밍은 책보면서 다 해왔는데,
이건 정말 막혀버리니 너무 풀고싶기도 합니다.

피쥐알러분들의 도움을 요청합니다. ㅠㅠ

일단 문제는
덧셈 뺄셈 곱셈 나눗셈을 계산하는 계산기 프로그램을 반복문과 switch문을 가지고 작성하는건데요.
입력으로는 연산식 형태로 입력을 받고 +는 1로 -는 2로 *는 3으로 /는 4로 변환하여 스위치문에서
처리하라고 하네요.
예를들면

연산식을 입력하세요:60+70
계산결과는 130입니다.
다른계산을 하시겠습니까?(1.예,2.아니오)

이런 스타일인데요. 저는 맨처음에 덧셈뺄셈 나눗셈 곱셈 연산자가 데이터에 저장될때 값이 다 다르니까
그것을 이용해서 함수를 배열형태로 준다음 반복문으로 돌려서 데이터값이 42는 곱셈 43일땐 덧셈
이런식으로 구분해서 하려고했는데 나중에 case문에서 계산을 하려니 갑자기 턱 막히더라구요.
거기서는 아무리 생각해도 잘 모르겠구요 ㅠㅠ
다른계산을 하느냐 마느냐 이런부분은 혼자서도 할 수 있습니다만, 연산자에 따른 case의 분할과 어떻게
계산을 하는지가 너무 어렵습니다..

많은 도움 부탁드립니다. ㅠㅠ

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
07/11/07 22:29
수정 아이콘
질문을 이해하기 상당히 어렵지만 ;;
switch에서 1,2,3,4로 바꿔하라는 거때문에 괜히 헷갈리는게 아니신지..
덧셈은 + 하면 되고 곱셈은 * 하면 계산 됩니다 -_-;
삐꾸돼지
07/11/07 22:35
수정 아이콘
int cal(int a, int b, int operator)

double temp;
switch(operator)
case 1 :
tmp = a + b;
case 2 :
tmp = a - b;
case 3 :
tmp = a * b;
case 4 :
tmp = a / b;

return (int)tmp;


void main()

while(1) {
int a,b,operator=0;
int check;
//문법을 잘 모르겠네요.. 키보드로 입력 3개 받아서
//a,b,operator(연산자) 받으세요.....
printf("계산결과는 %d 입니다", cal(a,b,operator));
printf("다른계산을 하시겠습니까?(1.예,2.아니오)");
//다시 키보드로 입력받으세요(check)
if(check == 2) { break;

}
}

문법이 틀릴수도 있으나 로직은 맞아요 ;;
몇년간 자바만해서 C 문법이 안습이네요 흑흑..
삐꾸돼지
07/11/07 22:39
수정 아이콘
아 scanf인가요? 그걸로 입력 받으면 되겠네요
07/11/07 22:41
수정 아이콘
그냥 간단히 힌트정도로 생각하세요.

int foo(char *pExp)

int val1 = 0, val2 = 0;
int isGetVal = 0;
char op = 0;
char c;
char *pTmp;
float result = 0;
pTmp = pExp;

for (c = pTmp; c != NULL; pTmp++) {
if (c >= '0' && c<= '9') {
if (isGetVal == 0) {
val1 *= 10;
val1 += c - '0';
else

val2 *= 10;
val2 += c - '0';

} else
// if (c .....
op = c;
isGetVal = 1;

} // for

switch (op)

case '+'
...
case '-'
...
case '*'
....
case '/'
...


}

간단한 힌트 입니다.
삐꾸돼지
07/11/07 22:42
수정 아이콘
앗 입력할때 문자열로 받아야하는군요!!!
한번에 3개를 몽땅 받아야하니깐!!;;;
lovehis님이 맞네요. 제껄로하지마세욧;;
07/11/07 23:37
수정 아이콘
lovehis님은 지금 제 실력으로 해석해보기엔 너무 어렵네요;;
솔직히 전혀 모르겠어요;
일단저는요.

char a[20];
int b=0;
int c,d;

printf("연산식을 입력하세요:");
scanf("&s",a); //이렇게하면 일단 연산식을 모두 문자열로 받구요.

for(b=0; b<=20; b++)

if (a[b]==42)//곱하기의 기계어 값이 42 입니다.
{c=3;

else if (a[b]==43)//덧셈의 기계어 값이 43입니다.
c=1;

이런식으로 연산자에 따른 C값을 정한다음

switch(c)
{
case 1: 이부분에서 막히네요
이제 덧셈을 하면 되는건데, 배열에 저장된 식을 어떻게 꺼내와야 하는건지... ㅠ,ㅠ
해왕성
07/11/08 09:35
수정 아이콘
일단 저장된 숫자가 문자형태로 저장되어 있어서 연산이 안되요..
scanf("%d %c %d", number1, operand, number2);
뭐 이런 식으로 받아서 하시면 쉽게 될 것 같아요.
문자열 형태로 인자를 받으면 예를 들어 30+20을 저장하면
a[0]=3, a[1]=0, a[2]=+, ... 이런 식으로 저장하기 때문에 연산이 곤란할 것 같아요.
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
31184 KBS 한국어능력시험 해보신 분 계십니까? [1] BluSkai2230 07/11/07 2230
31183 동아리 행사 관련 질문 드립니다. [1] 대구완소남필1548 07/11/07 1548
31182 워3리플레이파일 관련 질문입니다. [3] JPstyle4226 07/11/07 4226
31181 SATA 2 하드디스크를 쓰고 있는데요 [2] 미치엔1575 07/11/07 1575
31180 도씨 성을 가진 여가수.. [3] dle2296 07/11/07 2296
31179 프로그래밍 과제를 하는중에.. 정말 막혀서 못하겠습니다.. 도와주세요.. [7] zeros1515 07/11/07 1515
31176 저그유저분들께 질문입니다 [6] 한번말할때천1729 07/11/07 1729
31174 군산/전주 여행관련 질문 (특히 숙소) [3] 꿈트리2108 07/11/07 2108
31173 수영 or 헬스?? [8] o에코o1786 07/11/07 1786
31172 각종 맵들의 옵저버맵이 다 올라와 있는 곳이 있나요? [3] 1928 07/11/07 1928
31171 비프로스트3 에서 언덕캐논 러시에 대한 글 어디갔죠? [2] 2082 07/11/07 2082
31170 스타 프로리그 팀 변천사가 궁금합니다. [5] 사과벌레1864 07/11/07 1864
31169 대구서부정류장에서 경북대학병원 가는 버스. [6] 무관의황제2414 07/11/06 2414
31168 요즘들어 자주 페이지를 찾을수 없습니다가 가끔 뜨는데.. 신이 건들고 간1647 07/11/06 1647
31167 스타 하마치 질문입니다 [4] 케이2092 07/11/06 2092
31164 소녀시대에 대한 질문이요~ [6] 도시의미학2756 07/11/06 2756
31163 먼지들이 우연히 합쳐 생물이 될 확률은? [15] 리플의 신1853 07/11/06 1853
31162 남녀 사이에 관한 질문 [12] 성추니2070 07/11/06 2070
31160 [질문] 컴퓨터 공유기에서 IP로 물리니까 인터넷이 잘 안됩니다. [1] 지바고1620 07/11/06 1620
31159 남성복 쇼핑몰... [3] 기사도2085 07/11/06 2085
31158 모든 토익고수들 봐주세요~!! 2월달까지 토익 750 넘기기!! [13] Ciara.2239 07/11/06 2239
31156 토익 책 추천이요! [1] 섬전양상1510 07/11/06 1510
31155 스타 1:1할만한 채널 and 길드 추천 부탁드립니다~ [6] dle2388 07/11/05 2388
목록 이전 다음
댓글

+ : 최근 6시간내에 달린 댓글
+ : 최근 12시간내에 달린 댓글
맨 위로