2014-09-30 2 views
-1
Example input: 20 10 5 20 2 20 20 20 2 2 0 

Output: 
(20*5) 
(10*1) 
(5*1) 
(2*3) 

방금이 학기를 프로그래밍하기 시작했으며 프로젝트에 도움이 필요합니다. 내 질문에 불분명 한 경우 사과드립니다.C 프로그래밍을 사용하는 복잡한 정수

그래서 기본적으로 "0"을 입력 할 때까지 프로그램을 끝낼 때까지 양의 정수를 입력해야합니다. 배열을 사용하는 것은 허용되지 않습니다. 내가 입력 한 것마다 이전의 숫자를 중복되지 것입니다 및 1 중복되는 번호를 증가 할 수 있도록

#include <stdio.h> 


int main() 
{ 
int number, count=0 

while(1) 
{ 
    scanf("%d",&number); 
    if (number!=0) 
    { 
     count++; continue; 
    } 
    else 
    { 
     printf("%d*%d",number,count); 
     break; 
    } 
    return 0; 
} 

어떻게 이러한 여러 번호를 저장합니까? 나는 교수에게 도움을 청할 수 없다. 그는 단지 나에게 google에 그것을 말한다. 동일한 수의 런 있으면

"A 특정 공학 장치가 연속 번호 (정수). 의 입력에 의해 제어되고, 상기 장치는 따라서 우리 가되도록 데이터를 배치하고 싶다. 그것의 성능을 최적화 할 수있다 이 일련의 숫자를 읽고 (n * m) 형태로 번호를 인쇄하는 C 프로그램을 작성하십시오. m은 숫자가 n 번 반복 된 숫자입니다. 숫자 하나만 입력하면됩니다. 입력 번호는 0으로 끝나기 때문에 장치가 정지합니다. "

+0

배열을 사용할 수없는 이유는 무엇입니까? 주파수를 계산하려면 배열을 사용하여 효과적으로 수행 할 수 있습니다. 아이디어를 얻으려면 [이 게시물] (http://stackoverflow.com/questions/11053607/count-how-many-times-an-element-occurs-in-an-array-java)을 확인하십시오. –

+0

그가 특별히 배열을 사용할 수 없다고 말하면 연결된 목록을 사용할 수는 있지만 할당의 정신에 어긋나는 것 같습니다. – IllusiveBrian

+0

죄송합니다. 번호는 –

답변

3

이 할당은 RLE (run length encoding)에 대한 지식을 기반으로 한 것 같습니다. 어쨌든, 여기에 질문하는 것을 수행하는 의사 코드가 있습니다.

in = read next number from input 
current_num = in // let the 1st number in list be current_num 
count = 1 

loop 
    in = read next number from input 
    if (in == 0) break // we are done, get out of loop 

    else if (in == current_num) count += 1 

    else  // run has ended, print it and start new run 
     print current_num * count 
     current = in 
     count = 1 

end loop 

print current_num * count // we exited the loop before printing the last run 
           // so do it outside the loop 

당신은 코드에서 구현 한 후 반복 코드를 제거하고

(등 "빈"입력, 단일 번호 입력으로) 코너 케이스를 돌봐 "최적화"수 편집 그냥 명확하게하기 위해 할당은 숫자의 '실행'을 요구하지만 샘플 출력에는 숫자의 '개수'가 표시됩니다. 이 두 가지는 이 아니고과 같습니다.

+0

위 출력은 그리 많지 않습니다! – chouaib

+0

이것이 코드가 아마도 요구했던 것 인 반면, 샘플 출력이 연속 된 중복 인쇄가 아닌 인쇄하기 전에 전체 실행을 읽고 구성한 것 같으므로 할당에 맞지 않습니다. 이것은 실제로 할당보다 의미가 있습니다. – IllusiveBrian

+0

@chouaib 나는 그 질문에 대해서도 똑같이 언급했다. 할당은 숫자의 '실행'을 요구하지만, 소위 샘플 출력은 숫자의 '개수'를 보여줍니다. 질문에 주어진 샘플 결과가 잘못되었습니다. –

관련 문제