Ver Mensaje Individual
  #6 (permalink)  
Antiguo 26/05/2014, 15:33
Avatar de sorfistaweb
sorfistaweb
 
Fecha de Ingreso: febrero-2014
Ubicación: Guatemala
Mensajes: 21
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: Problema con arreglos y funciones en C++

Gracias vosk y vangodp por responder, en cuanto a declarar el array antes de pedir n, si estaba en un error, gracias por eso, también agregue la otra función fflush_stdin();

Entonces, ahora, lógicamente si me permite ingresar la cantidad de datos en el arreglo que se indica en n, sin necesidad por el momento pensaría de usar memoria dinámica, PERO me da otro error, ingreso el valor de n, se crea luego el arreglo y llamo a la función para llenar el arreglo, todo avanza sin problema, pero al llegar al ultimo dato a ingresar, me aparece la pausa, pero se congela de nuevo, sin poder continuar con el programa, les dejo siempre el código, agradezco su ayuda.

#include <iostream>

using namespace std;

//Variables
int op=0, n=0;

struct estudiantes{

int carnet;
char nombre[50];
int edad;

};

//Constantes
#define PAUSA_MENSAJE system("pause")
#define PAUSA system("pause>nul")
#define LIMPIA_PANTALLA system("cls")

//Funciones
void ingresaDatos(estudiantes x[]);
void ordenaDatos();
void muestraDatos();
void grabaArchivoyCierra();
void abrirArchivoylectura();
void buscaDatos();

void fflush_stdin() {
int c;
while((c = getchar()) != EOF && c != '\n');
}

int main(){

//estudiantes *preg = reg;

while(op != 5){

LIMPIA_PANTALLA;

cout << "\n\n\n\n\n\n\t\t\tControl de estudiantes" << endl;
cout << "\n\t\t\t1. Ingresar estudiantes";
cout << "\n\t\t\t2. L estudiantes";
cout << "\n\t\t\t3. Lista de estudiantes";
cout << "\n\t\t\t4. Lista ordenada de estudiantes";
cout << "\n\t\t\t5. Salir";
cout << "\n\n\t\t\tEscribe tu opcion: ";

cin >> op;

switch(op){
case 1:
LIMPIA_PANTALLA;
cout << "\n\n\t\tCuantos estudiantes vas a ingresar: ";
cin >> n;

estudiantes reg[n];

ingresaDatos(reg);

break;
case 2:
break;
case 3:
break;
case 4:
break;
case 5:

op = 5;

break;



}

} //Fin bucle while


}//Fin programa

/* Funcion que permite llenar el arreglo
de estructuras con los datos correspondientes */
void ingresaDatos(estudiantes x[]){

int i=0,temp;
bool fin=false;

for(i=0; i<n; i++){

LIMPIA_PANTALLA;
cout << "\n\n\n\n\n\t\t\tAlumno [" << i+1 << "]" << endl;
cout << "\n\t\t\tIngresa No. de carnet: ";
cin >> x[i].carnet;
fflush_stdin();

cout << "\n\t\t\tNombre del estudiante: ";
cin >> x[i].nombre;
cout << "\n\t\t\tEdad del estudiante: ";
cin >> x[i].edad;

}//Fin for

cout << "\n\n\n\t\t\t";
PAUSA_MENSAJE;

}