Problema ejercicios basicos

Iniciado por MasterPunk, 26 Septiembre 2010, 15:12 PM

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

MasterPunk

Hola. Estoy intentando hacer los dos primeros ejercicios de C que vienen en el subforo "ejercicios" pero por desgracia ninguno me ha llegado a funcionar T_T¡
¿Una ayudita?

Ejercicio 100
Escribir un programa que solicite una temperatura y sistema de medición (celsius o farenheit) y que haga la conversión al otro sistema.
Código (cpp) [Seleccionar]

#include <stdio.h>

main()
{
int t=0; //Sistema de medicion
int n=0; //Temperatura

printf("Elige sistema de medicion:\nIntroduce 1 para convertir de Celsius a Farenheit\nIntroduce 2 para convertir de Farenheit a Celsius\n");
scanf("%d",&t);

if(t==1 || t==2)
{
        printf("Introduce la temperatura\n");
        scanf("%d",&n);
       
        if(t=1)
        {
               float z=(9*n/5)+32;
               printf("%d grados celsius equivalen a %f grados farenheit",&n,&z);
               scanf("%d",&n); //esto lo pongo porque sino no da tiempo a leer en anterior printf xD
        }
        else
        {
            float z=((n-32)*5)/9;
            printf("%d grados farenheit equivalen a %f grados celsius",&n,&z);
            scanf("%d",&n); //esto lo pongo porque sino no da tiempo a leer en anterior printf xD
        }
       
}
else
{
    printf("error");
}


}



Ejercicio 101
Escribir un programa para el arqueo de caja de una tienda.
Se pide cuantas monedas de 1 centimo
Cuantas monedas de 2 centimos
Cuantas monedas de 5 centimos
Cuantas monedas de 10 centimos
Cuantas monedas de 20 centimos
Cuantas monedas de 50 centimos
Cuantas monedas de 1 Euro
Cuantas monedas de 2 Euros
Cuantos billetes de 5 Euros
Cuantos billetes de 10 euros
Cuantos billetes de 20 Euros
Cuantos billetes de 50 Euros
Cuantos billetes de 100 Euros
Cuantos billetes de 200 Euros
Cuantos billetes de 500 Euros
y calcular la suma total en euros

Código (cpp) [Seleccionar]

#include <stdio.h>

main()
{
int a=0;
int b=0;
int c=0;
int d=0;
int e=0;
int f=0;
int g=0;
int h=0;
int i=0;
int j=0;
int k=0;
int l=0;
int m=0;
int n=0;
int o=0;


printf("Número de monedas de 1 céntimo:\n");
scanf("%d",&a);

printf("Número de monedas de 2 céntimos:\n");
scanf("%d",&b);

printf("Número de monedas de 5 céntimos:\n");
scanf("%d",&c);

printf("Número de monedas de 10 céntimos:\n");
scanf("%d",&d);

printf("Número de monedas de 20 céntimos:\n");
scanf("%d",&e);

printf("Número de monedas de 50 céntimos:\n");
scanf("%d",&f);

printf("Número de monedas de 1 euro:\n");
scanf("%d",&g);

printf("Número de monedas de 2 euros:\n");
scanf("%d",&h);

printf("Número de billetes de 5 euros:\n");
scanf("%d",&i);

printf("Número de billetes de 10 euros:\n");
scanf("%d",&j);

printf("Número de billetes de 20 euros:\n");
scanf("%d",&k);

printf("Número de billetes de 50 euros:\n");
scanf("%d",&l);

printf("Número de billetes de 100 euros:\n");
scanf("%d",&m);

printf("Número de billetes de 200 euros:\n");
scanf("%d",&n);

printf("Número de billetes de 500 euros:\n");
scanf("%d",&o);

float z=(a+b+c+d+e+f)/100+g+h+i+j+k+l+m+n+o;

printf("Tienes un total de %f euros",&z);
scanf("%d",&z); //esto lo pongo porque sino no da tiempo a leer en anterior printf xD

}



¿¿Dónde están los errores?? Gracias

xassiz~

#1

#include <stdio.h>

int main()
{
   int t=0; //Sistema de medicion
   float n=0; //Temperatura
   float z; //Resultado
   
   printf("Elige sistema de medicion:\n\t1.-Celsius a Farenheit\n\t2.-Farenheit a Celsius\n");
   scanf("%d",&t);

   if(t==1 || t==2)
   {
       printf(">Temperatura:");
       scanf("%f", &n);

       if(t==1)
       {
           z = (9*n/5)+32;
           printf("\n%f grados Celsius equivalen a %f grados Farenheit\n", n, z);
       }
       else
       {
           z = ((n-32)*5)/9;
           printf("\n%f grados Farenheit equivalen a %f grados Celsius\n", n, z);
       }

   }
   else
   {
       printf("Error");
   }
   return 0;
}


La función main() debe retornar un entero (int). No es el error grave digamos, pero deberías leerte esto.


if(t=1)

Ves el fallo?

"=" es para asignar, no para comparar.


Luego en el printf pasas la dirección de la variable, en vez de la variable en sí.




El segundo código no me puse a hacerlo, pero el error es evidente.

Abajo haces la suma de el número de monedas/billetes pero no los multiplicas por su valor.


Saludos

MasterPunk

CitarVes el fallo?

"=" es para asignar, no para comparar.
uf, cierto, ese fallo no le vi. Aun asi ni tu programa ni el mio funcionan correctamente =S



CitarAbajo haces la suma de el número de monedas/billetes pero no los multiplicas por su valor.

No multiplico por su valor?
las variables a-f son el valor de las monedas de centimos (y las divido /100)
el resto es en euros.

xassiz~

Me quedó, compila el que puse ahora (faltó cambiar %d por %f).

En el segundo código, me refiero tu pides el número de monedas o billetes (que deberían ser int, pero bueno).

Luego haces la suma del número de monedas, billetes, etc. Pero si un billete es de 10 euros, e introduces que hay 5, tienes que hacer 5*10 y luego sumar.

¿Entiendes?

MasterPunk

Cita de: pablomi en 26 Septiembre 2010, 16:01 PM
Me quedó, compila el que puse ahora (faltó cambiar %d por %f).

En el segundo código, me refiero tu pides el número de monedas o billetes (que deberían ser int, pero bueno).

Luego haces la suma del número de monedas, billetes, etc. Pero si un billete es de 10 euros, e introduces que hay 5, tienes que hacer 5*10 y luego sumar.

¿Entiendes?

OW! fallo tonto. Igualmente ese no es el fallo por el que pregunto. El problema es que introduzca lo que introduzca mepone que la suma es 0,000000

Akai

printf("Tienes un total de %f euros",&z);

Tu fallo es el &z. En ese caso va sólo z, que es el float que printf espera, tu ahí le pasas la dirección de z;

MasterPunk

Cita de: Akai en 26 Septiembre 2010, 16:37 PM
printf("Tienes un total de %f euros",&z);

Tu fallo es el &z. En ese caso va sólo z, que es el float que printf espera, tu ahí le pasas la dirección de z;

Ok gracias. Listo, ya funciona. Gracias por la ayuda a los dos

Horricreu

Citaresto lo pongo porque sino no da tiempo a leer en anterior printf xD

Utiliza getchar().

Saludos :P

xassiz~

Cita de: Horricreu en 26 Septiembre 2010, 17:01 PM
Citaresto lo pongo porque sino no da tiempo a leer en anterior printf xD

Utiliza getchar().

Saludos :P
No utilices nada y llamalo desde la consola xD

MasterPunk

Cita de: pablomi en 27 Septiembre 2010, 15:16 PM
Cita de: Horricreu en 26 Septiembre 2010, 17:01 PM
Citaresto lo pongo porque sino no da tiempo a leer en anterior printf xD

Utiliza getchar().

Saludos :P
No utilices nada y llamalo desde la consola xD

pero al terminar la consola se cierra =S