Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: ElChulon en 17 Abril 2016, 03:52 am



Título: Calcular Indice Estudiantil
Publicado por: ElChulon en 17 Abril 2016, 03:52 am
Programa "sencillo" que me esta dando problemas al imprimir el indice. Pido la cantidad de materias, pido la calificación obtenida de la materia y después  los créditos educativos de ese materia. Los voy sumando cada uno en su respectivo arreglo, hago una división, lo guardo en una variable tipo float, imprimo. No me da el índice correcto, casi siempre me da 0 o un numero "entero" sin números a la derecha del 0.

Código
  1. #include <stdio.h>
  2.  
  3. int main(){
  4.  
  5. int m, i, n, j, cant[i], calif[j], sumacant=0, sumacalif=0;
  6. float indice=0;
  7.  
  8. printf("Bienvenido a Indice Vale\n");
  9. printf("Datos a considerar: NOTA>> 4=A, 3=B, 2=C, D=1, 0=F\n");
  10. printf("\n");
  11. printf("Ingrese la cantidad de materias que esta tomando en este cuatrimestre: "); scanf("%d", &m);
  12.  
  13. printf("\n");
  14. printf("\n");
  15.  
  16. printf("\t \t \tRECUERDE LOS DATOS A CONSIDERAR DEL INICIO\n\n");
  17. for (n=0;n<m;n++){
  18. printf("Ingrese la calificacion obtenida (A,B,C,D,F) de la materia %d: ", n+1); scanf("%d", &calif[j]);
  19. printf ("Ingrese la cantidad de creditos de la materia: ", n+1); scanf("%d", &cant[i]);
  20. sumacalif=+calif[j];
  21. sumacant=+cant[i];
  22.  
  23.  
  24. }
  25. indice=sumacalif/sumacant;
  26.  
  27. printf("Su indice cuatrimestral es: %f", indice);
  28.  
  29. return 0;
  30. }


Título: Re: Calcular Indice Estudiantil
Publicado por: Gunhack en 17 Abril 2016, 06:16 am
No estás inicializando correctamente tus arreglos y algunas variables están de más...  :P

Código
  1. #include <stdio.h>
  2.  
  3. int main(){
  4.  
  5. int m, i, n, j, cant[i], calif[j], sumacant=0, sumacalif=0; // la variable "i" o "j" tienen basura, entonces esto genera arreglos indefinidos..
  6. float indice=0;
  7.  
  8. printf("Bienvenido a Indice Vale\n");
  9. printf("Datos a considerar: NOTA>> 4=A, 3=B, 2=C, D=1, 0=F\n");
  10. printf("\n");
  11. printf("Ingrese la cantidad de materias que esta tomando en este cuatrimestre: "); scanf("%d", &m);
  12.  
  13. printf("\n");
  14. printf("\n");
  15.  
  16. printf("\t \t \tRECUERDE LOS DATOS A CONSIDERAR DEL INICIO\n\n");
  17. for (n=0;n<m;n++){ //como no inicializas i o j practicamente accedes a nada dentro de los arreglos...
  18. printf("Ingrese la calificacion obtenida (A,B,C,D,F) de la materia %d: ", n+1); scanf("%d", &calif[j]);
  19. printf ("Ingrese la cantidad de creditos de la materia: ", n+1); scanf("%d", &cant[i]);
  20. sumacalif=+calif[j];
  21. sumacant=+cant[i];
  22.  
  23.  
  24. }
  25. indice=sumacalif/sumacant;
  26.  
  27. printf("Su indice cuatrimestral es: %f", indice);
  28.  
  29. return 0;
  30. }


Quedaría así... Aunque no entiendo que quieres hacer o que resultado debe de dar ojalá me apoyes con un ejemplo... xD
Código
  1. #include <stdio.h>
  2.  
  3. int main(){
  4.  
  5. int sumacant=0, sumacalif=0, m;
  6. float indice=0;
  7.  
  8. printf("Bienvenido a Indice Vale\n");
  9. printf("Datos a considerar: NOTA>> 4=A, 3=B, 2=C, D=1, 0=F\n");
  10. printf("\n");
  11. printf("Ingrese la cantidad de materias que esta tomando en este cuatrimestre: "); scanf("%d", &m);
  12.  
  13. int cant[m], calif[m];
  14.  
  15. printf("\n");
  16. printf("\n");
  17.  
  18. printf("\t \t \tRECUERDE LOS DATOS A CONSIDERAR DEL INICIO\n\n");
  19. for (int i = 0; i < m; i++){
  20. printf("Ingrese la calificacion obtenida (A,B,C,D,F) de la materia %d: ", i+1); scanf("%d", &calif[i]);
  21. printf ("Ingrese la cantidad de creditos de la materia: ", i+1); scanf("%d", &cant[i]);
  22. sumacalif=+calif[i];
  23. sumacant=+cant[i];
  24. }
  25.  
  26. indice=sumacalif/sumacant;
  27.  
  28. printf("Su indice cuatrimestral es: %f", indice);
  29.  
  30. return 0;
  31. }
  32.  


Título: Re: Calcular Indice Estudiantil
Publicado por: ElChulon en 17 Abril 2016, 06:42 am
Sigue dándome un valor que no es :(

el resultado que quiero lograr el índice, el cual sale de la suma de todas las calificaciones obtenidas digitadas dividido entre la suma de todos los créditos digitados.

Por ej, curse dos materias en este cuatrimestre, cada materia tenia 5 créditos, en cada materia saque una A (4) sumo los créditos (10) y sumo la calificación (8) y los divido, 10/8= 1.25

la variable es tipo float pero me da 1.00 :( creo que me esta redondeando o algo así

gracias por simplificarme el programa!


Título: Re: Calcular Indice Estudiantil
Publicado por: MAFUS en 17 Abril 2016, 10:15 am
Las operaciones entre enteros da resultado entero. Convierte uno de los operandos en real, mediante un cast,  multiplicándole 1.0 o cambiando su tipo de int a float y la división te devolverá un real.


Título: Re: Calcular Indice Estudiantil
Publicado por: HardForo en 21 Abril 2016, 04:55 am
Y es por eso que comenta MAFUS que es un peligro andar declarando como unsigned a lo loco......

Código
  1.    unsigned int a,b;
  2.    a = 4; b= 8;
  3.  
  4.    std::cout << (a-b);  // podria sorprenderte