Ver Mensaje Individual
  #9 (permalink)  
Antiguo 27/05/2014, 20:37
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++

Hola amigos, vengo a molestarlos un poco de nuevo, siempre con el mismo programa, ya esta solucionado lo que preguntaba antes, pero tengo el siguiente problema, aparte de permitir llenar el arreglo de estructuras con carnet, nombre y edad, el programa no debe permitir carnet repetidos al momento de ingresar datos, ya hice una funcion, probe whiles, fors y nada, no me sale, miren como va el codigo, que solucion me proponen??

#include <iostream>
#include <cstdlib>

using namespace std;

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

struct estudiantes{

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

};

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

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

int main(){

estudiantes *preg;
preg = new estudiantes[100];

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;

ingresaDatos(preg);

}
break;
case 2:{}
break;
case 3:{

LIMPIA_PANTALLA;
muestraDatos(preg);

}
break;
case 4:{}
break;
case 5:

delete [] preg;
op = 5;

break;

}
} //Fin bucle while

}//Fin programa

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

for(int 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 >> j;
//Aqui va la verificacion del carnet
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;

}

void muestraDatos(estudiantes x[]){

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

cout << "\n\n" << x[i].carnet << endl;
cout << x[i].nombre << endl;
cout << x[i].edad << endl;

}

PAUSA;

}

int evaluaValor(int a, estudiantes x[]){
bool fin = else;
for(int i=0; i<n; i++){
if(a == x[i].carnet){

fin = true;

}
else{

fin = false;

}
}
return fin;
}