I'm new to structs and wanted to implement the for loop when creating one. Create a program that records the first name, last name, age, gender, and phone number of 5 people. To elaborate it, use counters with the for function, declare different types of variables. At the end of the entire program, it should return all the information that has been entered.
#include <iostream>
using namespace std;
//crear un programa (con estructuras) que registre la nombre,apellido,edad,sexo y telefono de 5 personas;
struct persona {
string nombre;
string apellido;
int edad;
char sexo;
int telefono;
};
int main()
{
persona individuo[5];
int i;
for (i=0;i<5;i++){
cout<<"Ingrese el nombre de la persona "<<i+1;cout<< ": "<<endl;
cin>>individuo[i].nombre;
cout<<endl;
cout<<"Ingrese el apellido de la persona "<<i+1;cout<< ": "<<endl;
cin>>individuo[i].apellido;
cout<<endl;
cout<<"Ingrese la edad de la persona "<<i+1;cout<< ": "<<endl;
cin>>individuo[i].edad;
cout<<endl;
cout<<"Ingrese el sexo de la persona "<<i+1; cout<< ": "<<endl;
cin>>individuo[i].sexo;
cout<<endl;
cout<<"Ingrese el telefono de la persona "<<i+1; cout<< ": "<<endl;
cin>>individuo[i].telefono;
cout<<endl;
}
cout<<"Informacion registrada: "<<endl;
for (i=1; i<6 ; i++){
cout<<"El nombre de la persona "<<i; cout<< " es: "<<endl;
cout<<individuo[i].nombre;
cout<<"El apellido de la persona "<<i; cout<< " es: "<<endl;
cout<<individuo[i].apellido;
cout<<"La edad de la persona "<<i; cout<< " es: "<<endl;
cout<<individuo[i].edad;
cout<<"El sexo de la persona "<<i; cout<< " es: "<<endl;
cout<<individuo[i].sexo;
cout<<"El telefono de la persona "<<i; cout<< " es: "<<endl;
cout<<individuo[i].telefono;
}
return 0;
}
The program compiles and runs, the problem is that when I finish filling in the data of the first person, the program ends but the spaces of the other people appear (2,3,4,5) blank or empty by which I don't understand.
Ingrese el nombre de la persona 1:
Andres
Ingrese el apellido de la persona 1:
Moreno
Ingrese la edad de la persona 1:
20
Ingrese el sexo de la persona 1:
m
Ingrese el telefono de la persona 1:
3206103053
Ingrese el nombre de la persona 2:
Ingrese el apellido de la persona 2:
Ingrese la edad de la persona 2:
Ingrese el sexo de la persona 2:
Ingrese el telefono de la persona 2:
Ingrese el nombre de la persona 3:
Ingrese el apellido de la persona 3:
Ingrese la edad de la persona 3:
Ingrese el sexo de la persona 3:
Ingrese el telefono de la persona 3:
Ingrese el nombre de la persona 4:
Ingrese el apellido de la persona 4:
Ingrese la edad de la persona 4:
Ingrese el sexo de la persona 4:
Ingrese el telefono de la persona 4:
Ingrese el nombre de la persona 5:
Ingrese el apellido de la persona 5:
Ingrese la edad de la persona 5:
Ingrese el sexo de la persona 5:
Ingrese el telefono de la persona 5:
Informacion registrada:
El nombre de la persona 1 es:
El apellido de la persona 1 es:
La edad de la persona 1 es:
1877912247El sexo de la persona 1 es:
El telefono de la persona 1 es:
0El nombre de la persona 2 es:
El apellido de la persona 2 es:
La edad de la persona 2 es:
7085316El sexo de la persona 2 es:
╝El telefono de la persona 2 es:
1977705713El nombre de la persona 3 es:
El apellido de la persona 3 es:
La edad de la persona 3 es:
1977708437El sexo de la persona 3 es:
∟El telefono de la persona 3 es:
6422268El nombre de la persona 4 es:
El apellido de la persona 4 es:
La edad de la persona 4 es:
1977666752El sexo de la persona 4 es:
¶El telefono de la persona 4 es:
-2El nombre de la persona 5 es:
Process returned -1073741819 (0xC0000005) execution time : 21.016 s
Press any key to continue.
your algorithm is fine, the problem is that when creating the array
persona individuo[5];
, the array is created with the indices of the following form [0, 1, 2, 3, 4] (that is, it starts from 0 to 4, which makes a total of 5 elements), and in your loopfor (i=1;i<6;i++){
start your counter from 1 to 5, this generates that in your array you willpersona individuo[ ];
use the indices 1,2,3,4,5 but the array has [0,1,2,3,4 ] then the index 0 does not have any data stored and also in the last iteration offor
wheni=5
you will assign a structure to individual[5] , but the array only has fromindividuo[0]
toindividuo[4]
SOLUTION: I recommend you make the following changes:for (i=1;i<6;i++)
you replace it withfor (i=0;i<5;i++)
this will generate that when displaying the message it starts from 0 so to correct that the following change iscout<<"Ingrese el xxxx de la persona "<<i;cout<< ": "<<endl;
you change itcout<<"Ingrese el nombre de la persona "<<i+1;cout<< ": "<<endl;
here the i will bei+1