我想知道如何通过用户输入值找到c ++中的最大值和最小值,并且用户还为for循环设置了限制,例如:
编写一个c ++程序,该程序最初从用户获取一个整数值作为循环的限制。这意味着循环将执行与用户输入相同的时间。然后循环将整数值作为用户的输入,直到达到循环限制。 您只需要使用一个变量,该变量将用于从循环内的用户重复输入。这意味着您不能为此目的使用数组或多个变量。之后,您的程序将计算输入值的总和,它们的平均值,最小值和最大值以及输入这些值的位置。
我写了,但坚持最大和最小..这是
#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <string>
using namespace std;
int main(){
int value;
int ivalue;
int sum=0;
int average;
int x,y;
cout << "Enter loop limit : "; cin >> value ;
cout<<endl;
cout<<endl;
for( x=0;x<=value-1;x++){
cout << "Enter "<<x+1<<" value : "; cin >> ivalue;
sum=sum+ivalue;
}
cout<<endl;
cout<<endl;
cout << "Sum of entered values : " <<sum <<endl;
cout << "Average of entered values : "<< sum/value<<endl;
}
答案 0 :(得分:1)
要确保输入的任何值都是比初始化“max”更大的值,您需要将其初始化为尽可能小的整数值。
int min = INT_MAX;
出于同样的原因,你需要做相反的事情。
int count = 1;
您还需要跟踪循环的迭代,以便在输入最大值和最小值时找到位置。
count++;
通过循环的每次迭代,您将递增计数变量。
int maxPos = 1;
int minPos = 1;
现在您需要两个变量来跟踪最大值和最小值的位置。
if (ivalue > max) {
max = ivalue;
maxPos = count;
}
我们可以将头寸初始化为一个,因为我们知道至少第一个用户输入的值将是我们新的最大值和最小值。
然后,在for循环中,您将需要测试用户输入的值是否大于当前最大值,如果是,则将该值设置为新的最大值并更新位置。
if (ivalue < min) {
min = ivalue;
minPos = count;
}
如果用户输入的值小于当前最小值并更新位置,您还需要测试最小值并进行分配。
{{1}}
答案 1 :(得分:0)
您应该将最大值定义为最低可能值:
int maximum = -INFINITY;
然后在每个值比较并在必要时设置新的最大值:
if (ivalue > maximum)
maxumum = ivalue;
至少你会使用相同类型的逻辑...
答案 2 :(得分:0)
int input;
int max = 0;
int min = 0;
cout << "Enter number: ";
while (input != -1)
{
cin >> input;
if(input != -1)
{
if(input > max)
{
max = input;
}
if(input < min)
{
min = input;
}
}
}
cout <<"Max: " << max << " Min " << min << endl;
}