Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: pMV2ere en 31 Octubre 2013, 19:10 pm



Título: problema scanf
Publicado por: pMV2ere en 31 Octubre 2013, 19:10 pm
buenas, no veo que estoy haciendo mal, supongo que sera algo básico pero....

El error que me sale es en la fila 16 i 25(el error es el mismo en ambas filas). marco con ------------para q lo veáis mejor.

Los guiones obviamente no estan en el programa original

El error es:   error:expected expression before "%" token.


en el ultimo } tambien me sale un warning: control reaches end of non-void function


Código
  1. /*fitxers*/
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. /*constants*/
  6. const int END= -1;
  7. const int THOUSAND= 1000;
  8.  
  9. /*programa*/
  10. int roundToThousand()
  11. {
  12.    /*variables*/
  13.    int thousands , readVal , total;
  14.  
  15.    total=0;
  16.    scanf("%d",%readVal);--------------------------
  17.    while(readVal!=END){
  18.        thousands=(readVal+500)/ THOUSAND;
  19.        total=total+thousands;
  20.        printf("%d",readVal);
  21.        printf("%d",thousands);
  22.        scanf("%d",%readVal);-----------------------------
  23.    }
  24.    printf("%d",total);
  25. }---------------------------------
  26.  


gracias de antemano


Título: Re: problema scanf
Publicado por: vangodp en 31 Octubre 2013, 19:47 pm
el programa principal debe llamar se main y el signo %delante de %readVal creo que sobra no? :-\
Se recomienda poner return 0; al final por que la funcion devuelve un entero, aun que no recuerdo el motivo...por portabilidad o yo que se  :)


Título: Re: problema scanf
Publicado por: pMV2ere en 31 Octubre 2013, 20:01 pm
el programa principal debe llamar se main y el signo %delante de %readVal creo que sobra no? :-\
Se recomienda poner return 0; al final por que la funcion devuelve un entero, aun que no recuerdo el motivo...por portabilidad o yo que se  :)

he quitado el % y nada.  El nombre del programa no influye, lo he probado.


el return si que me ha solucionado de la linea 25


Título: Re: problema scanf
Publicado por: rir3760 en 1 Noviembre 2013, 02:15 am
El problema en las dos llamadas a scanf es utilizar '%' (el operador binario modulo) cuando debería ser '&' (el operador unario "dirección de"). Cambia esas dos sentencias a:
Código
  1. scanf("%d", &readVal);
  2.  
  3. /* ... */
  4.  
  5. scanf("%d", &readVal);

Un saludo


Título: Re: problema scanf
Publicado por: vangodp en 1 Noviembre 2013, 08:44 am
pues si...lo que dice rir3760 es correcto ¿Como me eh olvidado?
Es que le metes el contenido de %d a la dirección de &readVal.
Apenas eh usado scanf o printf, son muy buenas las 2 pero de momento que estoy aprendiendo  c++ con cout me basta por ahora.
Saludos siempre se aprende algo ^^ ;-)