
21/04/2012, 20:56
|
| | Fecha de Ingreso: mayo-2011 Ubicación: Bs.As Argentina
Mensajes: 193
Antigüedad: 13 años, 9 meses Puntos: 3 | |
Respuesta: Estructuras Ok ahi lo cambie.
Este es todo el programa que tengo Cita: #include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
//Defino la estructura
typedef struct alumno{
char nomApe[50];
char dni[10];
int nota;
}alumno;
//Declaración de funciones
int cargaAlumno();
int buscoAlm();
void menu();
int cargoNota();
void promedio();
//Función principal
int main(){
struct alumno a[35];
//Llamo al menu
menu(a);
printf("\n");
system("pause");
}
//***************************************
//Menu del programa
void menu(struct alumno b[]){
int mn=0;
int con=0;
int valbool=0;
while(mn==0){
printf("Ingrese 1 para ingresar al menu\n");
scanf("%i",&mn);
if(mn==1){
//Limpio la pantalla
system("cls");
int op;
printf("*****************************\n");
printf("Carga de alumnos: Ingrese 1\n");
printf("Carga de notas: Ingrese 2\n");
printf("Promedio por alumno: Ingrese 3\n");
printf("*****************************\n");
printf("Ingrese la opcion que desee\n");
scanf("%i", &op);
//Menu
switch(op){
case 1:
//Llamo a la funcion carga de alumno
con = cargaAlumno(b);
break;
case 2:
//Llamo a la funcion que se encarga de buscar y cargar
// Notas por alumno
valbool = buscoAlm(b,con);
if(valbool == 1){
cargoNota(b, con);
}
break;
case 3:
//Funcion que calcula el promedio de los alumnos (primero ordeno)
promedio(b, con);
break;
}
mn=0;
//cierre del if
}
}
}
//***************************************
//Carga de los alumnos
int cargaAlumno(struct alumno b[]){
int i, con=0,res=0, reg=0, registros=1;
int a=0;
for(i=0;i<35;i++){
//Cargo los datos
printf("Ingrese el nombre y apellido %i\n", registros);
fflush(stdin);
gets(b[i].nomApe);
printf("Ingrese el DNI %i \n", registros);
fflush(stdin);
gets(b[i].dni);
//Cuento la cantidad de registros ingresados
con++;
//Verifico si el usuario desea agregar otro registro
printf("¿Desea ingresar otro registro? 1. si , 2. no \n");
scanf("%i", ®);
if(reg == 1){
printf("Ingrese un nuevo registro: \n");
}
else{
i=35;
}
//Aviso que no se permitan mas de 35 registro
if(con == 35){
printf("\n");
printf("No se permiten mas de 35 registros\n");
break;
}
printf("\n");
}
//Retorno la cantidad de alumnos
return con;
}
//***************************************
//Busco el alumno que deseo ingresar las notas
int buscoAlm(struct alumno b[], int valor){
//struct alumno doc;
int i, con=0, registros=1, reg;
int val = 0;
char dni[10];
//Ingreso el alumno a buscar
printf("Ingrese el dni del alumno para buscarlo\n");
fflush(stdin);
gets(dni);
//Busco el alumno
for(i=0;i<valor;i++){
if(strcmp(dni, b[i].dni) == 0){
val = 1;
break;
}
else{
printf("El alumno no existe\n");
val = 0;
break;
}
}
return val;
}
//***************************************
//Ingreso la nota del alumno
int cargoNota(struct alumno b[], int valor){
int i, con=0, registros=1, reg;
printf("Las notas son entre 1 y 10\n");
//Ingreso las notas
for(i=0;i<valor;i++){
printf("Ingrese la nota %i \n", registros);
scanf("%i", &b[i].nota);
//Valido que la nota sea entre 1 y 10
if(b[i].nota < 1 || b[i].nota > 10){
printf("Nota incorrecta\n");
return;
}
con++;
registros++;
//Verifico si el usuario desea agregar otro nota
printf("¿Desea ingresar otro nota? 1. si , 2. no \n");
scanf("%i", ®);
if(reg == 1){
printf("Ingrese otra nota: \n");
}
else{
i=5;
}
//Valido que no ingrese mas de 5 notas
if(con == 5){
printf("No se permiten mas de 5 notas por alumno\n");
break;
}
}
return registros;
}
//Promedio por alumno
void promedio(struct alumno b[], int valor){
int i=0, j=0, res=0, con=1, prom=0;
struct alumno aux;
//Ordeno de forma ascendente
for(i=0;i<valor;i++){
for(j=i+1;j<valor;j++){
if(strcmp(b[i].nomApe, b[j].nomApe) > 0){
aux = b[i];
b[i] = b[j];
b[j] = aux;
}
}
printf("Alumno: %s \n", b[i].nomApe);
}
for(i=0;i<valor;i++){
if(((i+1)<valor) && (strcmp(b[i].nomApe , b[i+1].nomApe) == 0)){
con++;
res = res + b[i].nota;
prom = res / con;
}
else{
con++;
res = res + b[i].nota;
prom = res / con;
printf("El alumno %s, tiene un promedio de %i \n", b[i].nomApe, prom);
con=0;
res=0;
prom=0;
}
}
} Agradezco mucho tu ayuda! |