Programación en c [Resuelto]

Iniciado por macshivi, 25 Junio 2014, 16:34 PM

0 Miembros y 1 Visitante están viendo este tema.

macshivi

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

eferion

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



macshivi

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

AlbertoBSD

#3
tambien indenta el codigo no uses:


if (x<=17)

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

else{ prinf("bienvenido");}


Mejor pon:


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


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




Cita de: 011632 en 25 Junio 2014, 16:53 PM
    else(x>17);


El else no lleva Condicion, y no lleva punto y coma
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

leosansan

#4
Amén de lo que te indica eferion en esta línea:

Código (cpp) [Seleccionar]
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 (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

int main() {
 int x = 0;
 printf("Introduzca su edad:\n");
 scanf( "%d", &x );
 if ( x <= 17)
   printf("no eres bienvenido!!\n");
 else
   printf("bienvenido\n");
 system("pause");
 return 0;
}


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




EDITO:

La línea:

Código (cpp) [Seleccionar]
else(x>17);

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

Código (cpp) [Seleccionar]
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.

eferion

Cita de: 011632 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.

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

macshivi

Tienes razón, a partir de ahora no volveré a comportarme así.

Gracias por el consejo