Descarga la aplicación para disfrutar aún más
Esta es una vista previa del archivo. Inicie sesión para ver el archivo original
/********************************************************************************************************* 1-) Generar el TDA ALUMNOS conteniendo los siguientes campos: DNI (entero) APELLIDO Y NOMBRE ( 60 caracteres) NOTA PRIMER PARCIAL (entero) NOTA SEGUNDO PARCIAL (entero) NOTA PROMEDIO (real) CONDICION ( 20 caracteres) 2-) Se sabe que como máximo hay 90 alumnos. Generar un VECTOR en programa principal del tipo ALUMNOS. 3-)Generar la función CARGA_ALUMNOS que permita SOLAMENTE el ingreso de: DNI – APELLIDO Y NOMBRE – NOTA PRIMER PARCIAL – NOTA SEGUNDO PARCIAL De cada alumno. Esta carga finaliza con DNI cero. NOTAS (0 a 10). Utilizar función LeeControlDato. Para el ingreso y verificacion de los valores. 4-) Generar la función PROCESO que calcule el promedio y la condición de cada alumno, según: Ambas notas >= 8 condición “PROMOCIONA” Alguna nota o las dos < 6 condición “REPROBADA” Otro caso condición “CURSADA” 5-) Permitir consultas por DNI, informando la NOTA PROMEDIO y CONDICION correspondiente. Finaliza la consulta con DNI a consultar igual a cero. FUNCION BUSQUEDA. (Solo busca el DNI a consultar dentro del vector creado) 6-) Ordenar por nota promedio en forma descendente ************************************************************************************************************/ #include <stdio.h> #include <string.h> #define N 90 /***************************DECLARACION DEL TIPO DE DATO alumno ********************************************/ typedef struct { int DNI; char AyN[61]; int N1, N2; float NP; char COND[21]; }alumno; /*********************** DECLARACION DE FUNCIONES *********************************************************/ int LEECONTROL (int, int); int CARGA (alumno [], int); void PROCESO(alumno [], int); void MOSTRAR (alumno[], int); int BUSQUEDA (alumno[], int, int); void ORDEN (alumno [], int); main() { alumno VA[N]; /******* DECLARACION DEL VECTOR del TIPO alumno *****/ int CANT, DNICONSU, POS; CANT = CARGA(VA,N); PROCESO(VA,CANT); MOSTRAR (VA, CANT); printf("\n Ingresar DNI A CONSULTAR (FINALIZA CON CERO) : " ); scanf("%d",&DNICONSU ); while(DNICONSU != 0) { POS = BUSQUEDA(VA, DNICONSU, CANT); if (POS >= 0) printf("\n\t NOTA PROMEDIO %.2f \t %s",VA[POS].NP, VA[POS].COND); else printf("\n NO EXISTE EL DNI A CONSULTAR"); printf("\n Ingresar DNI A CONSULTAR (FINALIZA CON CERO) : " ); scanf("%d",&DNICONSU ); } ORDEN (VA, CANT); printf("\n LISTADO ORDENADO POR NOTA PROMEDIO"); MOSTRAR (VA, CANT); } /********************************************************************************************************/ int CARGA (alumno V[], int NN) { int I = 0; alumno AUX; printf("\n Ingresar DNI DEL ALUMNO (FINALIZA CON CERO) : " ); scanf("%d",&AUX.DNI); while( AUX.DNI != 0 && I < NN) { printf("\n Ingresar Apellido y Nombre : "); fflush(stdin); gets(AUX.AyN ); printf("\n Ingresar NOTA 1 "); AUX.N1 = LEECONTROL(0,10); printf("\n Ingresar NOTA 2 "); AUX.N2 = LEECONTROL(0,10); V[I]= AUX; I++; printf("\n Ingresar DNI DEL ALUMNO (FINALIZA CON CERO) : " ); scanf("%d",&AUX.DNI); } return (I); } /********************************************************************************************************/ int LEECONTROL (int LI, int LS) { int DATO, MARCA =0; do{ if( MARCA == 1) printf("\n INGRESE NUEVAMENTE: "); scanf("%d",&DATO); MARCA = 1; }while(DATO < LI || DATO > LS); return (DATO); } /*******************************************************************************************************/ void PROCESO (alumno V[], int NN) { int I; for (I=0; I< NN; I++) { V[I].NP = (float) (V[I].N1 + V[I].N2)/2; if(V[I].N1 >= 8 && V[I].N2 >=8) strcpy (V[I].COND, "PROMOCIONA"); else if(V[I].N1 < 6 || V[I].N2 < 6) strcpy (V[I].COND, "REPROBO"); else strcpy (V[I].COND, "CURSO"); } } /****************************************************************************************************************/ void MOSTRAR (alumno V[], int NN) { int I; printf ("\n\n\t DATOS DE LOS ALUMNOS ") ; printf("\n\t DNI \t APELLIDO Y NOMBRE \t NOTA PROMEDIO \tCONDICION"); for (I=0; I< NN; I++) printf("\n\t %8d \t %-20s %.2f %-15s", V[I].DNI, V[I].AyN, V[I].NP, V[I].COND); } /*****************************************************************************************************************/ int BUSQUEDA (alumno V[], int DATO, int NN) { int POSI, I; POSI = -1; I = 0; while (POSI == -1 && I< NN) if (V[I].DNI == DATO) POSI = I; else I++; return (POSI); } /********************************************************************************************************/ void ORDEN(alumno V[], int NN) { alumno AUX; int I, J; for(I=0;I<NN-1;I++) for(J=0;J<NN-I-1;J++) if((V[J].NP < V[J+1].NP)) { AUX=V[J]; V[J]=V[J+1]; V[J+1]=AUX; } } /********************************************************************************************************/
Compartir