Fazendo comparações sem o uso de IF, ELSE em C
Dica publicada em C/C++ / Introdução
Fazendo comparações sem o uso de IF, ELSE em C
A uns dias atrás um membro do VOL postou uma dúvida sobre como fazer um script no qual deveria ler três
valores inteiros, compará-los e mostrar o maior e menor valor sem uso de IF, ELSE, e FOR.
Logo que vi o post respondi com esse algoritmo que estou postando para compartilhar com aqueles que estejam iniciando na linguagem C.
Nessa dica vou usar o operador " ? ", chamado de "operador ternário" pois requer três operando. Este pode ser usado para substituir os if-else na linguagem C.
Sua forma de funcionamento é:
Exp1 ? Exp2 : Exp3
Onde "Exp1" é expressão1, "Exp2" é expressão2 e assim por diante. O valor de uma expressão "?" é determinada como segue: "Exp1 é avaliada";
a) se for verdadeira, Exp2 será avaliada e se tornará expressão "?" inteira.
b) se for falsa, entao Exp3 é verdadeira e se torna valor da expressão "?" .
O algoritmo é bem simples de entender. São três funções: uma é a main(), a outra para achar o menor e outra para achar o maior. O operador " ? " pode ser considerado como um IF.
Ex: nmenor = b < nmenor ? b : nmenor;
a) "nmenor" vai receber b se a comparação b < n menor for verdade
b) caso contrário receberá "nmenor" e assim por diante...
Qualquer dúvida não exite em perguntar.
;-))
Logo que vi o post respondi com esse algoritmo que estou postando para compartilhar com aqueles que estejam iniciando na linguagem C.
Nessa dica vou usar o operador " ? ", chamado de "operador ternário" pois requer três operando. Este pode ser usado para substituir os if-else na linguagem C.
Sua forma de funcionamento é:
Exp1 ? Exp2 : Exp3
Onde "Exp1" é expressão1, "Exp2" é expressão2 e assim por diante. O valor de uma expressão "?" é determinada como segue: "Exp1 é avaliada";
a) se for verdadeira, Exp2 será avaliada e se tornará expressão "?" inteira.
b) se for falsa, entao Exp3 é verdadeira e se torna valor da expressão "?" .
#include <stdio.h>
int maior (int a, int b, int c) {
int nmaior = a;
nmaior = b>maior ? nmaior : b ;
nmaior = c>nmaior? c : nmaior ;
}
int menor(int a, int b, int c)
{
int nmenor = a;
nmenor = b < nmenor ? b : nmenor;
nmenor = c < nmenor ? c : nmenor;
return nmenor;
}
int main(){
int a,b,c;
printf("Digite 3 valores inteiros");
scanf("%d %d %d",&a,&b,&c);
printf("O maior numero é: %d\n",maior(a,b,c));
printf("O menor numero é: %d\n",menor(a,b,c));
return 0;
}
int maior (int a, int b, int c) {
int nmaior = a;
nmaior = b>maior ? nmaior : b ;
nmaior = c>nmaior? c : nmaior ;
}
int menor(int a, int b, int c)
{
int nmenor = a;
nmenor = b < nmenor ? b : nmenor;
nmenor = c < nmenor ? c : nmenor;
return nmenor;
}
int main(){
int a,b,c;
printf("Digite 3 valores inteiros");
scanf("%d %d %d",&a,&b,&c);
printf("O maior numero é: %d\n",maior(a,b,c));
printf("O menor numero é: %d\n",menor(a,b,c));
return 0;
}
O algoritmo é bem simples de entender. São três funções: uma é a main(), a outra para achar o menor e outra para achar o maior. O operador " ? " pode ser considerado como um IF.
Ex: nmenor = b < nmenor ? b : nmenor;
a) "nmenor" vai receber b se a comparação b < n menor for verdade
b) caso contrário receberá "nmenor" e assim por diante...
Qualquer dúvida não exite em perguntar.
;-))