SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: franz. en Sábado 14 de Junio de 2008, 21:00

Título: Como Puedo Hacer Que No Me Tire Error?
Publicado por: franz. en Sábado 14 de Junio de 2008, 21:00
Hola, veran yo trabajo bajo unix, es decir el sistema bajo el cual estoy programando es Linux, y claro que el compilador que uso es GCC ahora bien, tengo el siguiente codigo:
Código: Text
  1. #include<stdio.h>
  2. int main(void)
  3. {
  4.         int usuario,clave=123;
  5.         printf("Ingrese su clave\n");
  6.         scanf("%d",usuario);
  7.         if (usuario == clave)
  8.                 system("clear");
  9.                 system("date");
  10.                 printf("Acceso autorizado Bienvenido\n");
  11.         else
  12.                 printf("Acceso Denegado lo lamento\n");
  13.         getch();
  14.         return 0;
  15. }
  16.  
Y al intentar compiar me tira el error:
Código: Text
  1. [th3r0rn@Linux c]$ gcc login.c -o login
  2. login.c: En la función ‘main’:
  3. login.c:11: error: ‘else’ without a previous ‘if’
  4. [th3r0rn@Linux c]$
  5.  
  6.  
tambien escribi otro parecido:
[/CODE]#include<stdio.h>
int main(void)
{        
        char pass;
        system("clear");
        printf("***************\n");
        system("date");
        printf("***************\n\n");
        printf("Hola Ingresa la contraseña:\n");
        scanf("%s",pass);
        if (pass == "a");
        system("clear");
        printf("**BIENVENIDO**\n");
        else printf("Tu mama conmigo!\n\n");
        return 0;
}

Código: Text
  1.  
  2. y el error al intentar compilar es:
  3. [CODE][th3r0rn@Linux c]&#036; gcc acceso.c -o acceso
  4. acceso.c: En la función ‘main’:
  5. acceso.c:11: aviso: comparación entre puntero y entero
  6. acceso.c:14: error: ‘else’ without a previous ‘if’
  7. [th3r0rn@Linux c]&#036;
  8.  
  9.  
alguien me puede ayudar a decirme que pasa?
muchas gracias :hola:
Título: Re: Como Puedo Hacer Que No Me Tire Error?
Publicado por: Eternal Idol en Sábado 14 de Junio de 2008, 21:09
Si despues del if tenes mas de una linea necesitas llaves ({}):

Código: Text
  1.  
  2. if (bla)
  3. {
  4.   bla
  5.   bla
  6.   bla
  7. }
  8. else
  9. {
  10.   bla
  11.   bla
  12.   bla
  13. }
  14.  
  15.  

PD. Tenes que pasar un puntero a scanf y no un numero: scanf("%d", &usuario); y comparar un caracter contra un caracter y no una cadena,  if (pass == 'a');
Título: Re: Como Puedo Hacer Que No Me Tire Error?
Publicado por: franz. en Domingo 15 de Junio de 2008, 00:39
Código: Text
  1. #include&#60;stdio.h&#62;
  2. int main(void)
  3. {
  4.        int usuario,clave=123;
  5.        printf(&#34;Ingrese su clave&#092;n&#34;);
  6.        scanf(&#34;%d&#34;,usuario);
  7.        if (usuario == clave)
  8. {
  9.                system(&#34;clear&#34;);
  10.                system(&#34;date&#34;);
  11.                printf(&#34;Acceso autorizado Bienvenido&#092;n&#34;);
  12. }
  13.        else
  14. {
  15.                printf(&#34;Acceso Denegado lo lamento&#092;n&#34;);
  16. }
  17.        getch();
  18.  
  19.        return 0;
  20. }
  21.  
  22.  
ya le acomode las llaves de varias formas y no me jala :(
Título: Re: Como Puedo Hacer Que No Me Tire Error?
Publicado por: Iganguli en Domingo 15 de Junio de 2008, 04:48
te has olvidado de hacer lo que dijo eternal cuando usas scanf te hace flata &usuario modificalo y haber que tal
Título: Re: Como Puedo Hacer Que No Me Tire Error?
Publicado por: lostshell en Domingo 15 de Junio de 2008, 05:32
Cita de: "franz."
Código: Text
  1. #include&#60;stdio.h&#62;
  2. int main(void)
  3. {
  4.        int usuario,clave=123;
  5.        printf(&#34;Ingrese su clave&#092;n&#34;);
  6.        scanf(&#34;%d&#34;,usuario);
  7.        if (usuario == clave)
  8. {
  9.                system(&#34;clear&#34;);
  10.                system(&#34;date&#34;);
  11.                printf(&#34;Acceso autorizado Bienvenido&#092;n&#34;);
  12. }
  13.        else
  14. {
  15.                printf(&#34;Acceso Denegado lo lamento&#092;n&#34;);
  16. }
  17.        getch();
  18.  
  19.        return 0;
  20. }
  21.  
  22.  
ya le acomode las llaves de varias formas y no me jala :(
tienes varios errores ahi.
1. no estas incluyendo la liberia para usar 'system' (stdlib,h)
2. no estas usando bien el scanf (lee lo que puso franz)
3. getch es una funcion de borland (conio.h), prueba con getchar
Título: Re: Como Puedo Hacer Que No Me Tire Error?
Publicado por: franz. en Jueves 19 de Junio de 2008, 22:55
Código: Text
  1. #include&#60;stdio.h&#62;
  2. int main(void)
  3. {    int usuario,clave=123;
  4.         printf(&#34;Ingrese su clave&#092;n&#34;);
  5.         scanf(&#34;%d&#34;,&usuario);
  6.       if (usuario == clave)
  7.       {
  8.           system(&#34;clear&#34;);
  9.            system(&#34;date&#34;);
  10.            printf(&#34;Acceso autorizado Bienvenido&#092;n&#34;);
  11.       }
  12.             else
  13.             {
  14.             printf(&#34;Acceso Denegado lo lamento&#092;n&#34;);
  15.             }                                                                   getch();
  16.  
  17.        return 0;
  18. }
  19.  
  20.  
me sigue dando error:
[th3r0rn@Linux c]$ gcc login.c -o login
/tmp/cc7Blhhg.o: In function `main':
login.c:(.text+0x72): undefined reference to `getch'
collect2: ld devolvió el estado de salida 1
[th3r0rn@Linux c]$

y sobre la funcion system yo la he usado sin incluir mas que la libreria stdio.h
Título: Re: Como Puedo Hacer Que No Me Tire Error?
Publicado por: Eternal Idol en Jueves 19 de Junio de 2008, 23:14
Cito lo ya dicho:
3. getch es una funcion de borland (conio.h), prueba con getchar