【发布时间】:2019-03-15 06:28:20
【问题描述】:
问题是删除所有最大的数字 例如: 辛:1 2 3 4 5 cout: 1 2 3 4
辛:5 1 2 3 5 cout: 1 2 3
辛:5 5 1 2 5 cout: 1 2
辛:5 5 5 1 5 cout: 1
这里出了问题: 每当我的最大数字与其他位置一起位于第一个和最后一个位置时,代码都会打印出错误的结果 请查看这些示例以更好地理解: 辛: 5 5 1 2 5 预期cout:1 2 但它 cout: 5 1
辛:5 5 1 5 5
预期 cout:1
但它 cout: 5
我认为问题出在删除功能中,但无论我重新检查多少次,我都无法弄清楚出了什么问题,如果有人能帮我解决这个问题,我将非常高兴。 对不起我草率的写作和糟糕的英语 这是我的代码:
#include <iostream>
using namespace std;
void Insert(int a[] ,int n)
{
for (int i=0; i<n; i++)
{
cout << "a[" << i << "]= ";
cin >> a[i];
}
}
void Delete(int a[], int n, int Biggestt)
{
int BiggestLocation;
for (int i=0; i<n-1; i++)
{
if (a[i]==Biggestt)
{
BiggestLocation=i;
}
}
for (int i=BiggestLocation; i<n-1; i++)
{
a[i]=a[i+1];
}
}
int Biggest(int a[],int n)
{
int Biggesttt=a[0];
for (int i=0; i<n; i++)
{
if (Biggesttt<a[i])
{
Biggesttt=a[i];
}
}
return Biggesttt;
}
void PrintOut(int a[],int n)
{
for (int i=0; i<n; i++)
{
cout << a[i] << " ";
}
}
int main()
{
int n,OriginalCount;
int Count=0;
cout << "Insert n: ";
cin >>n;
int a[100];
Insert(a,n);
int Biggestttt=Biggest(a,n);
for (int i=0; i<n-1; i++)
{
if(a[i]==Biggestttt)
{
Count++;
}
}
OriginalCount=Count;
while(Count!=0)
{
{
Delete(a,n,Biggestttt);
}
Count--;
}
if (a[n-1]==Biggestttt && OriginalCount==0)
{
PrintOut(a,n-1);
}
else if (a[n-1]!=Biggestttt && OriginalCount!=0)
{
PrintOut(a,n-OriginalCount);
}
else if (a[n-1]==Biggestttt && OriginalCount!=0)
{
PrintOut(a,n-OriginalCount-1);
}
return 0;
}
【问题讨论】:
-
您需要 C 数组(例如
int a[100];)还是可以使用 C++ 向量(例如vect <int> a;)? (它使事情变得更容易) -
标题告诉我什么?请你纠正它;)我不知道它应该告诉我什么。
标签: c++