Problema con String y la sentencia if en c

Iniciado por Dark Side 2809, 14 Octubre 2020, 18:29 PM

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

Dark Side 2809

// El codigo consiste en recibir un par de numeros y pedir una letra, (p)o (i), si la eleccion es "p " el debe de mostrar los numeros pares, lo mismo con los inpares, pero a la hora de correrlo me recibe la informacion pero no me devuelve nada.... alguien que me pueda excplicar se lo agradeceria :-( :-( :-(


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


int main(int argc, char *argv[]) {

int numero1,numero2;
char eleccion [30];



printf("Introduzca el primer digito:\n");
scanf("%i", &numero1 );

printf("Introduzca el segundo digito:\n");
scanf("%i", &numero2 );

printf("Introduzca elija el formato a presentra\n");
printf("Par [p]  ||  impar [i]\n");
fflush(stdin);
scanf("%s", &eleccion );


if((eleccion=="p") && (numero1/2==0))
{
printf("Par: [ %i ]",numero1);

}
if((eleccion=="p") && (numero2/2==0))
{
printf("Par: [ %i ]",numero2);

}
if((eleccion=="i") && (numero1 !=0))
{
printf("impar: [ %i ]",numero1);

}
if((eleccion=="i") && (numero2 !=0))
{
printf("impar: [ %i ]",numero2);

}

return 0;
}

EdePC

El problemas está en como obtienes un número par o impar. Si el residuo de la división entre un número y 2 sale 0 es que es par, caso contrario es impar, para esto se usa el operador módulo (%):

numero1 % 2 == 0; // True si es par, False si es impar

También debes usar strcmp o similar para comparar texto, le he puesto un ! delante porque strcmp devuelve 0 si la comparación es Igual, como 0 es considerado False, le pongo el Operador de Negación para pasarlo a Verdadero:

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

int main(int argc, char *argv[]) {

   int numero1, numero2;
   char eleccion[30];
   
   printf("Introduzca el primer digito:\n");
   scanf("%i", &numero1 );
   
   printf("Introduzca el segundo digito:\n");
   scanf("%i", &numero2 );
   
   printf("Introduzca elija el formato a presentar\n");
   printf("Par [p]  ||  impar [i]\n");
   fflush(stdin);
   scanf("%s", &eleccion );

   if ( !strcmp(eleccion, "p") && (numero1 % 2 == 0) ) {
     printf("Par: [ %i ]", numero1);
   }
   if ( !strcmp(eleccion, "p") && (numero2 % 2 == 0) ) {
     printf("Par: [ %i ]", numero2);
   }
   if ( !strcmp(eleccion, "i") && (numero1 % 2 != 0) ) {
     printf("impar: [ %i ]", numero1);
   }
   if ( !strcmp(eleccion, "i") && (numero2 % 2 != 0) ) {
      printf("impar: [ %i ]",numero2);
   }

   getchar(); // Para pausar la pantalla al final
   return 0;
}


De momento queda así, sin tanto cambio para que lo entiendas, pero siempre se puede optimizar el código ...

Dark Side 2809

Muchas gracias hermano siempre se aprende algo nuevo ;-) ;-) ya habia usado el strcmp pero me daba el mismo error, no sabia eso el uso del signo !....