Hack x Crack - Comunidad de Seguridad informática

Programación => C / C++ => Mensaje iniciado por: pingoroxo en Abril 16, 2013, 05:06:15 am

Título: Porque da este error
Publicado por: pingoroxo en Abril 16, 2013, 05:06:15 am
Código: [Seleccionar]
#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
Título: Re:Porque da este error
Publicado por: ravenheart en Mayo 13, 2013, 09:55:19 am
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.
Título: Re:Porque da este error
Publicado por: MadJ0ker en Mayo 13, 2013, 12:56:44 pm
ola a todos estaba terminando un pequeño ejercicio cuando me di cuenta de un 'ERROR'
Hola

Cuida tu ortografía.

Saludos :)
Título: Re:Porque da este error
Publicado por: pingoroxo en Mayo 14, 2013, 08:51:38 pm
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
Título: Re:Porque da este error
Publicado por: ravenheart en Mayo 14, 2013, 09:00:24 pm
gracias por corregirme

De nada.