Test Foro de elhacker.net SMF 2.1

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


/*fitxers*/
#include <stdio.h>
#include <stdlib.h>

/*constants*/
const int END= -1;
const int THOUSAND= 1000;

/*programa*/
int roundToThousand()
{
   /*variables*/
   int thousands , readVal , total;

   total=0;
   scanf("%d",%readVal);--------------------------
   while(readVal!=END){
       thousands=(readVal+500)/ THOUSAND;
       total=total+thousands;
       printf("%d",readVal);
       printf("%d",thousands);
       scanf("%d",%readVal);-----------------------------
   }
   printf("%d",total);
}---------------------------------



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
Cita de: 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  :)

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:
scanf("%d", &readVal);

/* ... */

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 ^^ ;-)