Ver Mensaje Individual
  #6 (permalink)  
Antiguo 06/09/2009, 10:47
JuanLVBR
 
Fecha de Ingreso: septiembre-2009
Ubicación: Burgos
Mensajes: 28
Antigüedad: 14 años, 8 meses
Puntos: 1
Respuesta: Duda con problema en C

Cita:
Iniciado por haidion Ver Mensaje
media tiene que ser del tipo float, millas y litros son int entonces va %d en lugar de %f. Y en media = pusiste dos iguales y eso es una operacion logica.

Código c:
Ver original
  1. main()
  2. {
  3.     int millas = 0;
  4.     int litros = 0;
  5.     int repeticiones = 0;
  6.     float media;
  7.    
  8.  
  9.  
  10.     while(repeticiones <=3){
  11.     printf("introduzca millas recorridas):\n");
  12.     scanf("%d", &millas);
  13.     printf("introduzca litros usados:\n");
  14.     scanf("%d", &litros);
  15.  
  16.     media = float(millas)/float(litros);
  17.     printf("la media es %f\n", media);
  18.  
  19.     repeticiones += 1;
  20.  
  21.     }
  22.  
  23.  
  24.     return 0;
  25. }
En la línea 16 de ese código lo que se está haciendo es decirle al compilador que quieres declarar una variable float millas y una float litros y lógicamente generará un error en compilación, si lo que se intentaba era un cast lo correcto sería cambiar los paréntesis y ponerlos en el tipo, no en el nombre:
Código:
    media = (float)millas/(float)litros;
Con un único cast es suficiente:
Código:
    media = (float)millas/litros;

En el resto del código lo único que está mal es como bien dicen la condición del while o inicializar la variable repetición con otro valor para que se hagan 3 repeticiones y no 4 y los tipos de datos (float, int, ya sabes).

Y para finalizar, para calcular la media de las tres medias, podrías declarar un vector como te han dicho y luego recorrerlo para hacer la media, pero... Si es estático ¿de qué tamaño? ¿Si le da por calcular 4 medias otro día? Además estamos perdiendo memoria a lo tonto, es mejor tener un float que X floats (dependiendo del número de medias que quiera, en este caso 3), yo lo haría así (te lo añado a tu código para que te sea más fácil verlo, sólo es la declaración de un nuevo float y dos instrucciones nuevas además de las correcciones que te he escrito):

Código:
#include<stdio.h>

int main()
{
    int millas = 0;
    int litros = 0;
    int repeticiones = 0;
    float media;
    float sumaMedias=0;
   


    while(repeticiones<3){
        printf("introduzca millas recorridas:\n");
        scanf("%d", &millas);
        printf("introduzca litros usados:\n");
        scanf("%d", &litros);

        media = (float)millas/litros;
        printf("la media es %f\n", media);
        sumaMedias += media;

        repeticiones += 1;

    }
    
    printf("\n\nLa media total es %f.\n", sumaMedias/repeticiones);

    return 0;
}

Ojo, lo que has pedido es la media de las medias, no la media del total, si quieres la media del total se haría de otro modo, deberías sumar todos los litros acumulándolos y todas las millas para mostrar en el printf la división entre el total de millas y el de litros.