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;
答案 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;数字。这两个不相同。