agregar notas altas y bajas en la opcion promedio y gotoxy al imprimir en fila

Iniciado por baselnick, 5 Febrero 2013, 20:32 PM

0 Miembros y 1 Visitante están viendo este tema.

baselnick

buenas tengo que agregar notas altas y bajas entro los alumnos para ver quien queda en primer lugar y el promedio de la sección yo lo hice pero solo el promedio de la sección y ademas tengo que ordenar en la opcion imprimir para que me salga en forma ordenada el nombre del alumno y a un lado la nota y posicion en el curso ayuda plisssssssss




#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define n 1000
void insertar(float *c,char a[][15],int t);
void imprimir(float *c,char a[][15],int t);
void ordenar_nombre(float *c,char a[][15],int t);
void ordenar_calificacion(float *c,char a[][15],int t);
void buscar_nombre(float *c,char a[][15],char *no,int t);
float promedio(float *c,int t);
int existen_datos(int t);
int main(void) {
int opcion,ca=0,salir=0;
float c[n];
char no[n][15],nom[15],opcionn;
do{
system("cls");
printf(" ----------7mo sección A-----------\n");
printf("1 - Insertar Calificaciones.\n");
printf("2 - Promedio sección.\n");
printf("3 - Consultas.\n");
printf("4 - Imprimir Resultados.\n");
printf("5 - Salir.\n");
printf("Ingrese una opcion: ");
scanf("%d",&opcion);
switch(opcion){
case 1: printf("Cantidad de alumnos a ingresar: ");
scanf("%d",&ca);
insertar(c,no,ca);
break;
case 2: if(existen_datos(ca)==1){
printf("Promedio sección: ");
printf("%.2f\n",promedio(c,ca));
system("pause");}
break;
case 3: if(existen_datos(ca)==1){
system("cls");
printf("Ingrese el nombre: ");
scanf("%s",&nom);
buscar_nombre(c,no,nom,ca);}
break;
case 4: if(existen_datos(ca)==1)
imprimir(c,no,ca);
break;
case 5: salir=1; break;
default: printf("Opcion mal ingresada.\n");
system("pause"); break;}
}while(salir==0);
return 0;}
void insertar(float *c,char a[][15],int t){
int i;
for(i=0;i<t;i++){
printf("%d Alumno.\n",i+1); fflush(stdin);
printf("Nombre: "); gets(a);
printf("Calificacion: ");
scanf("%f",&c); printf("\n");}
printf("Alumnos cargados con exito.\n");
system("pause");}
void imprimir(float *c,char a[][15],int t){
int i;
for(i=0;i<t;i++){
printf("---------------\n");
printf("%d Alumno.\n",i+1);
printf("Nombre: %s",a);
printf("\nCalificacion: %.2f\n",c);}
printf("---------------\n");
system("pause");}
void ordenar_nombre(float *c,char a[][15],int t){
int i,j; char auxn[15];float auxc;
for(i=0;i<t-1;i++){
int min = i;
for(j=i+1;j<t;j++)
if(strcmp(a[min],a[j])>0)min=j;
auxc=c;
c=c[min];
c[min]=auxc;
strcpy(auxn,a);
strcpy(a,a[min]);
strcpy(a[min],auxn);}}
void ordenar_calificacion(float *c,char a[][15],int t){
int i,j; char auxn[15];float auxc;
for(i=0;i<t-1;i++){
int min = i;
for(j=i+1;j<t;j++)
if(c[min]>c[j]) min=j;
auxc=c;
c=c[min];
c[min]=auxc;
strcpy(auxn,a);
strcpy(a,a[min]);
strcpy(a[min],auxn);}}
float promedio(float *c,int t){
float p=0;int i;
for(i=0;i<t;i++)
p=p+c;
return p/t;}
int existen_datos(int t){
if(t!=0)
return 1;
printf("No hay calificaciones cargadas.\n"),
system("pause");
return 0;}
void buscar_nombre(float *c,char a[][15],char *no,int t){
int i,p=-1;
for(i=0;i<t;i++)
if(strcmp(a,no)==0){
printf("---------------\n");
printf("Nombre: %s\n",a);
printf("Calificacion: %.2f",c);
printf("\n---------------\n");
p=i+1; break;}
if(p==-1)
printf("No se ha encontrado ningun dato.\n");
system("pause");}

Tryptophan

Buenas  :). En primer lugar te recomiendo identar tu código, digo, es una buena práctica de programación para que quede ordenado y que otro pueda interpretarlo fácilmente... Uno mismo cuando desarrolla en la industria tiene que tocar código que no ve hace meses y es una práctica sana hacerlo. Bien, a ver si entendí...

1) Tenes que agregar notas altas y bajas
2) Tenes que insertarlas ordenadamente
3) Tenes que sacar un promedio

Podes hacer un "InsertaOrdenado()" que reciba a la persona, su nota y al array en donde queres meterlo. Lo insertas en la posición en donde quede entre uno menor y mayor que él, y vas corriendo todos los otros (fijate si vas a usar un array estático o dinámico, u otra estructura). Cuando le den "Imprimir", ya lo tenes ordenado y ahí sacas el promedio recorriendo, sumando y dividiendo.

baselnick

disculpa la molestia pero me mostrarias como queda insertado en el codigo que ya me dio un colapso mental y es para mañana que tengo que entregarlo