컴파일러에 따라 다른결과 해결부탁드려요..
      글쓴이: onell0 / 작성시간: 목, 2017/03/09 - 8:23오전    
  
  이 코드입니다만
vc에서와 gnu gcc 컴파일러 사용한 코드블럭에서 다른 결과가 나오네요..
아직은 입문자라 왜 이런 문제가 일어나는지..
#include <stdio.h>
#include <stdlib.h>
 
int map[51][51]={0};
 
int triangle(int r, int c){
 
	if(r==c || r==0 || c==0)
		return 1;
	else{	
		if(map[r][geshifilter-c]!=0) return map[r][c];

		return map[r][c]=(triangle(r-1,c)+triangle(r-1,c-1))%100000000;
	}
}

int main(){

	int r,c;
	scanf("%d %d",&r, &c);

	printf("%3d ", triangle(r+(c-2),c-1));

	return 0;
}
File attachments: 
| 첨부 | 파일 크기 | 
|---|---|
|  파스칼.txt | 372바이트 | 
Forums: 


입력을 몇으로 주었을 때 어떤 값이 나와야 정산인데
입력을 몇으로 주었을 때 어떤 값이 나와야 정상인데 실제로는 어떤 값이 나온다는 것을 적어주시는 게 답변을 해주려는 분들에게 도움이 될 것 같네요.
(이왕이면 인자의 의미라거나 프로그램이 하려는 일 같은 것도... 파일명으로 보니까 파스칼의 삼각형 같긴 합니다만)
좋은 하루 되세요!
왜 리턴을 저런 식으로 하는 거죠?
왜 리턴을 저런 식으로 하는 거죠?
int triangle(int r, int c)
int triangle(int r, int c) { if(r==c || r==0 || c==0) return 1; else{ if(map[r][geshifilter-c]==0) 
 map[r][c]=(triangle(r-1,c)+triangle(r-1,c-1))%100000000;

 return map[r][c];
 }
}소프트웨어공학적으로 볼 때 이렇게 짜면 안 되는
소프트웨어공학적으로 볼 때 이렇게 짜면 안 되는 대표적인 예입니다.
소스에 코멘트도 없고, 입력 받을 때 뭘 입력하라는 설명도 없고...
시간이 지난 다음에 보시면 프로그램 만든 분이 봐도 모를 코드인데...
이 게시판에 소스를 올렸을 때 약간 깨져 보이는 까닭은 저도 모르겠네요...
세벌 https://sebuls.blogspot.kr/
음 ..
code 또는 c 를 꺽쇠 (<>) 를 이용해서 감싸면..
내부에 [\c] 와 같은 문구가 있을 때 GeShiFilter (Generic Syntax Highlighter) 가 오동작(?)하나 보네요.
code 나 c 를 대괄호([]) 로 감싸면 괜찮게 표시되는 것 같습니다.
대괄호로 c 태그 쓰면..
꺽쇠로 c 태그 쓰면..
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
음 지금 테스트를 해 보니, [code]~[/code
음 지금 테스트를 해 보니, [code]~[/code] 지원과, <c>~</c> 지원 부분이 충돌을 해서 발생하는 문제이네요. [] 괄호를 지원을 하고, code가 아닌 language를 지원하게 하나 보니, <c>를 호환 지원하기 위하여 [c] 가 지원이 되면서 코드상의 배열 이름에 c 가 들어갈 경우, 코드 블럭으로 인식을 해서 발생하는 문제 입니다.
딱히 어떻게 해야 할지 애매하네요. 이미 다 사용을 하고 있는 상황이라 과거 글들을 위해서 옵션을 off 시키기도 그렇군요. 그저 배열 이름에 c를 쓰지 않는 방법 밖에는.. :-(
일단, [c] ~ [/c] 블럭을 사용하지 못하도록
일단, [c] ~ [/c] 블럭을 사용하지 못하도록 geshifilter를 수정 했습니다.
다음 블럭은 사용 가능 합니다.
<c> ~ </c>
[code lang="c"] ~ [/code]
다음은, geshifliter 수정 내역 입니다.
VC에서 테스트를 해 본적이 없어서 확언은 못하겠지만
VC에서 테스트를 해 본적이 없어서 확언은 못하겠지만, 배열 초기화 상태가 동일한지 테스트 해 보세요. 제 생각에는 문제가 있다면 이 부분일 것 같군요. 아래의 코드의 의도는 모든 배열 값을 0으로 설정한 의도 일텐데 말이죠.
아 세벌님이 위에서 지적 하셨군요 ..
아 세벌님이 위에서 지적 하셨군요 ..
같은데요?
웹 컴파일러인 코드 패드'에서 한 결과와 Visual Studio 2017 RC 로 해본 결과가 같습니다.
http://codepad.org/JPqsZePD
오류가 발생한. 입력값과 출력값을 보여주셔야 확인이 가능합니다.
윈도우에서 컴파일 해보시려면.
Visual Studio 2017 RC 는 6GB 정도에 설치 용량이 필요합니다. (리눅스 개발 환경도 지원해주는것 같습니다.)
저용량에 DevC++ 이 있습니다.
Qt 도 있습니다.
#include <stdio.h> #include <stdlib.h> int map[51][51] = { 0 }; int triangle(int r, int c) { printf("[triangle] r:%d c:%d map[r][geshifilter-c]:%d\t\t", r, c, map[r][c]);
 if (r == c || r == 0 || c == 0)
 {
 printf("[return 1] 1\n");
 return 1;
 }
 else 
 {
 if (map[r][c] != 0)
 {
 printf("[return 2] r:%d c:%d map[r][c]:%d\n", r, c, map[r][c]);
 return map[r][c];
 }

 printf("[return 3] r:%d c:%d map[r][c]:%d\n", r, c, map[r][c]);
 return map[r][c] = (triangle(r - 1, c) + triangle(r - 1, c - 1)) % 100000000;
 }
 printf("[return 4] r:%d c:%d map[r][c]:%d\n", r, c, map[r][c]);
}

int main() 
{
 int r, c;
 //scanf("%d %d", &r, &c);
 r = 4;
 c = 4;

 printf("[END] %3d\n", triangle(r + (c - 2), c - 1));

 return 0;
}



[triangle] r:6 c:3 map[r][c]:0 [return 3] r:6 c:3 map[r][c]:0
[triangle] r:5 c:3 map[r][c]:0 [return 3] r:5 c:3 map[r][c]:0
[triangle] r:4 c:3 map[r][c]:0 [return 3] r:4 c:3 map[r][c]:0
[triangle] r:3 c:3 map[r][c]:0 [return 1] 1
[triangle] r:3 c:2 map[r][c]:0 [return 3] r:3 c:2 map[r][c]:0
[triangle] r:2 c:2 map[r][c]:0 [return 1] 1
[triangle] r:2 c:1 map[r][c]:0 [return 3] r:2 c:1 map[r][c]:0
[triangle] r:1 c:1 map[r][c]:0 [return 1] 1
[triangle] r:1 c:0 map[r][c]:0 [return 1] 1
[triangle] r:4 c:2 map[r][c]:0 [return 3] r:4 c:2 map[r][c]:0
[triangle] r:3 c:2 map[r][c]:3 [return 2] r:3 c:2 map[r][c]:3
[triangle] r:3 c:1 map[r][c]:0 [return 3] r:3 c:1 map[r][c]:0
[triangle] r:2 c:1 map[r][c]:2 [return 2] r:2 c:1 map[r][c]:2
[triangle] r:2 c:0 map[r][c]:0 [return 1] 1
[triangle] r:5 c:2 map[r][c]:0 [return 3] r:5 c:2 map[r][c]:0
[triangle] r:4 c:2 map[r][c]:6 [return 2] r:4 c:2 map[r][c]:6
[triangle] r:4 c:1 map[r][c]:0 [return 3] r:4 c:1 map[r][c]:0
[triangle] r:3 c:1 map[r][c]:3 [return 2] r:3 c:1 map[r][c]:3
[triangle] r:3 c:0 map[r][c]:0 [return 1] 1
[END] 20
Press any key to continue . . .

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
댓글 달기