컴파일러에 따라 다른결과 해결부탁드려요..

onell0의 이미지

이 코드입니다만
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];&#10;&#10;		return map[r][c]=(triangle(r-1,c)+triangle(r-1,c-1))%100000000;&#10;	}&#10;}&#10;&#10;int main(){&#10;&#10;	int r,c;&#10;	scanf(&quot;%d %d&quot;,&amp;r, &amp;c);&#10;&#10;	printf(&quot;%3d &quot;, triangle(r+(c-2),c-1));&#10;&#10;	return 0;&#10;}&#10;
위에 코드가 잘 나오지않아 파일로 첨부합니다[/geshifilter-c]
File attachments: 
첨부파일 크기
Plain text icon 파스칼.txt372바이트
raymundo의 이미지

입력을 몇으로 주었을 때 어떤 값이 나와야 정상인데 실제로는 어떤 값이 나온다는 것을 적어주시는 게 답변을 해주려는 분들에게 도움이 될 것 같네요.
(이왕이면 인자의 의미라거나 프로그램이 하려는 일 같은 것도... 파일명으로 보니까 파스칼의 삼각형 같긴 합니다만)

좋은 하루 되세요!

익명 사용자의 이미지

왜 리턴을 저런 식으로 하는 거죠?

익명 사용자의 이미지

int triangle(int r, int c)
{
    if(r==c || r==0 || c==0)
        return 1;
    else{
	if(map[r][geshifilter-c]==0) &#10;            map[r][c]=(triangle(r-1,c)+triangle(r-1,c-1))%100000000;&#10;&#10;        return map[r][c];&#10;    }&#10;}
[/geshifilter-c]
세벌의 이미지

소프트웨어공학적으로 볼 때 이렇게 짜면 안 되는 대표적인 예입니다.
소스에 코멘트도 없고, 입력 받을 때 뭘 입력하라는 설명도 없고...
시간이 지난 다음에 보시면 프로그램 만든 분이 봐도 모를 코드인데...

이 게시판에 소스를 올렸을 때 약간 깨져 보이는 까닭은 저도 모르겠네요...

#include <stdio.h>
#include <stdlib.h>
int map[51][51] = {{0, }, {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];&#10;		return map[r][c] = (triangle(r - 1, c) + triangle(r - 1, c - 1)) % 100000000;&#10;	}&#10;}&#10;&#10;int main()&#10;{&#10;&#10;	int r, c;&#10;	scanf(&quot;%d %d&quot;, &amp;r, &amp;c);&#10;&#10;	printf(&quot;%3d &quot;, triangle (r + (c - 2), c - 1));&#10;&#10;	return 0;&#10;}&#10;
[/geshifilter-c]
ymir의 이미지

code 또는 c 를 꺽쇠 (<>) 를 이용해서 감싸면..
내부에 [\c] 와 같은 문구가 있을 때 GeShiFilter (Generic Syntax Highlighter) 가 오동작(?)하나 보네요.
code 나 c 를 대괄호([]) 로 감싸면 괜찮게 표시되는 것 같습니다.

대괄호로 c 태그 쓰면..

int a[c];

꺽쇠로 c 태그 쓰면..

int a[geshifilter-c];&#10;
[/geshifilter-c]

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

김정균의 이미지

음 지금 테스트를 해 보니, [code]~[/code] 지원과, <c>~</c> 지원 부분이 충돌을 해서 발생하는 문제이네요. [] 괄호를 지원을 하고, code가 아닌 language를 지원하게 하나 보니, <c>를 호환 지원하기 위하여 [c] 가 지원이 되면서 코드상의 배열 이름에 c 가 들어갈 경우, 코드 블럭으로 인식을 해서 발생하는 문제 입니다.

딱히 어떻게 해야 할지 애매하네요. 이미 다 사용을 하고 있는 상황이라 과거 글들을 위해서 옵션을 off 시키기도 그렇군요. 그저 배열 이름에 c를 쓰지 않는 방법 밖에는.. :-(

김정균의 이미지

일단, [c] ~ [/c] 블럭을 사용하지 못하도록 geshifilter를 수정 했습니다.

다음 블럭은 사용 가능 합니다.

<c> ~ </c>
[code lang="c"] ~ [/code]

다음은, geshifliter 수정 내역 입니다.

diff -urNp geshifilter.org/geshifilter.pages.inc geshifilter/geshifilter.pages.inc
--- geshifilter.org/geshifilter.pages.inc   2017-03-10 23:35:08.150087954 +0900
+++ geshifilter/geshifilter.pages.inc   2017-03-10 23:39:53.543721816 +0900
@@ -126,8 +126,9 @@ function _geshifilter_prepare($format, $
     $text = preg_replace_callback($pattern, create_function('$match', "return _geshifilter_prepare_callback(\$match, '$format');"), $text);
   }
   if (in_array(GESHIFILTER_BRACKETS_SQUARE, $tag_styles)) {
+    $tags_string1 = preg_replace ('/\|c\|/', '|', $tags_string);
     // Prepare [foo]..[/foo] blocks.
-    $pattern = '#((?<!\[)\[)('. $tags_string .')((\s+[^\]]*)*)(\])(.*?)((?<!\[)\[/\2\s*\]|$)#s';
+    $pattern = '#((?<!\[)\[)('. $tags_string1 .')((\s+[^\]]*)*)(\])(.*?)((?<!\[)\[/\2\s*\]|$)#s';
     $text = preg_replace_callback($pattern, create_function('$match', "return _geshifilter_prepare_callback(\$match, '$format');"), $text);
   }
   if (in_array(GESHIFILTER_BRACKETS_DOUBLESQUARE, $tag_styles)) {
김정균의 이미지

VC에서 테스트를 해 본적이 없어서 확언은 못하겠지만, 배열 초기화 상태가 동일한지 테스트 해 보세요. 제 생각에는 문제가 있다면 이 부분일 것 같군요. 아래의 코드의 의도는 모든 배열 값을 0으로 설정한 의도 일텐데 말이죠.

int map[51][51]={0};
김정균의 이미지

아 세벌님이 위에서 지적 하셨군요 ..

shint의 이미지


웹 컴파일러인 코드 패드'에서 한 결과와 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&quot;, r, c, map[r][c]);&#10;	if (r == c || r == 0 || c == 0)&#10;	{&#10;		printf(&quot;[return 1] 1\n&quot;);&#10;		return 1;&#10;	}&#10;	else &#10;	{&#10;		if (map[r][c] != 0)&#10;		{&#10;			printf(&quot;[return 2] r:%d c:%d map[r][c]:%d\n&quot;, r, c, map[r][c]);&#10;			return map[r][c];&#10;		}&#10;&#10;		printf(&quot;[return 3] r:%d c:%d map[r][c]:%d\n&quot;, r, c, map[r][c]);&#10;		return map[r][c] = (triangle(r - 1, c) + triangle(r - 1, c - 1)) % 100000000;&#10;	}&#10;	printf(&quot;[return 4] r:%d c:%d map[r][c]:%d\n&quot;, r, c, map[r][c]);&#10;}&#10;&#10;int main() &#10;{&#10;	int r, c;&#10;	//scanf(&quot;%d %d&quot;, &amp;r, &amp;c);&#10;	r = 4;&#10;	c = 4;&#10;&#10;	printf(&quot;[END] %3d\n&quot;, triangle(r + (c - 2), c - 1));&#10;&#10;	return 0;&#10;}&#10;&#10;&#10;&#10;[triangle] r:6 c:3 map[r][c]:0          [return 3] r:6 c:3 map[r][c]:0&#10;[triangle] r:5 c:3 map[r][c]:0          [return 3] r:5 c:3 map[r][c]:0&#10;[triangle] r:4 c:3 map[r][c]:0          [return 3] r:4 c:3 map[r][c]:0&#10;[triangle] r:3 c:3 map[r][c]:0          [return 1] 1&#10;[triangle] r:3 c:2 map[r][c]:0          [return 3] r:3 c:2 map[r][c]:0&#10;[triangle] r:2 c:2 map[r][c]:0          [return 1] 1&#10;[triangle] r:2 c:1 map[r][c]:0          [return 3] r:2 c:1 map[r][c]:0&#10;[triangle] r:1 c:1 map[r][c]:0          [return 1] 1&#10;[triangle] r:1 c:0 map[r][c]:0          [return 1] 1&#10;[triangle] r:4 c:2 map[r][c]:0          [return 3] r:4 c:2 map[r][c]:0&#10;[triangle] r:3 c:2 map[r][c]:3          [return 2] r:3 c:2 map[r][c]:3&#10;[triangle] r:3 c:1 map[r][c]:0          [return 3] r:3 c:1 map[r][c]:0&#10;[triangle] r:2 c:1 map[r][c]:2          [return 2] r:2 c:1 map[r][c]:2&#10;[triangle] r:2 c:0 map[r][c]:0          [return 1] 1&#10;[triangle] r:5 c:2 map[r][c]:0          [return 3] r:5 c:2 map[r][c]:0&#10;[triangle] r:4 c:2 map[r][c]:6          [return 2] r:4 c:2 map[r][c]:6&#10;[triangle] r:4 c:1 map[r][c]:0          [return 3] r:4 c:1 map[r][c]:0&#10;[triangle] r:3 c:1 map[r][c]:3          [return 2] r:3 c:1 map[r][c]:3&#10;[triangle] r:3 c:0 map[r][c]:0          [return 1] 1&#10;[END]  20&#10;Press any key to continue . . .&#10;&#10;
[/geshifilter-c]

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.