Problema con código

Iniciado por jairoo15, 27 Febrero 2017, 18:33 PM

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

jairoo15

Tengo el siguiente código:
#include <stdio.h>
#include<conio.h>

main(){
   float promAnual=0.0;
   int numMeses, numToneladas,i, suma, mesTon = 0;
   float toneladas[11];
   
   for(i = 0; i <= 11; i++){
       printf("Ingrese la cantidad de toneladas del mes #%d->",i);
       scanf("%f", &toneladas);
     }
    suma = 0;
    for(i = 0; i <= 11; i++){
       suma = suma + toneladas ;
   }
   promAnual = suma / 12.0;
   
    for(i = 0; i <= 11; i++){
       if(toneladas>promAnual){
          numMeses = numMeses + 1;
      }
    }
    numToneladas = 0;
    mesTon = 0;
   
    for(i = 0; i <= 11; i++){
       if(toneladas<toneladas[i+1]){
          if(i<=11){
          mesTon = (i+1);
          numToneladas = toneladas[i+1];
           }
       }
   }
   
    //system("cls");
   printf("El promedio anual es: %0.2f, %d mes(es) tuvieron mayor cosecha que el promedio anual, y el mayor numero de toneladas se produjo en el mes #%d con %0.2f", promAnual,numMeses,mesTon, numToneladas);
}
El cual debe imprimir al final, el promedio, el cual no falla, los meses que tuvieron mayor valor que el promedio anual, ese falla porque muestra siempre 39/40 lo cual es imposible, el mes que tuvo mayor valor, que también falla ya que siempre muestra 10/11 y cuantas toneladas tuvo ese mes, que falla porque muestra un numero y a su lado un montón de 0's.

Apreciaría mucho su ayuda!

valarauko

Tengo el siguiente código:
#include <stdio.h>
#include<conio.h>

main(){
   float promAnual=0.0;
   int numMeses, numToneladas,i, suma, mesTon = 0;
   float toneladas[11];
  /*el error que buscas probablemente esta aca, suma es del tipo int y si quisieras hacer  operaciones
con floats tenes que hacer un casteo o
en este caso convertir suma en float*/
   for(i = 0; i <= 11; i++){
       printf("Ingrese la cantidad de toneladas del mes #%d->",i);
       scanf("%f", &toneladas);
     }
    suma = 0;
    for(i = 0; i <= 11; i++){
       suma = suma + toneladas ;
   }
   promAnual = suma / 12.0;
   
    for(i = 0; i <= 11; i++){
       if(toneladas>promAnual){ //estas comparando un vector con un indice, no funciona
          numMeses = numMeses + 1;
      }
    }
    numToneladas = 0;
    mesTon = 0;
   
    for(i = 0; i <= 11; i++){
       if(toneladas<toneladas[i+1]){ //aca igual
          if(i<=11){
          mesTon = (i+1);
          numToneladas = toneladas[i+1];
           }
       }
   }
   
    //system("cls");
   printf("El promedio anual es: %0.2f, %d mes(es) tuvieron mayor cosecha que el promedio anual, y el mayor numero de toneladas se produjo en el mes #%d con %0.2f", promAnual,numMeses,mesTon, numToneladas);
}


Corregite esos errores que te marque y capaz te anda, no vi mucho la logica pero puede ser eso!