Calcular Indice Estudiantil

Iniciado por ElChulon, 17 Abril 2016, 03:52 AM

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

ElChulon

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.

#include <stdio.h>

int main(){

int m, i, n, j, cant[i], calif[j], sumacant=0, sumacalif=0;
float indice=0;

printf("Bienvenido a Indice Vale\n");
printf("Datos a considerar: NOTA>> 4=A, 3=B, 2=C, D=1, 0=F\n");
printf("\n");
printf("Ingrese la cantidad de materias que esta tomando en este cuatrimestre: "); scanf("%d", &m);

printf("\n");
printf("\n");

printf("\t \t \tRECUERDE LOS DATOS A CONSIDERAR DEL INICIO\n\n");
for (n=0;n<m;n++){
printf("Ingrese la calificacion obtenida (A,B,C,D,F) de la materia %d: ", n+1); scanf("%d", &calif[j]);
printf ("Ingrese la cantidad de creditos de la materia: ", n+1); scanf("%d", &cant[i]);
sumacalif=+calif[j];
sumacant=+cant[i];


}
indice=sumacalif/sumacant;

printf("Su indice cuatrimestral es: %f", indice);

return 0;
}

Gunhack

No estás inicializando correctamente tus arreglos y algunas variables están de más...  :P

Código (cpp) [Seleccionar]
#include <stdio.h>

int main(){

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..
float indice=0;

printf("Bienvenido a Indice Vale\n");
printf("Datos a considerar: NOTA>> 4=A, 3=B, 2=C, D=1, 0=F\n");
printf("\n");
printf("Ingrese la cantidad de materias que esta tomando en este cuatrimestre: "); scanf("%d", &m);

printf("\n");
printf("\n");

printf("\t \t \tRECUERDE LOS DATOS A CONSIDERAR DEL INICIO\n\n");
for (n=0;n<m;n++){ //como no inicializas i o j practicamente accedes a nada dentro de los arreglos...
printf("Ingrese la calificacion obtenida (A,B,C,D,F) de la materia %d: ", n+1); scanf("%d", &calif[j]);
printf ("Ingrese la cantidad de creditos de la materia: ", n+1); scanf("%d", &cant[i]);
sumacalif=+calif[j];
sumacant=+cant[i];


}
indice=sumacalif/sumacant;

printf("Su indice cuatrimestral es: %f", indice);

return 0;
}



Quedaría así... Aunque no entiendo que quieres hacer o que resultado debe de dar ojalá me apoyes con un ejemplo... xD
Código (cpp) [Seleccionar]
#include <stdio.h>

int main(){

int sumacant=0, sumacalif=0, m;
float indice=0;

printf("Bienvenido a Indice Vale\n");
printf("Datos a considerar: NOTA>> 4=A, 3=B, 2=C, D=1, 0=F\n");
printf("\n");
printf("Ingrese la cantidad de materias que esta tomando en este cuatrimestre: "); scanf("%d", &m);

int cant[m], calif[m];

printf("\n");
printf("\n");

printf("\t \t \tRECUERDE LOS DATOS A CONSIDERAR DEL INICIO\n\n");
for (int i = 0; i < m; i++){
printf("Ingrese la calificacion obtenida (A,B,C,D,F) de la materia %d: ", i+1); scanf("%d", &calif[i]);
printf ("Ingrese la cantidad de creditos de la materia: ", i+1); scanf("%d", &cant[i]);
sumacalif=+calif[i];
sumacant=+cant[i];
}

indice=sumacalif/sumacant;

printf("Su indice cuatrimestral es: %f", indice);

return 0;
}

ElChulon

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!

MAFUS

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.

HardForo

Y es por eso que comenta MAFUS que es un peligro andar declarando como unsigned a lo loco......

    unsigned int a,b;
    a = 4; b= 8;

    std::cout << (a-b);  // podria sorprenderte
HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *