Baixar a apostila de C++ |
Operador Condicional ?: em C++
O operador ?: é o único ternário na linguagem, ou seja, o único que aceita três operandos.A sintaxe desse operador condicional ternário é:
- condição ? instrução1 : instrução2 ;
Seu funcionamento é bem simples, a condição condição é testada.
Se ela for verdadeira a instrução instrução1 é executada.
Caso a condição seja falsa, a instrução2 que é executada.
É basicamente um teste condicional IF ELSE, mas um simples, curtinho, para executar instruções de uma linha só.
Vamos refazer alguns exemplos de programa que fizemos usando IF e ELSE, mas agora usando o operador ternário ?:
Como usar o Operador Ternário ?:
Você foi contratado para fazer um programa para uma casa de shows. Em determinado trecho do código, você vai pedir a idade do cliente. Se for maior de idade (tem 18 anos ou mais), avise que ele pode comprar o ingresso. Se tiver menos, seu programa deve informar que ele não pode entrar na casa.
Nosso código fica assim:
Nosso código fica assim:
#include <iostream> using namespace std; int main() { int age; cout << "Sua idade: "; cin >> age; age>=18 ? (cout << "Ok, você é de maior!") : (cout << "Você é de menor, não pode entrar!") ; return 0; }
Bem simples, não é?
Operador Ternário ?: como utilizar em C++
Seu professor te contratou para criar um programa que recebe a nota do aluno. Caso ela seja 7.0 ou mais, ele foi aprovado. Caso contrário, ele está reprovado.
Usando o operador ternário:
#include <iostream> using namespace std; int main() { float grade; cout << "Sua nota: "; cin >> grade; grade>=7 ? (cout << "Aprovado"):(cout << "Reprovado"); return 0; }
Bem mais enxuto o código.
Exemplo de uso de ?:
Escreva um programa que pergunta o salário de uma pessoa. Se for maior que 3 mil, tem que pagar 20% de imposto. Se for menor, tem que pagar 15%. Exiba o valor do imposto que a pessoa tem que pagar. Imposto é roubo ?
#include <iostream> using namespace std; int main() { float sal, tax; cout << "Seu salário: "; cin >> sal; tax = sal>3000 ? 0.20 : 0.15; cout << "Imposto devido: R$ " << tax*sal <<endl; return 0; }
Essa solução ficou bem mais geniosa.
A variável tax vai receber o valor que retorna do operador condicional, que é 0.20 ou 0.15.
Usando o operador ternário ?: em C++
Escreva, usando o operador condicional ternário, um programa que recebe um inteiro e diz se ele é par ou ímpar.
#include <iostream> using namespace std; int main() { int num; cout << "Digite um numero: "; cin >> num; num%2==0 ? cout <<"É par" : cout <<"É impar"; return 0; }
Exercício proposto
Quando fizemos nossa calculadora simples em C++, deixamos um bug lá de propósito.Rode ela novamente e digite dois números, mas o segundo é 0.
Vai dar erro, pois não é possível fazer uma divisão por 0.
Resolva esse bug da calculadora, testando se o usuário digitou 0 e diga que não é possível resolver a operação de divisão, usando o operador ternário.
Poste sua solução nos comentários.
O programinha foi compilado e deu certo, mas está pouco elegante:
ResponderExcluir#include
using namespace std;
int main(){
float num1, num2;
cout << "Primeiro numero: ";
cin >> num1;
cout << "Segundo numero: ";
cin >> num2;
cout << "Soma : "<< num1 + num2 << endl;
cout << "Subtração : "<< num1 - num2 << endl;
cout << "Multiplicação : "<< num1 * num2 << endl;
num2 == 0 ? cout << "Impossível fazer divisão por zero" :
cout << "Divisão : " << num1 / num2 << endl;
num2 == 0 ? cout << "Impossível fazer divisão por zero" :
cout << "Modulo : " << (int)num1 % (int)num2 << endl;
cout << "Porcentagem : "<< num1 + num2 << endl;
cout << "Media : "<< num1 + num2 << endl;
return 0;
}
// Biblioteca
ResponderExcluir#include
using namespace std;
int main() {
// Váriavel
double num1, num2;
// Código
cout << "Digite o primeiro valor: ";
cin >> num1;
cout << "Digite o segundo valor: ";
cin >> num2;
cout << num1 << " + " << num2 << " = " << num1 + num2 << endl; // Adição
cout << num1 << " - " << num2 << " = " << num1 - num2 << endl; // Subtração
cout << num1 << " * " << num2 << " = " << num1 * num2 << endl; // Multiplicação
if (num1 and num2 > 0) {
cout << num1 << " / " << num2 << " = " << num1 / num2 << endl; // Divisão
}
else {
cout << "Impossível dividir por 0! ";
}
cout << num1 << " % de " << num2 << " = " << (num1 / 100) * num2 << " % " << endl; // Porcentagem
}
#include
ResponderExcluirusing namespace std;
int main()
{
//declaracão de variaveis
float n1, n2, resultado;
int resto;
char operador;
//escolha de numeros e operador para calcular
cout << "digite um numero: ";
cin >> n1;
cout << "digite outro numero: ";
cin >> n2;
cout << "escolha uma operacao : (+ , - , * , / ) : ";
cin >> operador;
// contas diferentes para cada operador escolhido
switch (operador)
{
case'+':
resultado = n1 + n2;
break;
case'-':
resultado = n1 - n2;
break;
case'*':
resultado = n1 * n2;
break;
case'/':
if (n2 != 0)
{
resultado = n1 / n2;
resto = (int)n1 % (int)n2;
}
else
{
cout << "nao e possivel dividir por 0 ";
}
break;
default:
cout << "operador invalido";
return 1;
}
//exibição de resultado caso escolher divisão ou outros operadores
if (operador == '/')
{
cout << "o resultado e: " << resultado << endl;
cout << "o resto da divisao e: " << resto << endl;
}
else
{
cout << "o resultado e: " << resultado << endl;
}
return 0;
}
#include
ResponderExcluirusing namespace std;
int main()
{
//declaracão de variaveis
float n1, n2, resultado;
int resto;
char operador;
//escolha de numeros e operador para calcular
cout << "digite um numero: ";
cin >> n1;
cout << "digite outro numero: ";
cin >> n2;
cout << "escolha uma operacao : (+ , - , * , / ) : ";
cin >> operador;
// contas diferentes para cada operador escolhido
switch (operador)
{
case'+':
resultado = n1 + n2;
break;
case'-':
resultado = n1 - n2;
break;
case'*':
resultado = n1 * n2;
break;
case'/':
if (n2 != 0)
{
resultado = n1 / n2;
resto = (int)n1 % (int)n2;
}
else
{
cout << "nao e possivel dividir por 0 ";
}
break;
default:
cout << "operador invalido";
return 1;
}
//exibição de resultado caso escolher divisão ou outros operadores
if (operador == '/')
{
cout << "o resultado e: " << resultado << endl;
cout << "o resto da divisao e: " << resto << endl;
}
else
{
cout << "o resultado e: " << resultado << endl;
}
return 0;
}