Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema con promedio y nota

Estas en el tema de Problema con promedio y nota en el foro de C/C++ en Foros del Web. Cordial Saludo Compañeros Por favor me pueden colaborar, con el siguiente caso. Estoy con este programa, el cual al introducirle 4 notas, me saca el ...
  #1 (permalink)  
Antiguo 14/11/2009, 19:08
 
Fecha de Ingreso: octubre-2009
Mensajes: 7
Antigüedad: 14 años, 6 meses
Puntos: 0
Problema con promedio y nota

Cordial Saludo Compañeros

Por favor me pueden colaborar, con el siguiente caso. Estoy con este programa, el cual al introducirle 4 notas, me saca el promedio. Solo que debo hacer que si el promedio es >3. Sale el mensaje alumno aprobó, pero si promedio es <3. Sale el otro mensaje alumno perdió.

Solo que:
1.Cuando lo corro y entro de ingresar las notas y empiezo a digitar las notas. En la Nota 1, la escibo doy enter y en la parte inferior junto al titulo de promedio, me aparece el mensaje alumno perdió. Sin ni siquiera digitar las otras notas y si las digito todas igual ese mensaje continua ahí y si digito notas por encima de 3 lo mismo.
2.Las notas deben ir de 1 a 5.El detalle esta en la validación. Tanto notas como promedio están definidas tipo float y en ocasiones me sale mensaje de error, que no puede pasar de float a entero o viceversa.

Muchas gracias, por su ayuda y colaboración.

Atte.

jimgom

Las lineas del programa en el que trabajo
//FUNCION PARA CAPTURAR NOTAS
void capturanotas(void)
{
char ing='*';
char ing2='*';
int curso=0,codigo=0,result2=0,inicio,fin,result,mater ia;
while (ing2!='N')
{
result=haycupo3();
if (result<30)
{
ing2='S';
while(ing!='R')
{
clrscr();
curso=0;
pintamenu5(0,0);
gotoxy(41,7);
cin>>curso;
if (curso > 5)
{
gotoxy(30,1);
cout<<"ERROR CURSO NO VALIDO";
getch();
} else
{
result=haycupo2(curso);
if(result==6)
{
gotoxy(30,1);
cout<<"ERROR CURSO SIN ALUMNOS";
getch();
} else
ing='R';
}
}
ing='*';
while(ing!='R')
{
clrscr();
pintamenu5(curso,0);
codigo=0,result2=0;
gotoxy(41,9);
cin>>materia;
if (materia > 11)
{
gotoxy(30,1);
cout<<"ERROR MATERIA NO VALIDA";
getch();
} else
{
pintamenu5(curso,materia);
ing='R';
}
}
ing='*';
while(ing!='R')
{
clrscr();
pintamenu5(curso,materia);
codigo=0,result2=0;
gotoxy(41,11);
cin>>codigo;
{
result2 = hayalumno(codigo);
if (result2 == 0)
{
gotoxy(30,1);
cout<<"ALUMNO NO EXISTE";
getch();
}
else
{
fin = curso*6 - 1;
inicio = fin - 6;
result2 = result2 -1;
if(result2 < inicio)
{
gotoxy(30,1);
cout<<"ALUMNO PERTENECE A OTRO CURSO";
getch();
} else
if(result2 > fin)
{
gotoxy(30,1);
cout<<"ALUMNO PERTENECE A OTRO CURSO";
getch();
} else
{
ing='R';
}
}
}
}
gotoxy(41,13);
pintanom(result2);
cout<<' ';
pintaape(result2);
pidenotas(materia,result2);


ing='*';
gotoxy(25,22);
cout<<"CAPTURA MAS NOTAS S/N [ ]";
gotoxy(49,22);
ing2=getch();
if(ing2=='s')
{
ing2='S';
}
if(ing2!='S')
{
ing2='N';
}
} else
{
ing2='N';
gotoxy(30,1);
cout<<"ERROR CURSO SIN ALUMNOS";
getch();

}
}
}
//FUNCION PARA CONSULTAR NOTAS
void consulta1(void)
{
char ing='*';
char ing2='*';
int curso=0,inicio,fin,result,materia;
while (ing2!='N')
{
result=haycupo3();
if (result<30)
{
ing2='S';
while(ing!='R')
{
clrscr();
curso=0;
pintamenu6(0,0);
gotoxy(41,7);
cin>>curso;
if (curso > 5)
{
gotoxy(30,1);
cout<<"ERROR CURSO NO VALIDO";
getch();
} else
{
result=haycupo2(curso);
if(result==6)
{
gotoxy(30,1);
cout<<"ERROR CURSO SIN ALUMNOS";
getch();
} else
ing='R';
}
}
ing='*';
while(ing!='R')
{
clrscr();
pintamenu6(curso,0);
gotoxy(41,9);
cin>>materia;
if (materia > 11)
{
gotoxy(30,1);
cout<<"ERROR MATERIA NO VALIDA";
getch();
} else
{
pintamenu6(curso,materia);
ing='R';
}
}
muestranotas(materia,curso);
gotoxy(25,22);
cout<<"PRESIONE CUALQUIER TECLA PARA CONTINUAR";

getch();
ing2='N';
} else
{
ing2='N';
gotoxy(30,1);
cout<<"ERROR CURSO SIN ALUMNOS";
getch();

}
}
}

int haycupo(int i)
{
int inicio,fin,j,resul=0;
fin = i*6;
inicio = fin - 6;
for(j=inicio;j<fin;j++)
{
if(codigos[j]==0)
{
resul=j + 1;
j=fin + 1;
}
}
return resul;
}
int haycupo2(int i)
{
int inicio,fin,j,resul=0;
fin = i*6;
inicio = fin - 6;
for(j=inicio;j<fin;j++)
{
if(codigos[j]==0)
{
resul=resul + 1;
}
}
return resul;
}
int haycupo3(void)
{
int j,resul=0;
for(j=0;j<30;j++)
{
if(codigos[j]==0)
{
resul=resul + 1;
}
}
return resul;
}



int hayalumno(int i)
{
int j,resul=0;
for(j=0;j<cantidad2;j++)
{
if(codigos[j]==i)
{
resul=j + 1;
j=cantidad2 + 1;
}
}
return resul;
}


//FUNCION PARA MOSTRAR EL MENU PRINCIPAL
void pintamenu1(void)
{
clrscr();
gotoxy(30,4);
cout<<"COLEGIO SAN LUIS GONZAGA";
gotoxy(25,7);
cout<<"1.- CREAR MATERIAS";
gotoxy(25,9);
cout<<"2.- MATRICULAR ALUMNOS";
gotoxy(25,11);
cout<<"3.- INGRESAR NOTAS";
gotoxy(25,13);
cout<<"4.- CONSULTA POR MATERIA";
gotoxy(25,15);
cout<<"5.- PARA TERMINAR EL PROGRAMA";
gotoxy(25,21);
cout<<"SELECCIONE UNA OPCION [ ]";
gotoxy(50,21);
}
//FUNCION PARA MOSTRAR EL MENU MATRICULA
void pintamenu3(char seleccion,int curso)
{
clrscr();
gotoxy(23,4);
if (seleccion == 'C')
{
cout<<"COLEGIO SAN LUIS CREAR MATRICULA";
}
if (seleccion == 'M')
{
cout<<"COLEGIO SAN LUIS MODIFICAR MATRICULA";
}
if (seleccion == 'B')
{
cout<<"COLEGIO SAN LUIS BORRAR MATRICULA";
}
gotoxy(25,7);
cout<<"CURSO ";
if (curso > 0)
{
gotoxy(41,7);
cout<<curso;
}
gotoxy(25,9);
cout<<"CODIGO";
gotoxy(25,11);
cout<<"NOMBRES";
gotoxy(25,13);
cout<<"APELLIDOS";
gotoxy(25,15);

}
void pintamenu4(void)
{
clrscr();
gotoxy(30,4);
cout<<"COLEGIO SAN LUIS";
gotoxy(25,7);
cout<<"1.- CREA ";
gotoxy(25,9);
cout<<"2.- MODIFICA";
gotoxy(25,11);
cout<<"3.- BORRA";
gotoxy(25,13);
cout<<"4.- SALIR";
gotoxy(25,15);
gotoxy(25,22);
cout<<"SELECCIONE UNA OPCION [ ]";
gotoxy(50,22);
}
//FUNCION PARA MOSTRAR EL MENU MATRICULA
void pintamenu5(int curso,int materia)
{
clrscr();
gotoxy(23,4);
cout<<"COLEGIO SAN LUIS CAPTURAR NOTAS";
gotoxy(25,7);
cout<<"CURSO ";
if (curso > 0)
{
gotoxy(41,7);
cout<<curso;
}
gotoxy(25,9);
cout<<"MATERIA";
if (materia > 0)
{
gotoxy(41,9);
cout<<materia;
materia=materia - 1;
gotoxy(45,9);
pintamat(materia);
}
gotoxy(25,11);
cout<<"ALUMNO";
gotoxy(25,13);
cout<<"NOMBRE";
gotoxy(25,15);
cout<<"NOTA 1";
gotoxy(25,16);
cout<<"NOTA 2";
gotoxy(25,17);
cout<<"NOTA 3";
gotoxy(25,18);
cout<<"NOTA 4";
gotoxy(25,19);
cout<<"PROMEDIO";

}
//FUNCION PARA MOSTRAR CONSULTA
void pintamenu6(int curso,int materia)
{
clrscr();
gotoxy(23,4);
cout<<"COLEGIO SAN LUIS GONZAGA CONSULTA NOTAS";
gotoxy(25,7);
cout<<"CURSO ";
if (curso > 0)
{
gotoxy(41,7);
cout<<curso;
}
gotoxy(25,9);
cout<<"MATERIA";
if (materia > 0)
{
gotoxy(41,9);
cout<<materia;
materia=materia - 1;
gotoxy(45,9);
pintamat(materia);
}
gotoxy(1,11);
cout<<"ALUMNO";
gotoxy(8,11);
cout<<"NOMBRES";
gotoxy(25,11);
cout<<"APELLIDOS";
gotoxy(40,11);
cout<<"NOTA 1";
gotoxy(48,11);
cout<<"NOTA 2";
gotoxy(56,11);
cout<<"NOTA 3";
gotoxy(64,11);
cout<<"NOTA 4";
gotoxy(72,11);
cout<<"PROMEDIO";

}
//FUNCION PARA CAPTURAR NOTAS
void pidenotas (int materia,int ubicacion)
{
int inicio,fin,i,pos=15;
float promedio=0;
fin = materia*5;
inicio = fin - 5;
fin = fin - 1;
for (i=inicio;i<fin;i++)
{
promedio= promedio + notas[ubicacion][i];
gotoxy(41,pos);
cout<<notas[ubicacion][i];
pos=pos+1;
}
notas[ubicacion][fin]=promedio/4;
gotoxy(41,pos);
if (promedio > 3)
{
cout<<"ALUMNO PASO";
}else
cout<<"ALUMNO PERDIO";
gotoxy(55,pos);
cout<<notas[ubicacion][fin];
promedio=0; pos=15;
for (i=inicio;i<fin;i++)
{
gotoxy(41,pos);
cin>>notas[ubicacion][i];
promedio= promedio + notas[ubicacion][i];
pos=pos+1;
}
notas[ubicacion][fin]=promedio/4;
gotoxy(41,pos);
cout<<notas[ubicacion][fin];
}
//FUNCION PARA MOSTRAR NOTAS
void muestranotas (int materia,int curso)
{
int inicio,fin,i,pos=13,pos2,inicio2,fin2,j;
fin = materia*5;
inicio = fin - 5;
fin2 = curso*6;
inicio2 = fin2 - 6;
for(j=inicio;j<fin;j++)
{
if (codigos[j] >0)
{
gotoxy(1,pos);
cout<<codigos[j];
gotoxy(8,pos);
pintanom(j);
gotoxy(25,pos);
pintaape(j);
pos2 = 40;
for (i=inicio2;i<fin2;i++)
{ gotoxy(2,2);
gotoxy(pos2,pos);
cout<<notas[j][i];
pos2=pos2 + 8;
}
}
pos=pos+1;
}
}
  #2 (permalink)  
Antiguo 16/11/2009, 00:01
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Respuesta: Problema con promedio y nota

Mmm. Me pregunto, si hay tantas herramientas en el foro para darle formato al codigo, por que solo lo pegas asi?? Sinceramente, me da muuucha flojera leerlo.
Es relativamente mucho, es ilegible, usas conio.h(muchos gotoxy).

Intenta postear tu codigo de manera mas estructurada y usando algunas de las etiquetas que te ofrece el foro.

Saludos
  #3 (permalink)  
Antiguo 19/11/2009, 07:00
 
Fecha de Ingreso: noviembre-2009
Mensajes: 8
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Problema con promedio y nota

Abandona los gotoxy, abraza la nueva religión de los bucles :)

Lo que tú pides lo puedes hacer con un while que funcione hasta que metas el último dato, y mientras tanto almacena en una variable la suma, mientras en otra lleva un contador.

Cuando sales del bucle, divides la variable suma por la variable contador, y en función del resultado das un mensaje u otro.

Ahora estoy en el curro y me da pereza ponerme a poner código, ya en casa si me veo con ganas contesto :)

Un saludo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:07.