Hack x Crack - Comunidad de Seguridad informática
Programación => C / C++ => Mensaje iniciado por: pingoroxo en Abril 16, 2013, 05:06:15 am
-
#include <iostream>
#define MAX_ALUMNOS 30 //el maximo de alumnos por curso es 30
using namespace std;
struct Datos
{
int nota;
int dni;
};
struct Alumnos
{
struct Datos datos[MAX_ALUMNOS];
int cantidad; //contiene el tamaño real de alumnos que existen
};
void ingresar_datos(struct Alumnos& alumno);
main()
{
struct Alumnos alumno;//instancia la estructura Alumnos
alumno.datos[0].dni=1; //deja el dni !0 para que entre en el while
ingresar_datos(alumno);
system("pause");
}
void ingresar_datos(struct Alumnos& alumno)
{
alumno.cantidad=0;
while(alumno.datos[alumno.cantidad].dni != 0 )
{
cout<<"DNI: ";
cin>>alumno.datos[alumno.cantidad].dni;
alumno.cantidad++;
//cout<<alumno.datos[alumno.cantidad].dni<<endl;
}
}
ola a todos estaba terminando un pequeño ejercicio cuando me di cuenta de un 'ERROR'
este es el fragmento del programa que lo unico que hace llama a la funcion ingresar_datos(), la funcion pide un dni y se repetira siempre y cuando dni sea distinto de 0......pero el error esta en la linea que realiza el postincremento "alumno.cantidad++" ,la linea que esta debajo, que esta comentada muestra el valor de dni en cada iteracion, y dni empieza a tener valores basura y nunca suma mas de 4 iteraciones. Despues de un buen rato cabeceandome me di cuenta que al poner la variable "alumno.cantidad++" como primera instruccion del while todo se arreglaba es decir "alumno.cantidad++" no podia ir debajo del "cin" o empezaba a tirar ese error feo alguien sabe que es lo que pasa que estoy haciendo mal porque al poner la variable "alumno.cantidad++" debajo del cin el dni empieza a tener otros valores a los ingresados
-
El problema es que estás poniendo el incremento entre el cin y el cout, y no estás sacando por pantalla el mismo DNI que has guardado.
alumno.cantidad++ tiene que ir al final.
Si lo pones al principio, parece que funciona pero te estás saltando el primer DNI.
-
ola a todos estaba terminando un pequeño ejercicio cuando me di cuenta de un 'ERROR'
Hola
Cuida tu ortografía.
Saludos :)
-
ola a todos estaba terminando un pequeño ejercicio cuando me di cuenta de un 'ERROR'
Hola
Cuida tu ortografía.
Saludos :)
gracias por corregirme, ahora el mundo puede seguir su curso normal XD
-
gracias por corregirme
De nada.