Mandar um cafézinho para o programador:


Me ajude a transformar café em código!

Operador Condicional Ternário em C++: ?:

Baixar apostila de C++
Baixar a apostila de C++
Neste tutorial de nosso curso de C++, vamos aprender o que é, para que serve e como usar o operador condicional ternário, o ?:


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:

#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.

4 comentários:

  1. O programinha foi compilado e deu certo, mas está pouco elegante:

    #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;
    }

    ResponderExcluir
  2. // Biblioteca
    #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
    }

    ResponderExcluir
  3. #include
    using 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;
    }

    ResponderExcluir
  4. #include
    using 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;
    }

    ResponderExcluir

Ajude o C++ Progressivo

Que tal apoiar e fazer crescer o ensino da programação no Brasil ?

Ajudar nosso país a crescer e se desenvolver cada vez mais, tecnologicamente?

Clica abaixo pra saber mais!

Apoiar o Projeto Progressivo