Foros del Web » Programación para mayores de 30 ;) » C/C++ »

uso del while

Estas en el tema de uso del while en el foro de C/C++ en Foros del Web. Hola, quiero hacer un bucle while que me pida introducir un color mientras que el color no sea rojo continuar pidiendo, en el momento que ...
  #1 (permalink)  
Antiguo 17/03/2010, 13:51
 
Fecha de Ingreso: febrero-2010
Mensajes: 258
Antigüedad: 14 años, 2 meses
Puntos: 0
uso del while

Hola, quiero hacer un bucle while que me pida introducir un color mientras que el color no sea rojo continuar pidiendo, en el momento que sea rojo salir del bucle. Lo he intentado pero no me sale. Este es mi programa en C:

#include <stdio.h>
#include <stdlib.h>

int main(){
char color[15]="rojo";
while(color != "rojo"){
printf("Introduce un color:");
scanf("%14s",color);
}
printf("El color es el %s\n",color);
}

Última edición por minette1988; 17/03/2010 a las 13:53 Razón: modificar texto
  #2 (permalink)  
Antiguo 18/03/2010, 19:47
 
Fecha de Ingreso: agosto-2009
Ubicación: Cartagena, Colombia
Mensajes: 516
Antigüedad: 14 años, 8 meses
Puntos: 13
Respuesta: uso del while

Hola,
primero que todo estas comparando mas las cadenas, tienes que usar la funcion strcmp de la libreria string.h

Código C++:
Ver original
  1. while(!strcmp(color,"rojo")){
  2.     ..........
  3. }

con esa condicion nunca va a entrar el while ya que estas inicializando la variable color con rojo.

Salu2
__________________
Un camino de mil millas comienza por el primer paso. Lao Tse
  #3 (permalink)  
Antiguo 19/03/2010, 08:22
 
Fecha de Ingreso: febrero-2010
Mensajes: 258
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: uso del while

Hola, he hecho lo siguiente, pero una vez introduzco el color y le doy a Enter acaba y no me sigue pidiendo. La variable color puede inicializarse así?: char color[5]="rojo". ¿Puedes decirme dónde está el fallo?. Gracias.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main () {

char color[5]="rojo";
int i;

while(!strcmp(color,"rojo")){
printf("Introduce un color:");
scanf("%14s",color);
}
}
  #4 (permalink)  
Antiguo 19/03/2010, 08:39
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: uso del while

Hay que tener cuidado con el tamaño de la variable color. Le estas dando espacio para 5 caracteres.
Al ingresar el color, no puedes poner mas de 4 en realidad, porque hay que reservar 1 espacio para el \0 final

Tal vez podrias intentar cambiando

char color[5]="rojo";

por

char color[50]="rojo";
  #5 (permalink)  
Antiguo 19/03/2010, 15:42
 
Fecha de Ingreso: agosto-2009
Ubicación: Cartagena, Colombia
Mensajes: 516
Antigüedad: 14 años, 8 meses
Puntos: 13
Respuesta: uso del while

Cita:
Hola, he hecho lo siguiente, pero una vez introduzco el color y le doy a Enter acaba y no me sigue pidiendo. La variable color puede inicializarse así?: char color[5]="rojo". ¿Puedes decirme dónde está el fallo?. Gracias.
disculpa la condicion de while esta incompleta, es asi:
Código C++:
Ver original
  1. while(strcmp(color,"rojo") != 0){

para inicializar la variable no tienes que poner la cantidad de caracteres que va a tener:

Código C++:
Ver original
  1. char color[] = "rojo";  // esta es la forma correcta

Saludos!
__________________
Un camino de mil millas comienza por el primer paso. Lao Tse
  #6 (permalink)  
Antiguo 19/03/2010, 19:00
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: uso del while

Cita:
Iniciado por mhax Ver Mensaje
para inicializar la variable no tienes que poner la cantidad de caracteres que va a tener:

Código C++:
Ver original
  1. char color[] = "rojo";  // esta es la forma correcta

Saludos!
Esto es un error. Si no pones la cantidad de caracteres, la variable tendra tantos caracteres como el largo del string + 1, y no podras copiar en ella mas caracteres que esos.

Por ejemplo, si quieres copiar luego "amarillo", la variable color no tendra espacio suficiente.
  #7 (permalink)  
Antiguo 19/03/2010, 20:43
 
Fecha de Ingreso: agosto-2009
Ubicación: Cartagena, Colombia
Mensajes: 516
Antigüedad: 14 años, 8 meses
Puntos: 13
Respuesta: uso del while

Tienes razon CalgaryCorpus, no pense en el tamaño de otros colores.
__________________
Un camino de mil millas comienza por el primer paso. Lao Tse
  #8 (permalink)  
Antiguo 20/03/2010, 05:47
 
Fecha de Ingreso: febrero-2010
Mensajes: 258
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: uso del while

Hola, ahora cuando lo compilo no hace nada, ¿dónde están los fallos, por favor?. Gracias.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>



int main () {

char color[]="rojo";


while(strcmp(color,"rojo")!=0){
printf("Introduce un color:");
scanf("%s",color);
}
}
  #9 (permalink)  
Antiguo 20/03/2010, 06:22
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: uso del while

Reemplazaste

while( !strcmp(color,"rojo") )

por

while( strcmp( color, "rojo" ) != 0 )

que son exactamente opuestas.

Mientras en la primera el ciclo continua mientras color sea rojo, la segunda el ciclo continuará mientras color NO sea rojo.

Si la variable color parte con el valor "rojo", en el primer caso ingresara al ciclo, en el segundo, no ingresará nunca.

Insisto en que al inicializar la variable color, utilices un tamaño grande (50, por ejemplo), de otra manera, la variable no tendra espacios para nombres mas largos.

Última edición por CalgaryCorpus; 20/03/2010 a las 06:27
  #10 (permalink)  
Antiguo 20/03/2010, 06:24
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: uso del while

....................

Última edición por CalgaryCorpus; 20/03/2010 a las 06:32
  #11 (permalink)  
Antiguo 20/03/2010, 07:32
 
Fecha de Ingreso: febrero-2010
Mensajes: 258
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: uso del while

Hola de nuevo he hecho lo siguiente, pero no hace nada, no me aclaro,¿ puedes darme una solucón?. Gracias.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>



int main () {

char color[50]="rojo";


while(strcmp(color,"rojo") != 0 ){
printf("Introduce un color:");
scanf("%49s",color);
}
}
  #12 (permalink)  
Antiguo 20/03/2010, 08:31
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: uso del while

Mira todo el comentario #9

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 16:41.