Logo Studenta

Ej1_Estructura

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;
 }
}
/********************************************************************************************************/

Continuar navegando

Materiales relacionados

13 pag.
ESTRUCTURA

User badge image

medicenslam

30 pag.
Clase C - Estructuras

Francisco I. Madero

User badge image

aguanteelpityalvarez

13 pag.
Nueva guía de estructuras

Francisco I. Madero

User badge image

aguanteelpityalvarez