playXP

서브 메뉴

Page. 1 / 12504 [내 메뉴에 추가]
글쓰기
작성자 아이콘 얼음덕후노메
작성일 2012-03-15 19:00:05 KST 조회 222
제목
젠장; 이거 왜 무한루프가 날까요

int main()
{
        char a[30], b[99], ender[31];
        int c1, c2, temp;
        c2 = 1;
        int c2max;

        char c;
        c1 = 0;
        while((c=getchar()) != '\n')
                {
                a[c1++] = c;
                }
        ender[2] = 1;
        ender[c1 + 1] = 0;

        while(a[1] != '#' || ender[2] != 0)
                {
                agrt(a, c1, temp);
                b[c2] = temp;
                c2 = c2 + 1;

                char c;
                c1 = 0;
                while((c=getchar()) != '\n')
                        {
                        a[c1++] = c;
                        }
                ender[2] = 1;
                ender[c1 + 1] = 0;
                }
        c2max = c2;

        for(c2 = 1; c2 < c2max; c2++)
                {
                cout << b[c2] << endl;
                }
        return 0;
}

 

지금 제가 만드려는게

 

#

를 치면 입력을 종료하고 출력값을 내놓아야 하는데

 

무한루프가 돌음. 뭐가 문젠지;;; 좀 도와주셈 ㅠㅠ 시간이 없어서;

지속적인 허위 신고시 신고자가 제재를 받을 수 있습니다.
신고 사유를 입력하십시오:

발도장 찍기
아이콘 슈티나 (2012-03-15 19:03:03 KST)
0↑ ↓0
센스 이미지
뭐하는 코든지 간략하게 설명좀
아이콘 적당새 (2012-03-15 19:03:34 KST)
0↑ ↓0
센스 이미지
나가에몽 왔다
아이콘 얼음덕후노메 (2012-03-15 19:05:37 KST)
0↑ ↓0
센스 이미지
슈티나 // 원래는 이게 엄청나게 긴 코드인데 main만 따온거임.
그러니까, 처음에 저기서 문자열을 받습니다. (abdc라고 칩시다)
그럼 저기 agrt로 들어가서 abdc가 오름차순 정리로 몇번쨰 순위인지 찾아냅니다.
(abcd -> abdc니까 2를 받겠죠)
그럼 그게 b[1]에 저장됩니다.
이런 식으로 엔터를 칠때마다 수치가 하나씩 저장되고
마지막에 #만 입력한 채로 엔터를 치면 입력이 종료되고 저장된 b가 하나씩 출력되는거죠
아이콘 슈티나 (2012-03-15 19:10:35 KST)
0↑ ↓0
센스 이미지
중간에 while문 안에 있는 char c;는 의도된거임? 잘못복붙한거겠징
아이콘 얼음덕후노메 (2012-03-15 19:12:14 KST)
0↑ ↓0
센스 이미지
슈티나 // 잘못 복붙한거 맞음. 원래 저 입력 부분을 input이라고 해서 따로 뺴놓았었음.
아이콘 얼음덕후노메 (2012-03-15 19:12:54 KST)
0↑ ↓0
센스 이미지
그니까 대충



char c;
c1 = 0;
while((c=getchar()) != '\n')
{
a[c1++] = c;
}
ender[2] = 1;
ender[c1 + 1] = 0;
요거를 input으로 뺴놓았었음.
근데 뺴놓으나 안빼놓으나 무한루프는 매한가지지만
아이콘 슈티나 (2012-03-15 19:19:10 KST)
0↑ ↓0
센스 이미지
while(a[1] != '#' || ender[2] != 0)
이거때문인듯
ender[2]가 계속 1로 초기화되니까 while문은 계속 참값
아이콘 서쪽의술 (2012-03-15 19:19:24 KST)
0↑ ↓0
센스 이미지
이게 무슨 소리야
아이콘 슈티나 (2012-03-15 19:21:51 KST)
0↑ ↓0
센스 이미지
a[1] != '#'
이것도 a[0]으로 해야됨.
아이콘 슈티나 (2012-03-15 19:24:25 KST)
0↑ ↓0
센스 이미지
수정전: while(a[1] != '#' || ender[2] != 0)
수정후: while(a[0] != '#')

님이 아까 a[0]부터 안 쓴다고 하셨는데 지금 보니까 a[0]부터 쓰네요
설계가 중간에 바뀌면서 뭔가 잘못된듯함. 원래 코드에서는 a# b# d# ## 이래야 break함
ender[2]는 계속 1이어서 TRUE값을 계속 내놓는데 조건에 왜 들어갔는지 모르겠음
아이콘 적당새 (2012-03-15 19:28:07 KST)
0↑ ↓0
센스 이미지
정보사념체 우는소리
아이콘 얼본좌 (2012-03-15 19:47:03 KST)
0↑ ↓0
센스 이미지
알파벳 정렬 그거죠? ㅋㅋ
댓글을 등록하려면 로그인 하셔야 합니다. 로그인 하시려면 [여기]를 클릭하십시오.
롤토체스 TFT - 롤체지지 LoLCHESS.GG
소환사의 협곡부터 칼바람, 우르프까지 - 포로지지 PORO.GG
배그 전적검색은 닥지지(DAK.GG)에서 가능합니다
  • (주)플레이엑스피
  • 대표: 윤석재
  • 사업자등록번호: 406-86-00726

© PlayXP Inc. All Rights Reserved.