As questões devem ser implementadas em C.
Escreva um programa que leia
valores, um de cada vez, e conte quantos destes valores são negativos, escrevendo esta informação na tela. (1)
Escreva um programa que leia
Passo 1
O enunciado pede o seguinte: ler
valores, um por vez, e contar quantos desses valores são negativos. Mais formalmente:
- Entrada: um inteiro
que indica quantos valores serão lidos, seguido de valores (cada um lido individualmente). - Saída: escrever na tela a quantidade de valores lidos que são menores que
.
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
. - Manter uma variável contadora
iniciada em . - Repetir
vezes: ler um valor e, se , aumentar em . - Ao final, imprimir o valor de
.
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
para usar e . - Função principal: declarar
e retornar ao final. - Tipos de variáveis:
-
será inteiro ( ) pois conta quantos valores serão lidos. -
será inteiro ( ) para contar quantos negativos. -
pode ser inteiro ou real; usar torna o programa mais geral (aceita números com casa decimal).
-
- Entrada:
lê . Para ler cada real usar .
Passo 4
Detalhando a inicialização do contador:
- Sempre iniciar o contador em zero:
- Em C:
- Em C:
- 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
vezes:
- Usaremos um laço
com um índice que varia de até . - Em notação: para
faça: - leia
; - se
então .
- leia
- Em C isso vira:
. - Observação prática: se a entrada tiver menos que
valores (erro de arquivo/EOF), o programa pode interromper a leitura; vamos verificar o retorno de para maior robustez.
Passo 6
Condição para identificar negativo:
- Conceito: um número
é negativo quando . - Em C:
- 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
: . - Para ler um real
: . - Sempre conferir o retorno de
(retorna se conseguiu ler um valor). Se falhar, é razoável interromper a leitura. - Para imprimir o resultado:
Passo 8
Tratamento de casos de borda (pequena checagem mental para a prova):
- Se
: o laço não será executado e permanecerá . Imprimir é coerente. - Se os valores forem reais com representação estranha, a comparação
continua válida. - Se a entrada terminar antes de
leituras, o programa que usa verificação de retorno de evita comportamento indefinido (apenas para maior segurança em testes automatizados).
Passo 9
Exemplo rápido para fixar (hipotético):
- Entrada simulada:
e os valores . - Passando pela lógica:
-
→ negativo → . -
→ não negativo → . -
→ não negativo → . -
→ negativo → . -
→ não negativo → .
-
- Saída esperada: imprimir
(ou a mensagem com ).
Passo 10
Resumo final do que o programa fará:
- Ler
. - Repetir
vezes: ler ; se 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;
}