As questões devem ser implementadas em C.
Escreva um programa que leia n valores, um de cada vez, e conte quantos destes valores são negativos, escrevendo esta informação na tela. (1)

Passo 1

O enunciado pede o seguinte: ler n valores, um por vez, e contar quantos desses valores são negativos. Mais formalmente:
  • Entrada: um inteiro n que indica quantos valores serão lidos, seguido de n valores (cada um lido individualmente).
  • Saída: escrever na tela a quantidade de valores lidos que são menores que 0.
    Não há outras perguntas no enunciado; só é preciso relatar essa contagem.

Passo 2

Visão geral do método que vamos usar (sem código ainda):
  • Ler n.
  • Manter uma variável contadora count iniciada em 0.
  • Repetir n vezes: ler um valor x e, se x<0, aumentar count em 1.
  • Ao final, imprimir o valor de count.
Essa é a forma mais direta e eficiente para o problema: um laço com teste simples em cada iteração.

Passo 3

Explicando as estruturas básicas em C que usaremos (tipo, entrada/saída e laço):
  • Biblioteca: incluir \texttt{<stdio.h>} para usar \texttt{scanf} e \texttt{printf}.
  • Função principal: declarar \texttt{int main(void)} e retornar \texttt{0} ao final.
  • Tipos de variáveis:
    • n será inteiro ( \texttt{int}) pois conta quantos valores serão lidos.
    • count será inteiro ( \texttt{int}) para contar quantos negativos.
    • x pode ser inteiro ou real; usar \texttt{double} torna o programa mais geral (aceita números com casa decimal).
  • Entrada: \texttt{scanf("%d", \&n)} n. Para ler cada x real usar \texttt{scanf("%lf", \&x)}.

Passo 4

Detalhando a inicialização do contador:
  • Sempre iniciar o contador em zero:
    • Em C: \texttt{int count = 0;}
  • Por que isso é importante? Porque vamos incrementar esse valor quando encontrarmos números negativos; começar com outro valor daria resposta errada.

Passo 5

Estrutura do laço para repetir a leitura n vezes:
  • Usaremos um laço \texttt{for} com um índice i que varia de 0 até n-1.
  • Em notação: para i=0,1,\dots,n-1 faça:
    • leia x;
    • se x<0 então count \leftarrow count+1.
  • Em C isso vira: \texttt{for (int i = 0; i < n; i++) \{ ... \}}.
  • Observação prática: se a entrada tiver menos que n valores (erro de arquivo/EOF), o programa pode interromper a leitura; vamos verificar o retorno de \texttt{scanf} para maior robustez.

Passo 6

Condição para identificar negativo:
  • Conceito: um número x é negativo quando x < 0.
  • Em C: \texttt{if (x < 0) count++;}
  • Isso considera zero como não-negativo e números positivos como não-negativos — conforme pedido, só contamos os menores que zero.

Passo 7

Sobre formatos de leitura/saída e boas práticas:
  • Para ler um inteiro n: \texttt{scanf("%d", \&n)}.
  • Para ler um real x: \texttt{scanf("%lf", \&x)}.
  • Sempre conferir o retorno de \texttt{scanf} (retorna \texttt{1} se conseguiu ler um valor). Se falhar, é razoável interromper a leitura.
  • Para imprimir o resultado: \texttt{printf("Quantidade de valores negativos: %d\n", count);}.

Passo 8

Tratamento de casos de borda (pequena checagem mental para a prova):
  • Se n \le 0: o laço não será executado e count permanecerá 0. Imprimir 0 é coerente.
  • Se os valores forem reais com representação estranha, a comparação x<0 continua válida.
  • Se a entrada terminar antes de n leituras, o programa que usa verificação de retorno de \texttt{scanf} evita comportamento indefinido (apenas para maior segurança em testes automatizados).

Passo 9

Exemplo rápido para fixar (hipotético):
  • Entrada simulada: n=5 e os valores -3,\;0,\;2,\;-1,\;4.
  • Passando pela lógica:
    • x=-3 → negativo → count=1.
    • x=0 → não negativo → count=1.
    • x=2 → não negativo → count=1.
    • x=-1 → negativo → count=2.
    • x=4 → não negativo → count=2.
  • Saída esperada: imprimir \,2 (ou a mensagem com \,2).

Passo 10

Resumo final do que o programa fará:
  • Ler \,n.
  • Repetir \,n vezes: ler \,x; se \,x<0 incrementar contador.
  • Imprimir a quantidade final de valores negativos.

Resposta

#include <stdio.h>

int main(void) {
    int n;
    if (scanf("%d", &n) != 1) return 0;

    int count = 0;
    double x;
    for (int i = 0; i < n; i++) {
        if (scanf("%lf", &x) != 1) break;
        if (x < 0) count++;
    }

    printf("Quantidade de valores negativos: %d\n", count);
    return 0;
}

Exercícios relacionados