所以我在这里有这个简单的程序,我的导师要求进行以下编辑,我看不到它:
对不起,您错过了这一点。因为你的所有功能都是 使用从1到n的索引,其中n可以是100,你永远不会使用 数组索引为零的元素。这意味着最大化 您将在数组中使用的值的数量是99.如果用户真的 想要输入100个值,那么你的解决方案将无法正常工作。
你能再次修复你的解决方案吗?
#include <iostream>
using namespace std;
int readnums(int v[]);
void findmaxmin(int v[],int n,int &mi,int &ma);
int findmidsum(int v[],int n,int mi,int ma);
int main()
{
const int ARRAYVALUE=100;
int v[ARRAYVALUE];
int n=readnums(v),mi,ma;
findmaxmin(v,n,mi,ma);
cout<<"Max= "<<ma<<endl;
cout<<"Min= "<<mi<<endl;
cout<<"Middle sum= "<<findmidsum(v,n,mi,ma)<<endl;
}
int readnums(int v[])
{
cout<<"How many numbers to enter: ";
int n=0;
cin>>n;
for(int a=1;a<=n;a++)
{
cout<<"Enter no. "<<a<<": ";
cin>>v[a];
}
return n;
}
void findmaxmin(int v[],int n,int &mi,int &ma)
{
ma=v[1];
mi=v[1];
for(int a=1;a<=n;a++)
{
if(mi>v[a])mi=v[a];
if(ma<v[a])ma=v[a];
}
}
int findmidsum(int v[],int n,int mi,int ma)
{
int s=0;
for(int a=1;a<=n;a++)
if(v[a]!=mi && v[a]!=ma)
s+=v[a];
return s;
}
答案 0 :(得分:3)
正如我在评论中提到的,您必须从a=0
迭代到a<n
,而不是从a=1
到a<=n
。但您还必须修改以下行:
ma=v[1];
mi=v[1];
......将成为:
ma=v[0];
mi=v[0];
...或者,正如您所提到的,最大计算中断(因为当数组中只有一个索引时v[1]
不存在)。
这是完整的更新代码:
#include <iostream>
using namespace std;
int readnums(int v[]);
void findmaxmin(int v[],int n,int &mi,int &ma);
int findmidsum(int v[],int n,int mi,int ma);
int main()
{
const int ARRAYVALUE=100;
int v[ARRAYVALUE];
int n=readnums(v),mi,ma;
findmaxmin(v,n,mi,ma);
cout<<"Max= "<<ma<<endl;
cout<<"Min= "<<mi<<endl;
cout<<"Middle sum= "<<findmidsum(v,n,mi,ma)<<endl;
}
int readnums(int v[])
{
cout<<"How many numbers to enter: ";
int n=0;
cin>>n;
for(int a=0;a<n;a++)
{
cout<<"Enter no. "<<a+1<<": ";
cin>>v[a];
}
return n;
}
void findmaxmin(int v[],int n,int &mi,int &ma)
{
ma=v[0];
mi=v[0];
for(int a=0;a<n;a++)
{
if(mi>v[a])mi=v[a];
if(ma<v[a])ma=v[a];
}
}
int findmidsum(int v[],int n,int mi,int ma)
{
int s=0;
for(int a=0;a<n;a++) {
if(v[a]!=mi && v[a]!=ma)
s+=v[a];
}
return s;
}
您可以在此处测试上述代码:http://cpp.sh/6ogo
答案 1 :(得分:0)
你的数组包含100个int,因此如果输入的n大于99,你的程序可能会崩溃。
int main()
{
const int ARRAYVALUE=101;
int v[ARRAYVALUE];
int n=readnums(v),mi,ma;
findmaxmin(v,n,mi,ma);
cout<<"Max= "<<ma<<endl;
cout<<"Min= "<<mi<<endl;
cout<<"Middle sum= "<<findmidsum(v,n,mi,ma)<<endl;
}
int readnums(int v[])
{
cout<<"How many numbers to enter: ";
int n=0;
Do{
cout << "Enter a number in the range 1 - 100 :" << endl
cin>>n;
}
while (n > 100 || n < 1);
for(int a=1;a<=n;a++)
{
cout<<"Enter no. "<<a<<": ";
cin>>v[a];
}
return n;
}
固定解决方案,因此用户可以输入100个值,您的数组包含101个整数。