PGR21.com
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
Date 2009/05/12 14:33:10
Name 이준태
Subject 꿀호떡a님을 비롯한 c언어에 대해 아시는 분들께
미리 답변주시는 모든 분들께 행운이 가득하시길 바랍니다.
네 오전에 c언어 관련 질문글 올렸던 사람인데요.
관련하여 작성해보았습니다. 제가 제대로 작성을 하였는지 확인좀 부탁드리겠습니다.

#include <stdio.h>
#include <stdlib.h>

void main(void)
{

int node[10][8] = {{5,60,65,70,70,90,0,0},{4,65,60,75,70,0,0,0},{6,60,80,75,70,100,100,0},{3,55,55,70,0,0,0,0},{2,60,65,0,0,0,0,0},{4,50,80,75,70,0,0,0},{6,50,60,70,75,90,95,0},{5,65,70,70,100,85,0,0},{7,60,55,65,70,90,50,40},{6,70,80,80,95,40,45}};// 이부분은 무시하셔도됩니다. 쉽게 설명하자면 10개 노드에 사람이 최소2명에서 8명까지 있는 것입니다. 각 사람은 50-100까지의 숫자를 가지고있구요. for문 한번 돌때마다 모든 사람이 숫자가 1씩 줄어듭니다.
그리고 어떤 사람이 숫자0이 될 경우 그 노드에 다른사람이 1이상의 숫자를 가지고있더라도 그 노드자체는 더이상 숫자가 줄어들지않습니다.
int time = 0; // 횟수입니다. 총159번 실행되게됩니다.
int En = 1;
int result = 50;

  while(time<160)
  {
        int i, j;
        time = time + 1;
        
        for(i=0;i < 10;++i)
        {
                
        for(j=1;j <= node[i][0];++j)
        {
                if(node[i][j] != 0)
                {
                node[i][j] = node[i][j] - En;
                }
                else
                {
                result = result - node[i][0]; // 숫자0이된 사람이 있는 노드의 총 사람수만큼 결과값에서 빼게됩니다.
                node[i][0] = 0;
                }
                                
        }
        }
printf("time = %i\n",time);
printf("result = %i\n",result);
  }
}

엄청 간단한거같은데 왜이렇게 힘든지 모르겠네요. 지금 제가 컴파일을 할 수가 없는지라 뭐가 문제인지도 파악이 힘든 상태입니다.

한번 보시고 문제점이 있는지 알려주시면 감사하겠습니다. 좋은 하루 되세요^^

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
WizardMo진종
09/05/12 14:43
수정 아이콘
어휴;; 배열에 데이터 넣을때 2차 배열 이잖아요?


{
,
,
,
,
}
식으로 넣으세요 눈아프네요;;;
이준태
09/05/12 15:01
수정 아이콘
WizardMo진종님// 그런식으로도 되는건가요? 저도 보기 별로안좋아서 답답해하고있었는데 ;;
MoreThanAir
09/05/12 15:02
수정 아이콘
프로그램을 짜시는데 컴파일을 할 수 없는 상황이라면 어떻게 프로그램을 짜겠다는건지 모르겠습니다...ㅡ.ㅡ;

일단 로직상으로 문제가 있어 보이는 곳은 사람 중 한 명이라도 0이 되면 더 이상 1씩 감소하지 않겠다고 했는데

else 부분을 실행하고 난 후에도 다음 번 i에 대한 루프에서 그 노드에서 첫번째 사람의 값이 0이 아니라면 여전히 1씩 빼게 되겠군요.

else 부분에서 0이 된 사람이 있는 순간 break를 써서 바깥쪽 루프로 뛰어나가야 할 것 같고

노드 상에 비트를 하나 더 둬서 한 명이라도 0을 가지고 있는지 명시해야겠군요. 그 비트가 설정되어있다면 continue로 다음 노드로 넘어가야겠군요.
MoreThanAir
09/05/12 15:05
수정 아이콘
아래 질문을 보니 0이 하나라도 생기면 사람 수를 명시하던 부분을 0으로 바꾸어 버리는군요. 그렇게 한다면 지금 로직으로 별 문제 없을 것 같습니다.
MoreThanAir
09/05/12 15:06
수정 아이콘
printf 문에서 %i를 %d로 바꿔야 에러가 안나겠네요.
이준태
09/05/12 15:09
수정 아이콘
MoreThanAir님// 아 지금 당장 할 수 없다는 소리였습니다. ^^ 결국 컴파일은해봐야겠지요.
그리고 각 노드상에 맨처음 비트에 각 노드에 속해있는 사람의 숫자만큼의 숫자가 기입되어있습니다.(첫번째 노드의 경우는 5네요) if문에서 else부분에 사람의 값이 0이 되는 경우 node[i][0] = 0; 이부분을 통해 첫번째 숫자를 0으로바꿔버립니다. 그렇게해서 해결하도록 하긴했습니다.

후~ 역시 정확히 알지못하는 상황에서 하려니 힘드네요. 답변주셔서 감사합니다.
이준태
09/05/12 15:11
수정 아이콘
MoreThanAir님// 네이버에서 검색해보니까 %d랑 %i랑 별차이없다고해서 일단 그렇게해뒀습니다. 실제로 작성할때는 분명 에러가 무수히 발생할것이므로 다 뜯어고쳐야겠죠.
MoreThanAir
09/05/12 15:13
수정 아이콘
이준태님// 플래그에 i도 쓰이나요? 모르고 있었던 사실이네요-
09/05/12 15:57
수정 아이콘
이미 0이 나온 노드를 처리하지 않는 코드가 필요하겠네요
저런식으로라면 result가 -값으로 계속 갑니다.

그리고 이문제가 무엇을 의미하는지 모르겠네요;;
result가 무얼 구하는지
꿀호떡a
09/05/12 16:04
수정 아이콘
맞는 것 같습니다. 컴파일해봤는데 별 에러가 없네요.
Memex님// 한 번 처리하고 나면 node[i][0] = 0; 이 되기 때문에, for 조건에 걸려서 그 노드는 절대로 다시 처리될 수 없습니다. 따라서 -값으로 계속 갈 이유는 없을 것 같네요.
이준태
09/05/12 16:22
수정 아이콘
꿀호떡a님// 정말 감사드립니다. 제일 중요한게 컴파일이 무난히 되는지가 중요했는데 컴파일을 해보셨군요. 다시 한번 감사드립니다. 제일 중요한 뼈대는 완성이 된거군요. 뭐 이제 살을 붙이긴해야하지만 그건 아무것도 아니죠. ^^ 감사드립니다. (__)

Memex님// 아 솔직히 저도 이게 무슨 의미가 있는지는 모르겠네요. 어느분 부탁으로 해드리는거라 간략히 설명만 들은거라서요.
우리결국했어
09/05/12 16:35
수정 아이콘
그저 외계어일뿐..
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
55480 워드작업하기 용이한 소형기기 추천부탁드립니다. [8] zeros1918 09/05/12 1918
55479 오레, 보꾸, 와타시의 차이점을 알려주세요~ [13] Latanta27643 09/05/12 27643
55478 엑셀에서 자꾸 공유위반이라고 뜹니다. [1] peoples elbow3203 09/05/12 3203
55477 인터넷 창이 자꾸 닫힙니다. ㅠㅠ [10] 재민이고모2140 09/05/12 2140
55476 전성기 시절 기준으로.. 종족별 확실한 스나이핑 카드는.. [16] 마르키아르2231 09/05/12 2231
55475 꿀호떡a님을 비롯한 c언어에 대해 아시는 분들께 [12] 이준태1592 09/05/12 1592
55474 파마질문~ (파일있음) [1] on&on1803 09/05/12 1803
55472 재테크 관력 책 추천바랍니다. [1] 개스통2130 09/05/12 2130
55471 텔넷 프로그래밍 질문입니다..ㅠㅠ [4] EZrock2114 09/05/12 2114
55470 항방작계 가야하는데 복장 질문있습니다. [4] dldlmam2135 09/05/12 2135
55469 운전자보험, 필요할까요? [3] amoelsol2129 09/05/12 2129
55468 혹시 청춘전 보유하고 계신 분 있나요? rAchdom.1696 09/05/12 1696
55467 pmp 코원o2 제품 질문드립니다. [3] Enjoy1809 09/05/12 1809
55464 그래픽 카드 질문입니다. [3] Le35nd1553 09/05/12 1553
55463 박정석 선수 지난 경기 벤치에 앉아 있었나요? [4] 선미남편2090 09/05/12 2090
55462 (급질) 다나와 표준 컴퓨터 구입시 문제..(그래픽 카드) [4] hi~마린2098 09/05/12 2098
55461 솔비가 1년정도 사궜다는 남자가... [11] 슈투카3990 09/05/12 3990
55460 지역화가 뭐죠..? [9] The탱자Q1581 09/05/12 1581
55459 오메가 3 와 비타민에 대한 질문 [5] on&on1860 09/05/12 1860
55458 c언어 관련 질문입니다. 답변해주시면 감사하겠습니다. [6] 이준태1793 09/05/12 1793
55457 샤프펜슬에 대한 질문입니다. [7] hoho9na3296 09/05/12 3296
55455 악몽을 자주 꾸고 있습니다. 해결책(?) 도움 구합니다. [8] Surrender2237 09/05/12 2237
55454 버스와는 약간 다른 "지트니" 에 대해서 궁금합니다. [4] Xell0ss2959 09/05/12 2959
목록 이전 다음
댓글

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