Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: macshivi en 25 Junio 2014, 16:34 pm



Título: Programación en c [Resuelto]
Publicado por: macshivi en 25 Junio 2014, 16:34 pm
Hola a todos!

Hace poco que he empezado a programar en c y ahora mismo estoy dandole a la funcion if... else...
Mi problema es que no consigo detectar cual es el problema en mi codigo, aqui os lo copio:

include <stdio.h>  

 int main()

{ int x=0;
 printf("Introduzca su edad:\n");

 scanf("%i",&x);  

if (x<=17)

{printf("no eres bienvenido!!");}
 
else{ prinf("bienvenido");}

 system("pause");  

return 0; }


Para programar utilizo codeblocks y para compilar GNU GCC Compiller.

Gracias por vuestro tiempo


Título: Re: Programación en c [Problema de novato]
Publicado por: eferion en 25 Junio 2014, 16:50 pm
En primer lugar, te recomiendo que para el código uses las etiquetas GeSHi... así aparecerá presentado de forma más legible.

Así a bote pronto, veo un problema y una cosa a mejorar:

Problema:
El include debe ir precedido de una almohadilla... sin almohadilla la línea no es válida.

Mejora:
el scanf lo usas con el parámetro %i. %i puede darte resultados inesperados porque interpreta la base del número en base a su formato:
  • 17 -> base 10 -> 17 en base 10
  • 017 -> base 8 -> 15 en base 10
  • 18 -> base 10 -> 18 en base 10
  • 018 -> base 8 -> número no válido

En estos casos casi es mejor usar %d. %d asume que el número va a ser introducido en base 10, con lo que:

  • 17 -> base 10 -> 17 en base 10
  • 017 -> base 10 -> 17 en base 10
  • 18 -> base 10 -> 18 en base 10
  • 018 -> base 10 -> 18 en base 10




Título: Re: Programación en c [Problema de novato]
Publicado por: macshivi en 25 Junio 2014, 16:53 pm
Ya he puesto lo que me digiste y sigo teniendo el mismo problema, aqui esta de nuevo el codigo.

#include <stdio.h>



int main()
{
    int x;

    printf("Introduzca su edad:\n");

    scanf("%d",&x);

    if (x<=17)
        printf("fuck you!\n");

    else(x>17);
        prinf("bienvenido.\n");

    system("pause");

    return 0;
}


Gracias de antemano


Título: Re: Programación en c [Problema de novato]
Publicado por: AlbertoBSD en 25 Junio 2014, 16:54 pm
tambien indenta el codigo no uses:

Código:
if (x<=17)

{printf("no eres bienvenido!!");}
 
else{ prinf("bienvenido");}

Mejor pon:

Código:
if (x<=17)	{
printf("no eres bienvenido!!");
}
else {
prinf("bienvenido");
}

Asi no te perderas entre tu mismo codigo. Creeme lo aprendi a la mala



    else(x>17);


El else no lleva Condicion, y no lleva punto y coma


Título: Re: Programación en c [Problema de novato]
Publicado por: leosansan en 25 Junio 2014, 17:00 pm
Amén de lo que te indica eferion en esta línea:

Código
  1. else{ prinf("bienvenido");}

Le falta la "t" al printf.

Te falta la librería stdlib.h par el uso de "system". Fíjate en la parte inferior del programa en los mensajes que indica, ya que por esa ausencia lanza un warning.

Y ya puestos, no hace falta las llaves en los if, else si sólo tienen como cuerpo una línea, dicho a lo breve.

Y ya que empiezas hazlo con buenos hábitos como indentar el código con cierto criterio. Algo como:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main() {
  5.  int x = 0;
  6.  printf("Introduzca su edad:\n");
  7.  scanf( "%d", &x );
  8.  if ( x <= 17)
  9.    printf("no eres bienvenido!!\n");
  10.  else
  11.    printf("bienvenido\n");
  12.  system("pause");
  13.  return 0;
  14. }

¡¡¡¡ Saluditos! ..... !!!!


(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)


EDITO:

La línea:

Código
  1. else(x>17);

sería sin el punto y coma final y con un if:

Código
  1. else if (x>17)

Aunque en este caso lo del if estaría de más, ya que si no es <=17 sólo queda como opción ser >17.

Y para cuando cuelguesel código elige las etiquetas GeSHi y toma la C++ y en medio de las etiquetas Code que aparecen "pegas" tu código. Al no hacerlo de esta manera parte del código no sale correcta, especialmente las matrices.


Título: Re: Programación en c [Problema de novato]
Publicado por: eferion en 25 Junio 2014, 17:19 pm
Ya he puesto lo que me digiste y sigo teniendo el mismo problema, aqui esta de nuevo el codigo.

Esa respuesta es un poco vaga, no crees??

Si quieres o tienes que meterte en el mundillo de la programación tienes que ponerte un poco las pilas y leer los mensajes de error que van saliendo... con un poco de práctica hasta llegarás a entenderlos. Pero desde luego corregir el primer error y decir "sigo teniendo el mismo problema"... eso no.

Si por problema te refieres a que no compila... mala suerte, eso no es un problema; es el resultado de una serie de errores en tu código... ese es el verdadero problema... y desde luego cada uno de esos problemas requerirá una solución diferente.

Esto te lo digo porque como vayas con esa actitud durante un tiempo la gente se cansará de ayudarte. La gente tiene la mala costumbre de pedir un poco de entusiasmo y esfuerzo... somos así de raros :)


Título: Re: Programación en c [Problema de novato]
Publicado por: macshivi en 25 Junio 2014, 18:13 pm
Tienes razón, a partir de ahora no volveré a comportarme así.

Gracias por el consejo