2015-11-30 2 views
0

я хочу знать, как я могу найти максимальное и минимальное значение в C++ по значению пользовательского ввода и и пользователь также положить предел для цикла, например:Нахождение максимального и минимального значений в C++ по пользовательского ввода

Напишите программу 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

Сравнить вход с текущим максимумом и если он больше использовать его в качестве нового максимума. – MikeMB

+0

Если у вас было 'int maximum' для хранения максимального значения, вы могли бы использовать' maximum = x? std :: max (максимум, ivalue): ivalue; 'в вашем цикле' for'. Обратите внимание на использование * тернарного условного *. Обратите внимание, что 'maximum' останется неинициализированным, если' value' равно нулю: не читайте его в этом экземпляре. – Bathsheba

+0

* Это означает, что вам не разрешено использовать массив или несколько переменных для этой цели. * - Какую цель? Разрешено ли иметь две переменные для минимума и максимума, как решение, размещенное ниже? – manetsus

ответ

0

вы должны определить максимум как минимальное возможное значение:

int maximum = -INFINITY; 

затем при каждом значении сравнения и установить новый максимум при необходимости:

if (ivalue > maximum) 
    maxumum = ivalue; 

для минимума вы будете использовать один и тот же вид логики ...

1

Чтобы гарантировать, что любое введенное значение будет большим значением, чем то, что вы инициализируете «max», вам необходимо инициализировать его до наименьшего возможного целочисленного значения.

int max = INT_MIN; 

Вам необходимо будет сделать обратное для минимума по тем же причинам.

int min = INT_MAX; 

Кроме того, необходимо следить за итерации цикла для того, чтобы найти положение, когда были введены максимум и минимум.

int count = 1; 

Через каждую итерацию вашего цикла вы увеличите свою переменную счета.

count++; 

Теперь вам понадобятся две переменные для отслеживания положения вашего максимума и минимума.

int maxPos = 1; 
int minPos = 1; 

Мы можем инициализировать позиции до тех пор, пока мы знаем, что по крайней мере первое введенное пользователем значение будет нашим новым максимумом и минимумом.

Затем, в вашем цикле for, вам нужно будет проверить, превышает ли введенное пользователем значение больше текущего максимума, а если оно есть, установить это значение в качестве нового максимума и обновить позицию.

if (ivalue > max) { 
    max = ivalue; 
    maxPos = count; 
} 

Вам также необходимо проверить минимум и назначить его, если введенное пользователем значение меньше текущего минимума, а также обновить положение.

if (ivalue < min) { 
    min = ivalue; 
    minPos = count; 
} 
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; 

}

+0

Вы должны добавить некоторое объяснение того, что делает ваш код. – BrokenBinary