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

Duda con problema en C

Estas en el tema de Duda con problema en C en el foro de C/C++ en Foros del Web. Bueno primero que todo hola a todos ya que es la primera vez que posteo aqui jeje, la cosa es que estoy empezando aqui en ...
  #1 (permalink)  
Antiguo 01/09/2009, 08:54
 
Fecha de Ingreso: septiembre-2009
Mensajes: 1
Antigüedad: 15 años, 2 meses
Puntos: 0
Duda con problema en C

Bueno primero que todo hola a todos ya que es la primera vez que posteo aqui jeje,
la cosa es que estoy empezando aqui en el mundo de la programacion tengo 16 años y bueno a medida que voy avanzando me resulta un poquitin mas chungo jeje

bueno mi problema es el siguiente;

tengo que realizar un programa en el cual introduzca la cantidad de litros, kilometros que dure un deposito de gasolina y calcule la media kilometros/litros, esto repetido 3 veces y luego calcule la media de las 3 medias obtenidas xD, e intentado hacerlo pero el programa siempre me devuelve que la media es 0.0000 aqui os pego el codigo

Código:
main()
{
    int millas = 0;
    int litros = 0;
    int repeticiones = 0;
    int media;
   


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

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

    repeticiones += 1;

    }


    return 0;
}
  #2 (permalink)  
Antiguo 01/09/2009, 10:58
 
Fecha de Ingreso: febrero-2004
Ubicación: Buenos Aires
Mensajes: 60
Antigüedad: 20 años, 9 meses
Puntos: 0
Respuesta: Duda con problema en C

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. }
  #3 (permalink)  
Antiguo 01/09/2009, 11:18
Avatar de Anubis_Slash  
Fecha de Ingreso: mayo-2009
Ubicación: aqui y haya
Mensajes: 173
Antigüedad: 15 años, 6 meses
Puntos: 5
Respuesta: Duda con problema en C

hola Reikad, bienvenido al foro y bien por ti en querer aprender

creo que lo que necesitas ver es un arreglo para poder sacar la media de las medias (parece trabalenguas), ademas necesitas un flotante para el resultado de la division entre las millas y los litros, asi como la media de las medias...

saludos
__________________
Bienvenidos los karmas.
Quejas, sugerencias o dudas, se awantan......
  #4 (permalink)  
Antiguo 02/09/2009, 07:31
 
Fecha de Ingreso: agosto-2009
Mensajes: 18
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Duda con problema en C

Al principio dijiste que el programa debia repetir esto por 3 veces y lo estas haciendo repetir 4 veces xq empiezas en cero y vas hasta tres, entonces hace 4 veces (0, 1, 2, 3), tienes que poner while (repeticiones < 3) {.....
no hace falta el menor o igual
  #5 (permalink)  
Antiguo 02/09/2009, 12:25
Avatar de Slackin  
Fecha de Ingreso: noviembre-2007
Ubicación: Puerto Montt, Chile
Mensajes: 86
Antigüedad: 17 años
Puntos: 4
Respuesta: Duda con problema en C

Lo que dijo god2710 es cierto Tambien para efectos de mantenimiento podrias hacer::

Código:
void main(void){
.
.
.
/* eliminas el return 0*/
}
No te interesa que main retorne un valor, ademas a la funcion main no le pasas argumentos.

Saludos
  #6 (permalink)  
Antiguo 06/09/2009, 10:47
 
Fecha de Ingreso: septiembre-2009
Ubicación: Burgos
Mensajes: 28
Antigüedad: 15 años, 2 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.
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 13:55.