elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda en C por favor dificultad baja
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda en C por favor dificultad baja  (Leído 2,611 veces)
pMV2ere

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Ayuda en C por favor dificultad baja
« en: 2 Octubre 2013, 20:36 pm »

Buenas amigos, hoy he hecho mi primer programa en C y no consigo ver los errores que he cometido.
Podéis ayudarme con esto? me da error en las filas con--------------------
en el error del diff dice: expected ";" before price


« Última modificación: 3 Octubre 2013, 10:50 am por pMV2ere » En línea

dnlsrl

Desconectado Desconectado

Mensajes: 10



Ver Perfil WWW
Re: Ayuda en C por favor dificultad baja
« Respuesta #1 en: 2 Octubre 2013, 21:05 pm »

Hola,

Una pregunta, ¿pusiste los ------- como referencia para que veamos dónde te marca los errores, o los pusiste en el código? Si los pusiste en el código, seguro que el compilador los está marcando como puntuación incorrecta. Intenta comentarlos con un #.

En las líneas 8 y 9 estás haciendo typecasting ¿estoy en lo correcto? Si es así, ¿por qué hacer una operación con un int y dos floats si las variables priceWithCents y paidWithCents son floats por "naturaleza"? Checa eso..

My bad, eso está bien.

Quizá si nos dices el resultado deseado o para qué sirve ese pedazo de código te podamos ayudar.

Un saludo.
PS. Hace mucho que no toco C :xD Así que si te señalo un error que no existe, por favor una disculpa.


« Última modificación: 2 Octubre 2013, 21:14 pm por dnlsrl » En línea

pMV2ere

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Ayuda en C por favor dificultad baja
« Respuesta #2 en: 2 Octubre 2013, 21:15 pm »

las filas con ---------------------- no están en el código original
gracias por tu rspuesta, al menos ya me han contestado  :D
En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Ayuda en C por favor dificultad baja
« Respuesta #3 en: 2 Octubre 2013, 21:19 pm »

Sería de ayuda entender lo que quieres conseguir y qué es lo que no funciona como esperas.
En línea

Dawman

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Re: Ayuda en C por favor dificultad baja
« Respuesta #4 en: 2 Octubre 2013, 21:20 pm »

Hola,

Asi a simple vista, veo que por una banda:
    1  - diff= paid-price
depués declaras diff como:
    2  - diff=diff%current

yo probaria de declarar la segunda diff con otro variable(aux) por ejemplo.

No he podido probarlo porq no tengo dnd ejecutar nada del C... pero a simple vista parece q esta bien


Hola,

Asi a simple vista, veo que por una banda:
    1  - diff= paid-price
depués declaras diff como:
    2  - diff=diff%current

yo probaria de declarar la segunda diff con otro variable(aux) por ejemplo.

No he podido probarlo porq no tengo dnd ejecutar nada del C... pero a simple vista parece q esta bien

Otra cosa mas!!
el or se escribe hace con doble barra vertical ||
« Última modificación: 3 Octubre 2013, 09:11 am por Eternal Idol » En línea

pMV2ere

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Ayuda en C por favor dificultad baja
« Respuesta #5 en: 2 Octubre 2013, 21:26 pm »

Sería de ayuda entender lo que quieres conseguir y qué es lo que no funciona como esperas.


sólo tenía que traducir este código a C.
Código
  1. algorisme change
  2. var
  3. price, paid, diff, current, qtt: enter;
  4. priceWithCents, paidWithCents: real;
  5. fvar
  6. priceWithCents:= readReal();
  7. paidWithCents:= readReal();
  8. price:= realToInt(priceWithCents * 100.0 + 0.5);
  9. paid:= realToInt(paidWithCents * 100.0 + 0.5);
  10. diff:= paid – price;
  11. writeReal( intToReal(diff) / 100.0 );
  12. current:= 50000;
  13. mentre diff > 0 fer
  14. qtt:= diff div current;
  15. 05.554 · FP· PAC1 · 2013-01 · Programa · Estudis d’Informàtica Multimèdia i Telecomunicació
  16. 14
  17. si qtt > 0 llavors
  18. writeInteger( qtt );
  19. writeReal( intToReal(current) / 100.0 );
  20. fsi
  21. diff:= diff mod current;
  22. si current = 50000 o current = 5000 o current = 500 o current = 50 o current = 5 llavors
  23. current:= realToInt( intToReal( current ) / 2.5 );
  24. sino
  25. current:= current div 2;
  26. fsi
  27. fmentre
  28. falgorisme


Otra cosa mas!!
el or se escribe hace con doble barra vertical ||

ahora sólo tengo problemas con el diff

el diff primero lo declaro asi pq el algoritmo calcula cuantas monedas/billetes dar de cambio.
El primero hace efectivo entregado-precio
el segundo sirve para pasar a un billete/moneda más pequeño

lo que no entiendo es pq va mal el primero y el segundo no

quizá sea de ayuda decir que en el error del diff dice: expected ";" before price
« Última modificación: 3 Octubre 2013, 09:11 am por Eternal Idol » En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Ayuda en C por favor dificultad baja
« Respuesta #6 en: 3 Octubre 2013, 10:32 am »

El código es un poco extraño y difícil de seguir.

Podrías mejorar su legibilidad si te creas un vector con el valor de los billetes y monedas...

Código
  1. int[15] monedas = { 50000, 20000, 10000, 5000, 2000, 1000, 500, 200, 100, 50, 20, 10, 5, 2, 1 }; // Billetes y monedas de Euro.
  2.  

Con un vector así, calcular las vueltas resulta en un algoritmo sencillo de manejar y seguir:

Código
  1. int i;
  2. for ( i=0; i<15; ++i )
  3. {
  4.  int qt = diff / monedas[ i ];
  5.  if ( qt != 0 ) // Solo hacemos calculos si de la moneda actual hay que devolver algo
  6.  {
  7.    diff -=  qt * monedas[ i ];
  8.    printf( "valor moneda: %f, cantidad: %d\n", (float)monedas[ i ] / 100.0, qt );
  9.  }
  10. }

Pero claro, si te tienes que ceñir a ese pseudocódigo no hay margen de maniobra.



Referente a tus errores, tienes 2:

* El del diff que dices, tiene toda la pinta de que se te ha colado un caracter no imprimible y es lo que está dando el error. Prueba a borrar la linea y reescribirla... a mi me ha compilado.

* Las comprobaciones de 50000, 5000, ... van con doble igual '==' con solo un igual estás haciendo una asignación.
« Última modificación: 3 Octubre 2013, 10:55 am por eferion » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda edimax 7711 usn, baja señal!!!!!!!!
Materiales y equipos
elmirlo 5 3,197 Último mensaje 26 Noviembre 2009, 20:04 pm
por KARR
Dificultad en C++
Programación C/C++
KariHiwatari 5 4,283 Último mensaje 23 Junio 2010, 03:23 am
por nicolas_cof
Dificultad con Macros « 1 2 »
Programación Visual Basic
ssccaann43 © 10 5,176 Último mensaje 16 Diciembre 2010, 21:30 pm
por Novlucker
Ayuda porfavor ! baja de fps en juegos « 1 2 »
Hardware
nikot 13 5,909 Último mensaje 11 Enero 2014, 03:23 am
por nikot
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines