使用C编程的连续整数

时间:2014-09-30 04:42:52

标签: c loops integer

Example input: 20 10 5 20 2 20 20 20 2 2 0

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

我刚刚开始编程本学期并需要项目帮助。如果我的问题不清楚,我道歉。

所以基本上我必须输入正整数,直到我输入" 0"将结束该计划。我不允许使用数组(无论这意味着什么)。

#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;
}

如何存储这些多个数字,以便我不会重复上一个数字,并在每次输入时将重复数字增加1?我不能向我的教授求助;他只是告诉我谷歌。

&#34;某个工程设备由连续数字(整数)的输入控制。 如果存在相同数量的运行,则设备可以优化其性能。因此我们 我想安排数据,以表明运行即将来临。写一个C程序 读取一系列数字并打印出形式(n * m)中的每一行数字 m是重复n次的数字。请注意,运行只能包含一个数字。该 输入数字以零结束,停止设备。&#34;

1 个答案:

答案 0 :(得分:3)

此分配似乎基于行程编码(RLE)的半生不熟的知识。无论如何,这里有一个伪代码,可以完成它的要求。

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

您可以在代码中实现它,然后&#34;优化&#34;它可以删除重复的代码,并处理极端情况(例如&#34;空&#34;输入,单个数字输入等)

修改为了清楚起见,该作业要求运行&#39;数字,但样本输出显示&#39;计数&#39;数字。这两个相同。