Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: bestfriend en 20 Mayo 2015, 05:35 am



Título: [Ayuda]Ejercicio de principiante
Publicado por: bestfriend en 20 Mayo 2015, 05:35 am
Hola tengo un problema con el programa que vengo desarrollando para la primera pregunta del siguiente archivo Ejercicio (https://drive.google.com/file/d/0B-T3GRGCH9STdHUzVm1YOEs1Qmc/view?usp=sharing). El programa me falla a la hora de mostrar el resultado despues de hacer el calculo para el estudiante con mayor o menor promedio y su respectiva "cedula". Me dice 0, no hallo que hacer por favor ayudenme :-\

Aqui les dejo lo que llevo de código:

Código:
//Librerias standard
#include <stdio.h>
#include <stdlib.h>
//Variables Globales
char rsp;
int ced,mayorP,menorP,cedMa,cedMe;     
int cantT=0,cant1=0,cant2=0,cantR=0;
float prom1=0,prom2=0,promR=0,prom,promG;

//Funciones

void entrada(){
     printf("Hola! Bienvenido al programa de ubicacion de la UNIMET\n");
     printf(" \n");
     printf("Por favor ingrese su cedula de identidad\n");
     scanf(" %i",&ced);
     printf(" \n");
     printf("Ingrese su promedio de notas en el rango 0-20\n");
     scanf(" %f",&prom);
     printf(" \n");
}
     
void calculo(){
     
     printf("Reporte del Aspirante\n");
     printf(" \n");
     printf("La cedula del estudiante es: %i\n",ced);
     printf(" \n");
     printf("El promedio del estudiante es: %.0f\n",prom);
     printf(" \n)");
     
     cantT=cantT+1;
     
     if(prom>=18){
                  printf("Usted ha sido ubicado en el trimestre DOS\n)");
                  prom2=prom2+prom;
                  cant2=cant2+1;
                  }     
     else if (prom>=12){
                   printf("Usted ha sido ubicado en el trimestre UNO\n");
                   prom1=prom1+prom;
                   cant1=cant1+1;
                   }
                   
     else{
          promR=promR+prom;
          cantR=cantR+1;
          printf("Rechazado\n");
          }
}
         
void calculoCedula(){
          if(prom>mayorP){
                     prom=mayorP;
                     ced=cedMa;
                     }
          else if(prom<menorP){
               prom=menorP;
               ced=cedMe;
               }
}
     
void calculoPromedios(){
     
     promG=(prom1+prom2+promR)/cantT;
     promR=promR/cantR;
     prom2=prom2/cant2;
     prom1=prom1/cant1;
}

void salida(){
   
     
     
     printf("La cantidad total de alumnos aspirantes es: %i\n",cantT);
     printf("La cantidad de alumnos ubicados en el trimestre DOS es: %i\n",cant2);
     printf("La cantidad de alumnos ubicados en el trimestre UNO es: %i\n",cant1);
     printf("El promedio de los aspirantes al trimestre DOS es: %.2f\n",prom2);
     printf("El promedio de los aspirantes al trimestre UNO es: %.2f\n",prom1);
     printf("El promedio general del trimestre es: %.2f\n",promG);
     printf("El estudiante con mayor promedio fue: %i ",cedMa);
     printf(" con un promedio de: %i\n", mayorP);
     printf("El estudiante con menor promedio fue: %i ",cedMe);
     printf(" con un promedio de: %i\n", menorP);
     
     
     
     }
     
   
//Programa Principal
main(){
       do{
           
           entrada();
           calculo();
           printf(" \n");
           printf("Si desea hacer otra ubicacion presione S\n");
           scanf(" %c",&rsp);
           }while(rsp=='s'|| rsp=='S');//Condicion del Ciclo de Repeticion
           calculoPromedios();
           calculoCedula();
           printf(" \n");
           salida();
           system("pause");
           
       }

Soy un principiante así que cualquier consejo o sugerencia es bienvenido/a . :D


Título: Re: [Ayuda]Ejercicio de principiante
Publicado por: engel lex en 20 Mayo 2015, 05:59 am
en qué falla?

algo que es recomendable evitar es hacer todo a base de variables globales... cada cosa debe ir con sus variables locales a menos que no hayan muchas opciones


Título: Re: [Ayuda]Ejercicio de principiante
Publicado por: bestfriend en 20 Mayo 2015, 22:02 pm
Me falla en reconocer quien fue el alumno con mayor/menor promedio y su respectiva cedula :(