Fácil C++

Classificação com if

Enunciado

Escreva um programa que leia um número inteiro e informe se ele é positivo, negativo ou zero. Use if com inicializador para declarar a variável dentro da condição.

Requisitos

  • Usar if com inicializador (declarar a variável na condição).
  • Imprimir exatamente positivo, negativo ou zero (minúsculas).
  • O programa deve ler um número inteiro da entrada padrão.

Código inicial

#include <iostream>

int main() {
    // Seu código aqui
    return 0;
}

Saída esperada

positivo
Ver dica

A sintaxe é if (int n = valor; n > 0) { ... } else if (n < 0) { ... } else { ... }. Lembre-se de ler o valor antes do if.

Mostrar solução
#include <iostream>

int main() {
    int valor;
    std::cin >> valor;

    // if com inicializador: 'n' existe apenas dentro do bloco
    if (int n = valor; n > 0) {
        std::cout << "positivo\n";
    } else if (n < 0) {
        std::cout << "negativo\n";
    } else {
        std::cout << "zero\n";
    }

    return 0;
}

Passo a passo

  1. Incluímos <iostream> para entrada e saída.
  2. Declaramos valor e lemos um inteiro do usuário.
  3. No if com inicializador, declaramos int n = valor e testamos n > 0. A variável n só existe dentro do if/else.
  4. Se n > 0, imprimimos positivo.
  5. Senão, testamos n < 0 no else if; se verdadeiro, imprimimos negativo.
  6. Caso contrário, imprimimos zero.

Por que funciona

O if com inicializador permite criar uma variável temporária usada apenas na condição e nos blocos associados, evitando que ela fique visível no restante do programa. A estrutura if/else if/else garante que apenas um dos caminhos seja executado, cobrindo todos os casos possíveis.

Erros comuns

  • Esquecer de ler o valor antes do if: int valor; if (int n = valor; ...) usaria lixo de memória. Corrija lendo com std::cin >> valor; antes.
  • Usar = em vez de == na condição: if (n = 0) atribui e testa o resultado, causando comportamento errado. Use == para comparação.
  • Não usar else if e acabar com dois if independentes, permitindo que mais de uma mensagem seja impressa. Use else if para encadear.

Outra forma de resolver

Sem o inicializador, declarando a variável fora:

int n = valor;
if (n > 0) { ... }

É preferível quando a variável precisa ser usada depois do if.

Saída esperada

positivo