Estaba por terminar el trabajo práctico, agregue dos funciones sencillas, el programa andaba a la perfección, cuando termino de agregarlas corro el programa y empieza a imprimir basura, revisé todo 20 veces, anulé lo agregado, no toque otra cosa mientras lo agregaba y ahora no me deja de imprimir basura.
Cerré el programa, volví a abrirlo, copié el código en un nuevo proyecto y aún así continúa haciendolo. No le encuentro la lógica, pienso que es un error del IDE en sí pero no sé como solucionarlo.
¿Alguna idea?
Dejo el código por las dudas, lo agregado fue todo lo relacionado a las notas maxima y minima, ya sea los "for" en el main y las funciones.
Citar
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
void carga(float al[], int x);
int ausentes(float al[], int x);
int presentes(float al[], int x);
int promociones(float al[], int x);
int aprobados(float al[], int x);
int desaprobados(float al[], int x);
float promedio(float al[], int x);
float max(float al[], int x);
float min(float al[], int x);
int main()
{
int j, cantmax=0, cantmin=0;
float alumnos[5], notamax=0, notamin=0;
carga(alumnos,5);
for(j=1;j<5;j++){
printf("Alumno %d\t Nota %.2f\n",j,alumnos[j]);
}
printf("Cantidad de AUSENTES: %d\n",ausentes(alumnos,5));
printf("Cantidad de PRESENTES: %d\n",presentes(alumnos,5));
printf("Cantidad de PROMOCIONADOS: %d (Nota mayor o igual a 7)\n",promociones(alumnos,5));
printf("Cantidad de APROBADOS: %d (Nota entre 4 y 7)\n",aprobados(alumnos,5));
printf("Cantidad de DESAPROBADOS: %d\n", desaprobados(alumnos,5));
printf("PROMEDIO: %.2f\n", promedio(alumnos,5));
notamax=max(alumnos,5);
notamin=min(alumnos,5);
for(j=0;j<5;j++){
if(alumnos[j]=notamax)
cantmax+=1;
}
for(j=0;j<5;j++){
if(alumnos[j]=notamin)
cantmin+=1;
}
printf("NOTA MAXIMA: %.2f\tCantidad de alumnos con nota maxima:%d",notamax,cantmax);
printf("NOTA MINIMA: %.2f\tCantidad de alumnos con nota minima:%d",notamin,cantmin);
return 0;
}
void carga(float al[], int x){ //CARGA DE NOTAS
int i, trunca=0;
float nota=0, verif, resul=0;
bool vof=false;
al
while(nota>=0){
nroal:
printf("\nIngrese la nota a inscribir ");
scanf("%f", ¬a);
printf("\nIngrese el numero de alumno a modificar ");
scanf("%d", &i);
if(nota>=1){ //PURGA DE NOTA INVALIDA Y CORRECCION DE DECIMALES
while(nota>10){
printf("\nNota erronea, vuelva a ingresar ");
scanf("%f", ¬a);
}
trunca=nota;
resul=nota-trunca;
if(resul>0 && resul<0.25){
nota=trunca+0.25;}
if(resul>0.25 && resul<0.5){
nota=trunca+0.5;}
if(resul>0.5 && resul<0.75){
nota=trunca+0.75;}
if(resul>0.75 && resul<=0.99){
nota=trunca+1;}
resul=0;
trunca=0;
}
else if(nota<0){ //NOTA NEGATIVA
break;
}
while(i>x || i<0){ //VERIFICACION ALUMNO
printf("\nError en el numero de alumno, vuelva a ingresar ");
scanf("%d", &i);
}
verif=al;
if(verif>=1){ //VERIFICACION DE CARGA DE NOTA
printf("\nEl alumno ya tiene inscripta la nota: %.2f", verif);
goto nroal;
}else{
al=nota;}
}
}
int ausentes(float al[], int x){ //CONTADOR DE AUSENTES
int i, contador=0;
for(i=1;i<x;i++){
if(al<1)
contador+=1;
}
return contador;
}
int presentes(float al[], int x){ //CONTADOR DE PRESENTES
int i, contador=0;
for(i=1;i<x;i++){
if(al>0.1)
contador+=1;
}
return contador;
}
int promociones(float al[], int x){ //CONTADOR DE PROMOCIONES
int i, contador=0;
for(i=1;i<x;i++){
if(al>=7)
contador+=1;
}
return contador;
}
int aprobados(float al[], int x){ //CONTADOR DE APROBADOS
int i, contador=0;
for(i=1;i<5;i++){
if(al>=4 && al<7)
contador+=1;
}
return contador;
}
int desaprobados(float al[], int x){ //CONTADOR DE DESAPROBADOS
int i, contador=0;
for(i=1;i<5;i++){
if(al>0.1 && al<4)
contador+=1;
}
return contador;
}
float promedio(float al[], int x){ //CALCULA PROMEDIO
int i;
float suma=0;
for(i=1;i<5;i++){
suma+=al;
}
return (suma/4);
}
float max(float al[], int x){
int i;
float maxima=0;
for(i=1;i<5;i++){
if(al>maxima)
maxima=al;
}
return maxima;
}
float min(float al[], int x){
int i;
float minima=11;
for(i=1;i<5;i++){
if(al>0.1 && al<minima)
minima=al;
}
return minima;
}
#include <stdlib.h>
#include <stdbool.h>
void carga(float al[], int x);
int ausentes(float al[], int x);
int presentes(float al[], int x);
int promociones(float al[], int x);
int aprobados(float al[], int x);
int desaprobados(float al[], int x);
float promedio(float al[], int x);
float max(float al[], int x);
float min(float al[], int x);
int main()
{
int j, cantmax=0, cantmin=0;
float alumnos[5], notamax=0, notamin=0;
carga(alumnos,5);
for(j=1;j<5;j++){
printf("Alumno %d\t Nota %.2f\n",j,alumnos[j]);
}
printf("Cantidad de AUSENTES: %d\n",ausentes(alumnos,5));
printf("Cantidad de PRESENTES: %d\n",presentes(alumnos,5));
printf("Cantidad de PROMOCIONADOS: %d (Nota mayor o igual a 7)\n",promociones(alumnos,5));
printf("Cantidad de APROBADOS: %d (Nota entre 4 y 7)\n",aprobados(alumnos,5));
printf("Cantidad de DESAPROBADOS: %d\n", desaprobados(alumnos,5));
printf("PROMEDIO: %.2f\n", promedio(alumnos,5));
notamax=max(alumnos,5);
notamin=min(alumnos,5);
for(j=0;j<5;j++){
if(alumnos[j]=notamax)
cantmax+=1;
}
for(j=0;j<5;j++){
if(alumnos[j]=notamin)
cantmin+=1;
}
printf("NOTA MAXIMA: %.2f\tCantidad de alumnos con nota maxima:%d",notamax,cantmax);
printf("NOTA MINIMA: %.2f\tCantidad de alumnos con nota minima:%d",notamin,cantmin);
return 0;
}
void carga(float al[], int x){ //CARGA DE NOTAS
int i, trunca=0;
float nota=0, verif, resul=0;
bool vof=false;
al
- ;
while(nota>=0){
nroal:
printf("\nIngrese la nota a inscribir ");
scanf("%f", ¬a);
printf("\nIngrese el numero de alumno a modificar ");
scanf("%d", &i);
if(nota>=1){ //PURGA DE NOTA INVALIDA Y CORRECCION DE DECIMALES
while(nota>10){
printf("\nNota erronea, vuelva a ingresar ");
scanf("%f", ¬a);
}
trunca=nota;
resul=nota-trunca;
if(resul>0 && resul<0.25){
nota=trunca+0.25;}
if(resul>0.25 && resul<0.5){
nota=trunca+0.5;}
if(resul>0.5 && resul<0.75){
nota=trunca+0.75;}
if(resul>0.75 && resul<=0.99){
nota=trunca+1;}
resul=0;
trunca=0;
}
else if(nota<0){ //NOTA NEGATIVA
break;
}
while(i>x || i<0){ //VERIFICACION ALUMNO
printf("\nError en el numero de alumno, vuelva a ingresar ");
scanf("%d", &i);
}
verif=al;
if(verif>=1){ //VERIFICACION DE CARGA DE NOTA
printf("\nEl alumno ya tiene inscripta la nota: %.2f", verif);
goto nroal;
}else{
al=nota;}
}
}
int ausentes(float al[], int x){ //CONTADOR DE AUSENTES
int i, contador=0;
for(i=1;i<x;i++){
if(al<1)
contador+=1;
}
return contador;
}
int presentes(float al[], int x){ //CONTADOR DE PRESENTES
int i, contador=0;
for(i=1;i<x;i++){
if(al>0.1)
contador+=1;
}
return contador;
}
int promociones(float al[], int x){ //CONTADOR DE PROMOCIONES
int i, contador=0;
for(i=1;i<x;i++){
if(al>=7)
contador+=1;
}
return contador;
}
int aprobados(float al[], int x){ //CONTADOR DE APROBADOS
int i, contador=0;
for(i=1;i<5;i++){
if(al>=4 && al<7)
contador+=1;
}
return contador;
}
int desaprobados(float al[], int x){ //CONTADOR DE DESAPROBADOS
int i, contador=0;
for(i=1;i<5;i++){
if(al>0.1 && al<4)
contador+=1;
}
return contador;
}
float promedio(float al[], int x){ //CALCULA PROMEDIO
int i;
float suma=0;
for(i=1;i<5;i++){
suma+=al;
}
return (suma/4);
}
float max(float al[], int x){
int i;
float maxima=0;
for(i=1;i<5;i++){
if(al>maxima)
maxima=al;
}
return maxima;
}
float min(float al[], int x){
int i;
float minima=11;
for(i=1;i<5;i++){
if(al>0.1 && al<minima)
minima=al;
}
return minima;
}
LA IMPRESIÓN DE BASURA SE DA EN: "//VERIFICACION DE CARGA DE NOTA". Esa parte no fue modificada desde que andaba.
¿Por qué en ese apartado?, pues cuando ingresaba una nota a un alumno que ya tenía cargada la nota, me saltaba error, mostraba la nota que ya estaba ingresada y volvia a pedir nota para otro alumno.
Ahora a la primera que quiero cargar una nota para el alumno 1, que no tiene nada me dice que ya tiene una nota registrada que es 0.000565657....
EDITADO: La BASURA la imprime en TODAS las cargas de nota.