아이큐 테스트하는 문제를 for문과 if문을 이용해서 풀어보려는데 잘 안되네요.
제가 풀려는 방법은 1~9까지의 수를 다 대입하는 방식으로해서 조건 만족 시키면 num[0]~num[8]까지의 값을 출력하는 것인데 어디가 문제가 있는건가요? 실행은 되는데 실행시키면 오류가 떠요.
질문 정리
1. 제가 작성한 것에서 어디가 오류가 있고 어떻게 고쳐야 할까요?
2. 저 문제를 풀 수 있는 더 좋은 방법이 있을까요? 있다면 코드만 올려주시면 안될까요? 제가 직접 분석해보고 싶습니다. 현재 저는 c언어 열혈강의 책밖에 공부 안해봤어요. 헤더파일도 stdio.h밖에 모르는 상태;
3. 제 방식 원시인?
아이큐 테스트 문제 링크 : http://memorist.tistory.com/39
#include <stdio.h>
int main(void)
{
int num[9];
int a=0,b=0;
for(num[a]=1;num[a]<10;num[a]++)//num[0]
{
a+=1;//a=1
for(num[a]=1;num[a]<10;num[a]++)//num[1]
{
a+=1;//a=2
for(num[a]=1;num[a]<10;num[a]++)//num[2]
{
a+=1;//a=3
for(num[a]=1;num[a]<10;num[a]++)//num[3]
{
a+=1;//a=4
for(num[a]=1;num[a]<10;num[a]++)//num[4]
{
a+=1;//a=5
for(num[a]=1;num[a]<10;num[a]++)//num[5]
{
a+=1;//a=6
for(num[a]=1;num[a]<10;num[a]++)//num[6]
{
a+=1;//a=7
for(num[a]=1;num[a]<10;num[a]++)//num[7]
{
a+=1;//a=8
for(num[a]=1;num[a]<10;num[a]++)//num[8]
{
if((10*num[0]+num[1])*num[2] == 10*num[3]+num[4],
num[3]*10+num[4]+10*num[5]+num[6] == 10*num[7]+num[8],
num[0]!=num[1]!=num[2]!=num[3]!=num[4]!=num[5]!=num[6]!=num[7]!=num[8])//num[0]~num[8]은 모두 같지 않다.
{
for(b=0;b<9;b++)
printf("num[%d] = %d",b,num[b]);//조건을 충족시키는 num[0]~num[8]까지 출력
break;
}
}
}
}
}
}
}
}
}
}
return 0;
}
제가 풀려는 방법은 1~9까지의 수를 다 대입하는 방식으로해서 조건 만족 시키면 num[0]~num[8]까지의 값을 출력하는 것인데 어디가 문제가 있는건가요? 실행은 되는데 실행시키면 오류가 떠요.
질문 정리
1. 제가 작성한 것에서 어디가 오류가 있고 어떻게 고쳐야 할까요?
2. 저 문제를 풀 수 있는 더 좋은 방법이 있을까요? 있다면 코드만 올려주시면 안될까요? 제가 직접 분석해보고 싶습니다. 현재 저는 c언어 열혈강의 책밖에 공부 안해봤어요. 헤더파일도 stdio.h밖에 모르는 상태;
3. 제 방식 원시인?
아이큐 테스트 문제 링크 : http://memorist.tistory.com/39
#include <stdio.h>
int main(void)
{
int num[9];
int a=0,b=0;
for(num[a]=1;num[a]<10;num[a]++)//num[0]
{
a+=1;//a=1
for(num[a]=1;num[a]<10;num[a]++)//num[1]
{
a+=1;//a=2
for(num[a]=1;num[a]<10;num[a]++)//num[2]
{
a+=1;//a=3
for(num[a]=1;num[a]<10;num[a]++)//num[3]
{
a+=1;//a=4
for(num[a]=1;num[a]<10;num[a]++)//num[4]
{
a+=1;//a=5
for(num[a]=1;num[a]<10;num[a]++)//num[5]
{
a+=1;//a=6
for(num[a]=1;num[a]<10;num[a]++)//num[6]
{
a+=1;//a=7
for(num[a]=1;num[a]<10;num[a]++)//num[7]
{
a+=1;//a=8
for(num[a]=1;num[a]<10;num[a]++)//num[8]
{
if((10*num[0]+num[1])*num[2] == 10*num[3]+num[4],
num[3]*10+num[4]+10*num[5]+num[6] == 10*num[7]+num[8],
num[0]!=num[1]!=num[2]!=num[3]!=num[4]!=num[5]!=num[6]!=num[7]!=num[8])//num[0]~num[8]은 모두 같지 않다.
{
for(b=0;b<9;b++)
printf("num[%d] = %d",b,num[b]);//조건을 충족시키는 num[0]~num[8]까지 출력
break;
}
}
}
}
}
}
}
}
}
}
return 0;
}
진짜 열심히 오류 찾으려고 노력했는데 모르겠습니다.
a==b==c ㄴㄴ a==b && b==c
\\0
\\0
정말기내요
으 모르겟당ㅋ
Im in nature//그러면 너무 많지 않나요? 뭔가 다른 방법이 있을거 같은데;
아 이거 for문 돌리는 방법부터 잘못됬었네 이거 for문만 고치면 됨ㅋㅋ
nn// ㄴㄴ z = (10*num[0]+num[1])*num[2]; x = 10*num[3]+num[4]; c = 10*num[5]+num[6]; v = 10*num[7]+num[8]; if(z==x && x+c==v) 이렇게 하면 보기좋기까지함
아 이거 그 a+=1 앞에다가 지역변수 내에서 1번 시행되고 그 다음부터는 시행 안되게하는 함수 쓰면되겠네