Autor Tema: sentencia IF con un string  (Leído 7785 veces)

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

Desconectado NarKo

  • PIC10
  • *
  • Mensajes: 12
sentencia IF con un string
« en: 22 de Agosto de 2006, 02:57:07 »
hola amigos estado avanzando con el manual de C y ahora me a surjido un problema y me preguntava si seria posible hacer que un IF trabaje con un string.

ejemplo:

C="i==1";
if(C){
         printf("SI ES IGUAL A UNO");
}ELSE{
         printf("NO LO ES");
}


SALUDOS Y GRACIAS..

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: sentencia IF con un string
« Respuesta #1 en: 22 de Agosto de 2006, 04:06:46 »
Tal y como está construido eso, ni te funcionará en C para PIC, ni en C para PC.

Ahí literalmente estás diciendo que si la variable C es distinta de 0 ejecute el primer printf y si no el segundo. La variable C tiene un valor distinto de 0, por lo que siempre se ejecutará el primero.


Desconectado NarKo

  • PIC10
  • *
  • Mensajes: 12
Re: sentencia IF con un string
« Respuesta #2 en: 22 de Agosto de 2006, 09:52:46 »
gracias nocturno, y en el caso que necesite que ayan muchas if no ay forma de hacerlo eficiente y no tener que escribir cada una de las if??



saludos....

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: sentencia IF con un string
« Respuesta #3 en: 22 de Agosto de 2006, 10:44:07 »
Puede que te sirva el comando Switch.

Aquí te dejo el ejemplo que viene en la ayuda:
Código: C
  1. switch (cmd) {
  2.  
  3.     case 0:printf("cmd 0");
  4.  
  5.            break;
  6.  
  7.     case 1:printf("cmd 1");
  8.  
  9.            break;
  10.  
  11.     default:printf("bad cmd");
  12.  
  13.             break; }

Desconectado djpalas

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 595
    • Microtronic
Re: sentencia IF con un string
« Respuesta #4 en: 22 de Agosto de 2006, 11:50:45 »
Buenas Narko!!

Para que el IF trabaje con strings en el interior de la condición del IF puede ir por ejemplo una comparación de strings.

Código: C++
  1. cadena1 = "pepe";      // Asignamos las cadenas
  2. cadena2 = "manolo";  //
  3.  
  4. if (cadena1==cadena2)
  5.     printf("Las cadenas son iguales");
  6. else
  7.     printf("Son distintas");
En el ejemplo siempre se ejecutará la sentencia del "else" puesto que el resultado booleano de la comparación es FALSE.

Respecto al ejemplo del control de flujo switch que ha colocado manolo, está perfectamente, pero me gustaría añadir que solo puedes utilizarlo con datos tipo enteros ó tipo carácter.

Saludos desde Cádiz, España
Web personal: http://www.microtronic.es

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: sentencia IF con un string
« Respuesta #5 en: 25 de Agosto de 2006, 21:57:07 »
Dipalas eso tampoco funcionara, para comparar cadenas hay que utilizar una función del tipo:

SIGNED INT STRCMP (char *s1, char *s2)
Compara s1 y s2; devuelve -1 si s1<s2, 0 si s1=s2, 1 si s1>s2.

SIGNED INT STRNCMP (char *s1, char *s2, int n)
Compara un máximo de n caracteres (que no vayan seguidos de 0) de s1 a s2;
devuelve -1 si s1<s2, 0 si s1=s2, y 1 si s1>s2.

SIGNED INT STRICMP (char *s1, char *s2)
Compara s1 y s2 sin hacer distinción entre mayúsculas y minúsculas. Devuelve -1
si s1<s2, 0 si s1=s2, y 1 si s1>s2.

Donde s1 y s2 son cadenas. El compilador de "C" solo pude comparar caracteres aislados, esto sí se podria hacer:

if ('a'=='b') => devuelve falso

if ('a'=='a') => devuelve cierto

Un saludo
« Última modificación: 25 de Agosto de 2006, 21:59:25 por jfh900 »
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado djpalas

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 595
    • Microtronic
Re: sentencia IF con un string
« Respuesta #6 en: 26 de Agosto de 2006, 17:20:36 »
Muchas gracias Jesús!

Por la aclaración del tratamiento de las cadenas de caracteres, como diría "Kintaro Oe" ( Protagonista de la serie anime GoldenBoy) Aprendo, aprendo, aprendo .....  ;)

PD: Os aconsejo que le echéis un vistazo si os queréis reír, es un humor un poco subido de tono, pero la verdad que te partes de la risa ;)
Os dejo unos enlaces de www.youtube.com, donde se encuentra algunos episodios en ingles (El 1º Sobre Programación)
Parte 1:
Parte 2:
Parte 3:

Lo vende en DVD en Español, por si os ha gustado ;)

Saludos desde Cádiz, España
Web personal: http://www.microtronic.es

Desconectado NarKo

  • PIC10
  • *
  • Mensajes: 12
Re: sentencia IF con un string
« Respuesta #7 en: 29 de Agosto de 2006, 02:53:13 »
muchas gracias como siempre me fueron de mucha ayuda, ay cada vez avanso mas en mi proyecto.


saludos y gracias