elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 02:55  


Tema destacado: Nueva página de elhacker.net en Google+ Google+

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  Problema del compilador?!?!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema del compilador?!?!  (Leído 318 veces)
ChicoMaravilla

Desconectado Desconectado

Mensajes: 61



Ver Perfil
Problema del compilador?!?!
« en: 8 Noviembre 2011, 03:07 »

Buenos días a todos, :D hace tiempo que no entraba al foro, pues aquí abri un tema por que no se que ondina con este compilador.
Soy nuevo en C, pero no en la programación, aun así no se por queee, quizas sea el compilador que no incluya el stdio.h o no se que sera aunque no creo que sea eso, no es la primera vez que me pasa. Yo estoy aprendiendo C y me baje el Dev C++ por recomendaciones que lei en la web, pero miren este es el codigo:

Código
#Include <stdio.h>
 
int x, y;
 
main()
{
     printf("\n Input an integer value for x: ");
     scanf("%d", &x);
     printf("\n Input an intenger value for y: ");
     scanf("%d", &y);
 
     if (x == y)
        printf("x is equal to y");
     if (x < y)    
        printf("x is smaller than y");
     if (x > y)
        printf("x is greater than y");
 
     scanf("%d");
     return 0;
}

si es el compilador, alguien no me recomienda otro bueno? que sirva para C?

No es la primera vez que me pasa, como ya dije. Este code esta en el libro aprender a programar en C en 21 días (muy bueno en mi opinión)

Desde ya muchas gracias  ;-)

PD: Tampoco se porque ahora que postie en el foro, aquí aparecieron esos numeros raros antes del enunciado... :/


« Última modificación: 8 Noviembre 2011, 03:09 por Chico_Maravilla » En línea
pucheto

Desconectado Desconectado

Mensajes: 214


Ver Perfil
Re: Problema del compilador?!?!
« Respuesta #1 en: 8 Noviembre 2011, 03:16 »

#Include es con minuscula.... #include

La culpa practicamente nunca es del compilador...


En línea
ChicoMaravilla

Desconectado Desconectado

Mensajes: 61



Ver Perfil
Re: Problema del compilador?!?!
« Respuesta #2 en: 8 Noviembre 2011, 03:31 »

correcto, era eso :) un despiste mio  :rolleyes:, gracias por la respuesta inmediata

Saludos
En línea
rir3760


Desconectado Desconectado

Mensajes: 382


Ver Perfil
Re: Problema del compilador?!?!
« Respuesta #3 en: 8 Noviembre 2011, 04:19 »

Si ese programa lo copiaste tal cual de ese libro mejor cambia a otro ya que tiene un error y varios "detallitos". El tema obligatorio a leer en este caso es [Libros/Papers] C/C++.

El error se encuentra en la ultima llamada a scanf, se deben pasar dos argumentos pero la función solo recibe uno:
Código
scanf("%d");

Los detallitos son la definición de la función "main" (en C99 no se puede omitir el tipo) y las llamadas a printf: las tres primeras, al no terminar con el carácter '\n', no dan garantías de que el bufer de la salida estándar se vacié y las tres ultimas se pueden remplazar con llamadas a "puts".

Un saludo
En línea

The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
ChicoMaravilla

Desconectado Desconectado

Mensajes: 61



Ver Perfil
Re: Problema del compilador?!?!
« Respuesta #4 en: 8 Noviembre 2011, 12:59 »

Si ese programa lo copiaste tal cual de ese libro mejor cambia a otro ya que tiene un error y varios "detallitos". El tema obligatorio a leer en este caso es [Libros/Papers] C/C++.

El error se encuentra en la ultima llamada a scanf, se deben pasar dos argumentos pero la función solo recibe uno:
Código
scanf("%d");

Los detallitos son la definición de la función "main" (en C99 no se puede omitir el tipo) y las llamadas a printf: las tres primeras, al no terminar con el carácter '\n', no dan garantías de que el bufer de la salida estándar se vacié y las tres ultimas se pueden remplazar con llamadas a "puts".

Un saludo

 :o
ese scanf lo agregué yo al final, por que no tenía manera de que se quedara quieto  :xD, (mis conocimientos de C son muy limitados por ahora), en cuanto a el resto si, esta igual.

no entiendo eso de los printf, pues el /n, tengo entendido que salta de renglón, y si iría al final, mostraría en el siguiente renglón el scanf  :D
En línea
rir3760


Desconectado Desconectado

Mensajes: 382


Ver Perfil
Re: Problema del compilador?!?!
« Respuesta #5 en: 9 Noviembre 2011, 02:02 »

no entiendo eso de los printf, pues el /n, tengo entendido que salta de renglón, y si iría al final, mostraría en el siguiente renglón el scanf

El problema al llamar a printf de esta forma:
Código
printf("\n Input an integer value for x: ");
scanf("%d", &x);
Es que no tenemos garantizado que la cadena "\n Input an integer value for x: " se imprima inmediatamente en la salida estándar (puede quedarse en su bufer).

Para tener esa seguridad se debe cumplir uno de tres escenarios:

A) El bufer de la salida estándar se llena.
B) La secuencia de caracteres a imprimir termina con '\n'.
C) Se indica explícitamente que debe vaciarse el bufer.

El primer caso no lo controlamos así que mejor nos olvidamos de el.

El segundo caso se consigue al llamar a la función así:
Código
printf("\n Input an integer value for x: \n");
Pero como no se formatea valor alguno se puede sustituir esa función con "puts" generando el mismo efecto (ella imprime automáticamente el '\n' después de la cadena indicada):
Código
puts("\n Input an integer value for x: ");

El tercer caso se consigue llamando a la función "fflush" para que vacie el bufer del stream indicado como argumento (stdout es la salida estándar):
Código
printf("Input an integer value for x: ");
fflush(stdout);

Por ultimo lo subjetivo (cuestión de estilo): cuando uno escribe no pasa al siguiente renglón y empieza a escribir ahí así nada mas.

En su lugar uno escribe hasta alcanzar el final del renglón y solo entonces pasa al siguiente. Esa es la idea de tener el '\n' al final de la cadena (y no al principio).

Un saludo
En línea

The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines