elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda! con el IF
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda! con el IF  (Leído 1,643 veces)
TopoJunior

Desconectado Desconectado

Mensajes: 40



Ver Perfil
Ayuda! con el IF
« en: 1 Julio 2012, 15:34 pm »

Código
  1. #include <stdio.h>
  2. main()
  3. {
  4. char producto[40];
  5.  
  6. printf("Hola, que producto quiere?\n");
  7. printf("Hay , 1 - patatas, 2 - tomates\n");
  8. scanf("%s", producto);
  9. if (producto=="patatas")
  10. {
  11. printf("Hola\n");
  12. }
  13. else
  14. {
  15. printf("ERROR");
  16. };
  17.  
  18. while(1);
  19.  
  20. }

Bueno.. quiero que cuando ponga patatas salga eso, no quiero mas xD!, creo que está bien, pero en el scanf pongo patatas y me salta el else.... :(
Porfavor si no es así, diganme como sería!!!


En línea

DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: Ayuda! con el IF
« Respuesta #1 en: 1 Julio 2012, 15:58 pm »

Hola.

Para comparar cadenas, no puede hacerse tal y como compararíamos un número o un carácter (y así es como tú lo tienes).

Para compararlas, hay que usar la función strcmp, incluida en la librería string.h .

La función devuelve 0 si las cadenas son iguales, y otro valor si son distintas.

Es decir, el programa quedaría así:

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3. int main()
  4. {
  5. char producto[40];
  6.  
  7. printf("Hola, que producto quiere?\n");
  8. printf("Hay , 1 - patatas, 2 - tomates\n");
  9. scanf("%s", producto);
  10. if ((strcmp(producto, "patatas"))== 0)
  11. {
  12. printf("Hola\n");
  13. }
  14. else
  15. {
  16. printf("ERROR");
  17. }
  18.  
  19. while(1);
  20. return 0;
  21.  
  22. }
  23.  

También te recomiendo usar la función gets (o mejor aún, fgets), para pedir cadenas de caracteres, ya que scanf te coge solo hasta el primer espacio que introduce el usuario.

Cualquier duda, pregunta  ;)

Espero haberte ayudado.

Saludos.


En línea

TopoJunior

Desconectado Desconectado

Mensajes: 40



Ver Perfil
Re: Ayuda! con el IF
« Respuesta #2 en: 1 Julio 2012, 16:08 pm »

Hola.

Para comparar cadenas, no puede hacerse tal y como compararíamos un número o un carácter (y así es como tú lo tienes).

Para compararlas, hay que usar la función strcmp, incluida en la librería string.h .

La función devuelve 0 si las cadenas son iguales, y otro valor si son distintas.

Es decir, el programa quedaría así:

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3. int main()
  4. {
  5. char producto[40];
  6.  
  7. printf("Hola, que producto quiere?\n");
  8. printf("Hay , 1 - patatas, 2 - tomates\n");
  9. scanf("%s", producto);
  10. if ((strcmp(producto, "patatas"))== 0)
  11. {
  12. printf("Hola\n");
  13. }
  14. else
  15. {
  16. printf("ERROR");
  17. }
  18.  
  19. while(1);
  20. return 0;
  21.  
  22. }
  23.  

También te recomiendo usar la función gets (o mejor aún, fgets), para pedir cadenas de caracteres, ya que scanf te coge solo hasta el primer espacio que introduce el usuario.

Cualquier duda, pregunta  ;)

Espero haberte ayudado.

Saludos.


Muchas gracias!!! me sirvio, gracias, pero me puedes explicar todo ? es decir:

if ((strcmp(producto, "patatas"))== 0)   // aqui dice, if (( porque hay que poner dos paréntesis envez de uno ??????, luego, tenemos strcmp(producto, "patatas"))==0 porque hay que poner ))==0 ? eso que significa?
      {
         printf("Hola\n");
      }
      else
         {
            printf("ERROR");
      }
En línea

DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: Ayuda! con el IF
« Respuesta #3 en: 1 Julio 2012, 16:16 pm »

Se pone el "==0" porque la función devuelve 0 si las cadenas son iguales, y otro número si son diferentes.

O sea, diríamos:

"Si las cadenas son iguales, imprime "Hola", sino, imprime "ERROR".

Los dos paréntesis están de más. Pueden ponerse o no, no son obligatorios. Podría ser también así:

Código
  1. if (strcmp(producto, "patatas")== 0)

Saludos.
En línea

TopoJunior

Desconectado Desconectado

Mensajes: 40



Ver Perfil
Re: Ayuda! con el IF
« Respuesta #4 en: 1 Julio 2012, 17:15 pm »

Se pone el "==0" porque la función devuelve 0 si las cadenas son iguales, y otro número si son diferentes.

O sea, diríamos:

"Si las cadenas son iguales, imprime "Hola", sino, imprime "ERROR".

Los dos paréntesis están de más. Pueden ponerse o no, no son obligatorios. Podría ser también así:

Código
  1. if (strcmp(producto, "patatas")== 0)

Saludos.

Muchisimas gracias, me sirvió 100% :)))))
En línea

DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: Ayuda! con el IF
« Respuesta #5 en: 1 Julio 2012, 17:33 pm »

De nada, me alegro de que lo hayas entendido  ;D
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines