Dev - C++ - andaba y dejó de hacerlo

 
Vista:

andaba y dejó de hacerlo

Publicado por carlos (1 intervención) el 10/09/2020 04:46:10
Hola 2 ... ya encontré el error: era en el if para determinar el mayor número y la posición. No encontré cómo borrar el post. Gracias igual!.

era:
1
if(atle[i].medalla>cantimeda){cantimeda=atle[i].medalla;bande=i;}

Hola!. Debe haber algo de variables no refrescadas luego de ejecuciones sucesivas o algo así (que desconozco, sólo conjeturo), porque este ejercicio funcionaba y dejó de hacerlo. No encuentro porqué. ¿Alguno podrá ayudarme?.
¡Muchas gracias!.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/*arreglo de estructura atleta de n elementos, campos nombre, país, medallas y
  devuelva país del que tiene mayor número de medallas */
#include<iostream>
#include<stdlib.h>
#include<locale.h>
using namespace std;
//fflush(stdin); intenté con esto, pero me dio error
struct atleta{
	char nombre[20];
	char pais[20];
	int medalla;
}atle[100];
int main(){
	int i,cant,cantimeda=0,bande=0;
	setlocale(LC_ALL,"spanish");
	cout<<"\ncantidad de atletas: ";cin>>cant;
	system("cls");
	for(i=0;i<cant;i++){
	fflush(stdin);
	cout<<"nombre   "<<i+1<<" : "<<"\t";cin.getline(atle[i].nombre,20,'\n');
	cout<<"país     "<<i+1<<" : "<<"\t";cin.getline(atle[i].pais,20,'\n');
	cout<<"medallas "<<i+1<<" : "<<"\t";cin>>atle[i].medalla;
	if(atle[i].medalla>cantimeda){bande=atle[i].medalla;}
	cout<<"\n"<<endl;
	}
	cout<<"\n\nil capo di tutti capi es "<<atle[bande].nombre<<" de "<<atle[bande].pais<<" con "<<atle[bande].medalla<<" medallas"<<endl;
	cout<<"\n"<<endl;
	system("pause");
	return 0;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

andaba y dejó de hacerlo

Publicado por Nacho (181 intervenciones) el 10/09/2020 10:26:33
Así tiene que ser el if que busca la cantidad mayor de medallas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
using namespace std;
//fflush(stdin); intenté con esto, pero me dio error
struct atleta {
    char nombre[20];
    char pais[20];
    int medalla;
}atle[100];
int main() {
    int i, cant, cantimeda = 0, bande = 0;
    setlocale(LC_ALL, "spanish");
    cout << "\ncantidad de atletas: "; cin >> cant;
    system("cls");
    for (i = 0; i < cant; i++) {
        char c;
        while ((c = getchar()) != '\n' && c != EOF);
        cout << "nombre " << i + 1 << " : " << "\t"; cin.getline(atle[i].nombre, 20, '\n');
        cout << "país " << i + 1 << " : " << "\t"; cin.getline(atle[i].pais, 20, '\n');
        cout << "medallas " << i + 1 << " : " << "\t"; cin >> atle[i].medalla;
        if (atle[i].medalla > cantimeda) {
            cantimeda = atle[i].medalla;
            bande = i;
        }
        cout << "\n" << endl;
    }
    cout << "\n\nil capo di tutti capi es " << atle[bande].nombre << " de " << atle[bande].pais << " con " << atle[bande].medalla << " medallas" << endl;
    cout << "\n" << endl;
    system("pause");
    return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar