Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Blaster en 28 de Diciembre 2016, 00:43
-
Hola, tengo una duda de por que no me sale bien el resultado de este ejercicio.
El ejercicio dice lo siguiente:
Ingrese las notas con que un alumno aprobó todas las materias durante su carrera universitaria, se deberá ingresar la cantidad de materias que tiene la misma.
Se desea conocer su: PROMEDIO, MEJOR NOTA, PEOR NOTA.
El código compila bien pero los errores que me dan son los siguientes:
. El promedio da como resultado cualquier cosa cuando lo saco en una calculadora Real
. Me repite el mismo numero cuando deseo conocer el mayor y menor, es decir repite el ultimo numero que pongo en la nota de la ultima materia.
Acá les dejo el código y si me pueden dar una mano sería mucho agradecimiento!!
#include <iostream>
using namespace std;
int main(int argc, char *argv[]) {
int materias,i,nota;
int prom, mnota, bnota, acum;
char codi;
cout<<"Ingrese la cantidad de materias que asiste: ";
cin>>materias;
for (i=1; i<materias; i++) {
acum = 0;
cout<<"Ingrese la notas de la materia:"<<i<<": ";
cin>>nota;
(acum = acum+nota);
}
if (i = 1) {
mnota = nota;
bnota = nota;
}
if (nota>mnota) {
mnota = nota;
}
if (nota<bnota) {
bnota = nota;
}
(prom = acum/materias);
cout<<"--------------------------";
cout<<endl;
cout<<"El promedio total es de: "<<prom;
cout<<endl;
cout<<"La nota más alta es: "<<mnota;
cout<<endl;
cout<<"La nota más baja es: "<<bnota;
cout<<endl;
cout<<"--------------------------";
cout<<endl;
return 0;
}
-
Hola Blaster.
No se mucho de c++, pero tienes errores que se ven fácil sin saber mucho de c++.
La variable que usas para acumular las notas, la inicializas a 0 cada vez que se ejecuta el bucle for, por lo cual solo guarda el valor de la última nota introducida.
Si quiero introducir 4 materias a la primera pregunta, no hay ningún sitio donde guardes estos valores, porque solo tienes una variable que vas sobreescribiendo a cada paso en el bucle for, deberías usar un array.
Te dejo un ejemplo de como lo resolvería yo, también he añadido unos bucles for anidados donde ordeno el array de menor a mayor, esto lo hice así, porque como te dije, no se mucho de c++ y no se si habrá algún método o función que se encargue de ello, eso sí, el ejemplo funciona y hace lo que pide el enunciado.
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int materias,i,j,nota;
int prom, mnota, bnota, acum;
char codi;
cout<<"Ingrese la cantidad de materias que asiste: ";
cin>>materias;
int notas[materias];
acum = 0;
for (i=0; i<materias; i++)
{
cout<<"Ingrese la notas de la materia:"<<i+1<<": ";
cin>>notas[i];
(acum = acum+notas[i]);
}
for(i=0; i<materias; i++)
{
for(j=i+1; j<materias; j++)
{
if(notas[j]<notas[i])
{
nota=notas[j];
notas[j]=notas[i];
notas[i]=nota;
}
}
}
bnota = notas[0];
mnota = notas[materias-1];
(prom = acum/materias);
cout<<"--------------------------";
cout<<endl;
cout<<"El promedio total es de: "<<prom;
cout<<endl;
cout<<"La nota más alta es: "<<mnota;
cout<<endl;
cout<<"La nota más baja es: "<<bnota;
cout<<endl;
cout<<"--------------------------";
cout<<endl;
return 0;
}
Saludos. ;D