elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Ingresar Registrarse
18 Noviembre 2008, 11:10  



+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++
| | |-+  Uno pregunta con el while
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Uno pregunta con el while  (Leído 343 veces)
sempus

Desconectado Desconectado

Mensajes: 1.432


GJDAM 愛している


Ver Perfil
Uno pregunta con el while
« en: 17 Febrero 2008, 05:02 »

tengo este codigo

Citar
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define Seguir "si"
main()
{
        char seguir[1];
        int salir = 0;

        while (salir < 0 );
        {
                printf("Desea Salir: \n");
                scanf("%s",&seguir);

                if (strcmp (seguir, Seguir) == 1)
                        salir = 1;


        }
return 0;




}
y quiero que se ejecute siempre hasta que diga algo contrario a "si", pues en otros lenguajes es asi como lo he escrito aqui pero aqui no me funciona, que hago mal? que linea estoy omitiendo?
gracias y un saludo
En línea

Ragnarok
Moderador Global
*****
Desconectado Desconectado

Mensajes: 4.252


Ver Perfil
Re: Uno pregunta con el while
« Respuesta #1 en: 17 Febrero 2008, 05:28 »

http://c.conclase.net/librerias/funcion.php?fun=strcmp

Con lo que tienes hecho sería así:

Código
                if (strcmp (seguir, Seguir) == 0)
                       salir = 1;
 

Pero yo lo haría así:

Código
#include <stdio.h>
#include <string.h>
#define Seguir "si"
int main(){
       char seguir[256]; //algunos compiladores pueden quejarse de esto
       /*solucion:
       char seguir[256];
       strcpy("no", seguir);
       */

       while (strcmp (seguir, Seguir)){
               printf("Desea Salir: \n");
               scanf("%s", seguir);
       }
       return 0;
}

Espero que compile, porque ahora mismo no tengo ningún compilador instalado. (como puedes comprobar he corregido cosas adicionales)
En línea

No olvidéis leer las normas generales, además de las específicas de cada tablón.sgae, ladrones
sempus

Desconectado Desconectado

Mensajes: 1.432


GJDAM 愛している


Ver Perfil
Re: Uno pregunta con el while
« Respuesta #2 en: 17 Febrero 2008, 06:29 »

http://c.conclase.net/librerias/funcion.php?fun=strcmp

Con lo que tienes hecho sería así:

Código
                if (strcmp (seguir, Seguir) == 0)
                       salir = 1;
 

pues no, asi como lo tenia y asi como lo corregistes sigue sin funcionar,no se porque pero no funciona  :P

Pero yo lo haría así:

Código
#include <stdio.h>
#include <string.h>
#define Seguir "si"
int main(){
       char seguir[256]; //algunos compiladores pueden quejarse de esto
       /*solucion:
       char seguir[256];
       strcpy("no", seguir);
       */

       while (strcmp (seguir, Seguir)){
               printf("Desea Salir: \n");
               scanf("%s", seguir);
       }
       return 0;
}

Espero que compile, porque ahora mismo no tengo ningún compilador instalado. (como puedes comprobar he corregido cosas adicionales)
Asi si funciona  :D solo que alrevez  :P si le digo "si" se para y si le digo "no" continua pero no importa,la cosa es que funciona y eso es lo que queria,aunque me hubiera gustado hacer funcionar el codigo que yo tenia  :(
En línea

43H4FH44H45H4CH49H56H45H

Desconectado Desconectado

Mensajes: 87



Ver Perfil
Re: Uno pregunta con el while
« Respuesta #3 en: 17 Febrero 2008, 06:34 »

you're wrong into the compare of equals, Find the equals with 0 
isn't necessary  the stdlib into code, call system == empty

Código:
#include<stdio.h>
#include<string.h>
#define Seguir "si"
int main()
{
        char seguir[1];
        int salir = 0;

       while (salir == 0 )
        {
                printf("Desea Salir: \n");
                scanf("%s",&seguir);

                if (strcmp (seguir, Seguir) == 0)
                        salir = 1;
          }

return 0;
}

I have to go. Good-Bye
En línea


-R IP
:0100
-A 100 
2826:0100 MOV AH,09
2826:0102 MOV DX,109
2826:0105 INT 21
2826:0105 MOV AH,08
2826:0105 INT 21
2826:0107 INT 20
2826:0109 DB 'MI NICK ES CODELIVE.$' 
2826:0127 
-R BX
:0000
-R CX
:20
-N CODELIVE.COM
-W
sempus

Desconectado Desconectado

Mensajes: 1.432


GJDAM 愛している


Ver Perfil
Re: Uno pregunta con el while
« Respuesta #4 en: 17 Febrero 2008, 06:43 »

you're wrong into the compare of equals, Find the equals with 0 
isn't necessary  the stdlib into code, call system == empty

Código:
#include<stdio.h>
#include<string.h>
#define Seguir "si"
int main()
{
        char seguir[1];
        int salir = 0;

       while (salir == 0 )
        {
                printf("Desea Salir: \n");
                scanf("%s",&seguir);

                if (strcmp (seguir, Seguir) == 0)
                        salir = 1;
          }

return 0;
}

I have to go. Good-Bye
hi
acabo de probar este codigo pero no llega al printf("desea segui\n") esta linea se omite,aunque se digite "si" o "no" en programa continua y no impreme el printf("desea continuar\n"), lo de la igualdad dentro del while no lo habia pensado,pero si cambio el == por el < si se imprime el printf(), ya me estoy comenzando a confundir xDDD
salu2
En línea

43H4FH44H45H4CH49H56H45H

Desconectado Desconectado

Mensajes: 87



Ver Perfil
Re: Uno pregunta con el while
« Respuesta #5 en: 17 Febrero 2008, 08:12 »

Código:
/* GCC Linux*/
#include<stdio.h>
#include<string.h>
#define Seguir "si"

int main()
{
        char seguir[2];
        int salir = 0;

       while (salir == 0 )
        {
                printf("Desea Salir: \n");
                scanf("%s",&seguir);
                if (strcmp (Seguir,seguir) == 0)
                {
                        printf("Salgo del Bucle\n");
                        break;
                }

          }
return 0;
}
En línea


-R IP
:0100
-A 100 
2826:0100 MOV AH,09
2826:0102 MOV DX,109
2826:0105 INT 21
2826:0105 MOV AH,08
2826:0105 INT 21
2826:0107 INT 20
2826:0109 DB 'MI NICK ES CODELIVE.$' 
2826:0127 
-R BX
:0000
-R CX
:20
-N CODELIVE.COM
-W
ghastlyX
Moderador Global
*****
Desconectado Desconectado

Mensajes: 1.717


No es posible conseguir nada sin arriesgarse algo


Ver Perfil
Re: Uno pregunta con el while
« Respuesta #6 en: 17 Febrero 2008, 13:37 »

También lo puedes hacer así:
Código
#include <stdio.h>
 
main()
{
     int c;
     printf("Desea salir:\n");
     while(c != EOF)
     {
             c = getchar();
             if (c == 's')
             {
                   if((c = getchar()) == 'i')
                         break;
             }
     }
}
Así funciona, si te lo quieres currar más con este código puedes hacer que se asegure que "si" no es una sílaba.

Un saludo de ghastlyX ;)
En línea
ҒrεακΠιи∂

Desconectado Desconectado

Mensajes: 155



Ver Perfil
Re: Uno pregunta con el while
« Respuesta #7 en: 18 Febrero 2008, 02:15 »

Buenas

1. No voy a decir nada sobre lo de preguntar si strcmp era igual a 1 porque seguramente ya leiste y te diste cuenta que cuando dos cadenas son iguales, devuelve 0 (a mi me ayudo pensar que strcmp devuelve la diferencia entre las cadenas)

2. La solucion de Ragnarok esta, a mi entender bastante bien. Yo lo que haria es poner un do-while en vez de un while, ya que deberias leer primero y comparar despues.

Salu2, FreakMind
En línea

Connoisseurs of C semantics find C++ inferior to ++C
sempus

Desconectado Desconectado

Mensajes: 1.432


GJDAM 愛している


Ver Perfil
Re: Uno pregunta con el while
« Respuesta #8 en: 18 Febrero 2008, 04:22 »

Código:
/* GCC Linux*/
#include<stdio.h>
#include<string.h>
#define Seguir "si"

int main()
{
        char seguir[2];
        int salir = 0;

       while (salir == 0 )
        {
                printf("Desea Salir: \n");
                scanf("%s",&seguir);
                if (strcmp (Seguir,seguir) == 0)
                {
                        printf("Salgo del Bucle\n");
                        break;
                }

          }
return 0;
}

Thank
Todos los codigos me gustan,pero me gusta mas este por lo que quiero hacer, gracias a Todos
« Última modificación: 18 Febrero 2008, 05:34 por sempus » En línea

Páginas: [1] Ir Arriba Imprimir 
Ir a:  







Consolas     La Web de Goku     MilW0rm     MundoDivx

Hispabyte     Truzone     TodoReviews     ZonaPhotoshop

Foros de ayuda    Yashira.org    Videojuegos    indetectables.net   

Noticias Informatica    Seguridad Informática    ADSL    eNYe Sec

Todas las webs afiliadas están libres de publicidad engañosa.

Powered by SMF 1.1.7 | SMF © 2006-2008, Simple Machines LLC