我正在尝试以下练习,但在此过程中陷入困境。
编写一个读取任意整数序列的完整程序 从标准输入,并将它们写入标准输出 排序顺序并删除所有重复项。你可以假设 输入最多包含100个整数。
我很难理解数组并试图弄清楚我需要做什么。我写了一些代码,但我有一种强烈的感觉,我还没有完成它。我并没有要求别人为我完成它,我只是想要一些关于如何开始或正确方向的指导。任何帮助是极大的赞赏。
#include <iostream>
using namespace std;
int main()
{
//I believe this is a start.
int numbers [100];
//declaring a counter
int i;
//making a for loop to count the integers from 1 to 100
for (i=0; i<100; i++)
{cin>>numbers[i];}
//This is the point where I got lost
if (i<100)
cout<<numbers[i]<<""<<endl;
}
答案 0 :(得分:0)
为了对某些int编号进行排序,你可以通过多种方式尝试一些你想要的东西。
一种方法是在第一次循环中读取数据时,将数据放入数组中的正确位置,使用另一个循环并移位新数据,直到达到较小的数字。然后将新数据放在前面。
如果您找到相同的数字,您可以忽略新数据并使用中断并获取新数据。
for (i=0; i<100; i++)
{
int temp ;
cin>> temp;
int j;
for(j = i; j>= 0 ; j--)
{
if(j != 0 && number[j-1]== temp)
break ;
if(j != 0 && number[j-1] > temp)
{
number[j] = number[j-1] ;
}
else
{
number[j] = temp ;
break;
}
}
}
我认为这种方式最好,但你有其他方式: 使用 bubble sort 或 Quick sort 之类的算法对所有数字进行排序,然后使用循环删除所有重复的数字。
int temp[100] ;
int k = 0 ;
temp[0] = number[0] ;
for(int i = 1 ; i < 100 ; i++)
{
if(temp[k] != number[i])
{
k++;
temp[k] = number[i] ;
}
}