// 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;
}
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 ...
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 !....