Случайные числа в массиве if - PullRequest
0 голосов
/ 09 июля 2020

Я пытаюсь найти самый высокий элемент в массиве, который содержит возрастные числа. Дело в том, что он вернет случайные числа в строке if. Я хочу понять лог c, стоящий за этим.

Язык - C ++, и я уверен, что это очень легко решить.

#include <iostream>
#include <conio.h>

using namespace std;

int main()
{
    int edad[100], n, i, emayor=0;
    float suma;
    
    do {
     cout << "Ingrese su edad: ";
     cin >> edad[i];
     suma+=edad[i];
     i++;
     cout << "\n\nDesea Ingresar Edades? (1/0) ";
     cin >> n;
    } while(n==1 && i<100);
    cout << "La sumatoria de edades es: "<< suma;
    
    if (edad[i]>emayor) {
      emayor=edad[i];
      cout << "\nLa edad mayor es: "<<emayor;
    }
    getch();
    return 0;
}

1 Ответ

0 голосов
/ 09 июля 2020

Ваша программа имеет неопределенное поведение, поскольку вы используете i и suma без их инициализации.

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

Используйте

int edad[100] = {}; // Initialize the elements to zero.
int n = 0;          // It's a good practice to initialize all variables.
int i = 0;
int emayor = 0;
float suma = 0;

do{
 cout << "Ingrese su edad: ";
 if ( ! (cin >> edad[i]) )
 {
    // Error in reading from cin.
    // Add error handling code, or break out of the loop.
    break;
 }

 suma += edad[i];
 i++;
 cout << "\n\nDesea Ingresar Edades? (1/0) ";
 cin >> n;
} while ( n == 1 && i < 100 );

...

...