📦 Capítulo: Vetores - Exercícios Práticos
Nesta lista de exercícios, você praticará a manipulação de coleções de dados indexadas em memória (vetores / arrays unidimensionais).
🗺️ Mapa de Progressão Pedagógica
graph LR
A["Nível 1: Fundamentos\n(negativos, soma_vetor)"] --> B["Nível 2: Prática\n(numeros_pares, maior_posicao)"]
B --> C["Nível 3: Integração\n(alturas, media_pares)"]
C --> D["Nível 4: Desafio\n(comerciante)"]
style A fill:#e1f5fe,stroke:#03a9f4,stroke-width:2px
style B fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
style C fill:#fff3e0,stroke:#ff9800,stroke-width:2px
style D fill:#fce4ec,stroke:#e91e63,stroke-width:2px
🟢 Nível 1 — Fundamentos
Exercício 1: Problema “negativos”
Enunciado: Faça um programa que leia um número inteiro positivo $N$ ($N \le 10$) e depois $N$ números inteiros e armazene-os em um vetor. Em seguida, mostre na tela todos os números negativos lidos.
Resultado Esperado
Exemplo de Execução:
Quantos numeros voce vai digitar? 6
Digite um numero: 8
Digite um numero: -2
Digite um numero: 9
Digite um numero: 10
Digite um numero: -3
Digite um numero: -7
NUMEROS NEGATIVOS:
-2
-3
-7
flowchart TD
Start(["Início"]) --> LerN["Ler N (quantidade de elementos)"]
LerN --> LoopLeitura["Loop: Ler elementos e salvar no vetor[i]"]
LoopLeitura --> LoopFiltro["Loop: Percorrer vetor[i]"]
LoopFiltro --> Decisao{"vetor[i] < 0 ?"}
Decisao -- "Sim" --> Imprime["Exibir vetor[i]"]
Decisao -- "Não" --> Proximo["Avançar i"]
Imprime --> Proximo
Proximo --> Fim(["Fim"])
📤 Instruções de Entrega (Microsoft Teams)
Após validar seus códigos:
- Salve os arquivos DO CÓDIGO no formato:
Atividade_09_Vetores_Negativos_SeuNome - Envie os arquivos no Microsoft Teams na tarefa:
Atividade Cap 09 - Vetores e Coleções
🔑 Gabarito de Código (C, Java e Python)
Solução em C:
#include <stdio.h>
int main() {
int n, i;
printf("Quantos numeros voce vai digitar? ");
scanf("%d", &n);
int vet[n];
for (i = 0; i < n; i++) {
printf("Digite um numero: ");
scanf("%d", &vet[i]);
}
printf("\nNUMEROS NEGATIVOS:\n");
for (i = 0; i < n; i++) {
if (vet[i] < 0) {
printf("%d\n", vet[i]);
}
}
return 0;
}
Solução em Java:
import java.util.Scanner;
public class Negativos {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Quantos numeros voce vai digitar? ");
int n = sc.nextInt();
int[] vet = new int[n];
for (int i = 0; i < n; i++) {
System.out.print("Digite um numero: ");
vet[i] = sc.nextInt();
}
System.out.println("\nNUMEROS NEGATIVOS:");
for (int i = 0; i < n; i++) {
if (vet[i] < 0) {
System.out.println(vet[i]);
}
}
sc.close();
}
}
Solução em Python:
n = int(input("Quantos numeros voce vai digitar? "))
vet = []
for _ in range(n):
vet.append(int(input("Digite um numero: ")))
print("\nNUMEROS NEGATIVOS:")
for num in vet:
if num < 0:
print(num)
🟡 Nível 2 — Prática
Exercício 2: Problema “soma_vetor”
Enunciado: Faça um programa que leia $N$ números reais e armazene-os em um vetor. Em seguida:
- Imprima todos os elementos do vetor na mesma linha.
- Mostre a soma e a média dos elementos do vetor com duas casas decimais.
Resultado Esperado
Exemplo de Execução:
Quantos numeros voce vai digitar? 4
Digite um numero: 8.0
Digite um numero: 4.0
Digite um numero: 10.0
Digite um numero: 14.0
VALORES = 8.00 4.00 10.00 14.00
SOMA = 36.00
MEDIA = 9.00
📤 Instruções de Entrega (Microsoft Teams)
Após validar seus códigos:
- Salve os arquivos DO CÓDIGO no formato:
Atividade_09_Vetores_Soma_SeuNome - Envie os arquivos no Microsoft Teams na tarefa:
Atividade Cap 09 - Vetores e Coleções
🔑 Gabarito de Código (C, Java e Python)
Solução em C:
#include <stdio.h>
int main() {
int n, i;
printf("Quantos numeros voce vai digitar? ");
scanf("%d", &n);
double vet[n], soma = 0.0;
for (i = 0; i < n; i++) {
printf("Digite um numero: ");
scanf("%lf", &vet[i]);
soma += vet[i];
}
printf("\nVALORES = ");
for (i = 0; i < n; i++) {
printf("%.2lf ", vet[i]);
}
double media = soma / n;
printf("\nSOMA = %.2lf\n", soma);
printf("MEDIA = %.2lf\n", media);
return 0;
}
Solução em Java:
import java.util.Locale;
import java.util.Scanner;
public class SomaVetor {
public static void main(String[] args) {
Locale.setDefault(Locale.US);
Scanner sc = new Scanner(System.in);
System.out.print("Quantos numeros voce vai digitar? ");
int n = sc.nextInt();
double[] vet = new double[n];
double soma = 0.0;
for (int i = 0; i < n; i++) {
System.out.print("Digite um numero: ");
vet[i] = sc.nextDouble();
soma += vet[i];
}
System.out.print("\nVALORES = ");
for (int i = 0; i < n; i++) {
System.out.printf("%.2f ", vet[i]);
}
double media = soma / n;
System.out.printf("\nSOMA = %.2f\n", soma);
System.out.printf("MEDIA = %.2f\n", media);
sc.close();
}
}
Solução em Python:
n = int(input("Quantos numeros voce vai digitar? "))
vet = []
for _ in range(n):
vet.append(float(input("Digite um numero: ")))
soma = sum(vet)
media = soma / n
print("\nVALORES =", " ".join(f"{x:.2f}" for x in vet))
print(f"SOMA = {soma:.2f}")
print(f"MEDIA = {media:.2f}")
🟠 Nível 3 — Integração
Exercício 3: Problema “alturas”
Enunciado: Fazer um programa para ler nome, idade e altura de $N$ pessoas. Depois, mostrar na tela a altura média das pessoas e a porcentagem de pessoas com menos de 16 anos, bem como os nomes dessas pessoas caso houver.
Resultado Esperado
Exemplo de Execução:
Quantas pessoas serao digitadas? 5
Dados da 1a pessoa:
Nome: Joao
Idade: 15
Altura: 1.65
Dados da 2a pessoa:
Nome: Maria
Idade: 16
Altura: 1.60
Dados da 3a pessoa:
Nome: Teresa
Idade: 14
Altura: 1.58
Dados da 4a pessoa:
Nome: Carlos
Idade: 21
Altura: 1.75
Dados da 5a pessoa:
Nome: Paulo
Idade: 17
Altura: 1.70
Altura media: 1.66
Pessoas com menos de 16 anos: 40.0%
Joao
Teresa
flowchart TD
A["Ler N Pessoas"] --> B["Armazenar em vetores paralelos:\nnomes[N], idades[N], alturas[N]"]
B --> C["Calcular Média das Alturas"]
C --> D["Contar quantas idades < 16"]
D --> E["Calcular Porcentagem = (menores / N) * 100"]
E --> F["Exibir Relatório e Nomes dos Menores"]
📤 Instruções de Entrega (Microsoft Teams)
Após validar seus códigos:
- Salve os arquivos DO CÓDIGO no formato:
Atividade_09_Vetores_Alturas_SeuNome - Envie os arquivos no Microsoft Teams na tarefa:
Atividade Cap 09 - Vetores e Coleções
🔑 Gabarito de Código (C, Java e Python)
Solução em C:
#include <stdio.h>
#include <string.h>
int main() {
int n, i, menores16 = 0;
printf("Quantas pessoas serao digitadas? ");
scanf("%d", &n);
char nomes[n][50];
int idades[n];
double alturas[n], somaAlturas = 0.0;
for (i = 0; i < n; i++) {
printf("Dados da %da pessoa:\n", i + 1);
printf("Nome: ");
scanf("%s", nomes[i]);
printf("Idade: ");
scanf("%d", &idades[i]);
printf("Altura: ");
scanf("%lf", &alturas[i]);
somaAlturas += alturas[i];
if (idades[i] < 16) {
menores16++;
}
}
double mediaAltura = somaAlturas / n;
double percentual = ((double)menores16 / n) * 100.0;
printf("\nAltura media: %.2lf\n", mediaAltura);
printf("Pessoas com menos de 16 anos: %.1lf%%\n", percentual);
for (i = 0; i < n; i++) {
if (idades[i] < 16) {
printf("%s\n", nomes[i]);
}
}
return 0;
}
Solução em Java:
import java.util.Locale;
import java.util.Scanner;
public class Alturas {
public static void main(String[] args) {
Locale.setDefault(Locale.US);
Scanner sc = new Scanner(System.in);
System.out.print("Quantas pessoas serao digitadas? ");
int n = sc.nextInt();
String[] nomes = new String[n];
int[] idades = new int[n];
double[] alturas = new double[n];
double somaAlturas = 0.0;
int menores16 = 0;
for (int i = 0; i < n; i++) {
System.out.printf("Dados da %da pessoa:\n", i + 1);
System.out.print("Nome: ");
nomes[i] = sc.next();
System.out.print("Idade: ");
idades[i] = sc.nextInt();
System.out.print("Altura: ");
alturas[i] = sc.nextDouble();
somaAlturas += alturas[i];
if (idades[i] < 16) {
menores16++;
}
}
double mediaAltura = somaAlturas / n;
double percentual = ((double) menores16 / n) * 100.0;
System.out.printf("\nAltura media: %.2f\n", mediaAltura);
System.out.printf("Pessoas com menos de 16 anos: %.1f%%\n", percentual);
for (int i = 0; i < n; i++) {
if (idades[i] < 16) {
System.out.println(nomes[i]);
}
}
sc.close();
}
}
Solução em Python:
n = int(input("Quantas pessoas serao digitadas? "))
nomes, idades, alturas = [], [], []
for i in range(n):
print(f"Dados da {i+1}a pessoa:")
nomes.append(input("Nome: "))
idades.append(int(input("Idade: ")))
alturas.append(float(input("Altura: ")))
media_altura = sum(alturas) / n
menores = [i for i in range(n) if idades[i] < 16]
pct = (len(menores) / n) * 100.0
print(f"\nAltura media: {media_altura:.2f}")
print(f"Pessoas com menos de 16 anos: {pct:.1f}%")
for idx in menores:
print(nomes[idx])
🔴 Nível 4 — Desafio
Exercício 4: Problema “comerciante”
Enunciado: Um comerciante deseja fazer o levantamento do lucro das mercadorias que ele comercializa. Para isto, mandou digitar um conjunto de $N$ mercadorias, cada uma contendo:
- Nome da mercadoria
- Preço de compra
- Preço de venda
O programa deve determinar e escrever quantas mercadorias proporcionaram:
- Lucro $< 10\%$
- Lucro entre $10\%$ e $20\%$
- Lucro $> 20\%$
Ao final, determinar e escrever o valor total de compra, o valor total de venda e o lucro total das mercadorias.
Resultado Esperado
Exemplo de Execução:
Serao digitados dados de quantos produtos? 4
Produto 1:
Nome: Feijao
Preco de compra: 10.00
Preco de venda: 11.00
Produto 2:
Nome: Arroz
Preco de compra: 12.00
Preco de venda: 12.80
Produto 3:
Nome: Oleo
Preco de compra: 5.00
Preco de venda: 7.00
Produto 4:
Nome: Sal
Preco de compra: 3.00
Preco de venda: 3.15
RELATORIO:
Lucro abaixo de 10%: 1
Lucro entre 10% e 20%: 2
Lucro acima de 20%: 1
Valor total de compra: 30.00
Valor total de venda: 33.95
Lucro total: 3.95
📤 Instruções de Entrega (Microsoft Teams)
Após validar seus códigos:
- Salve os arquivos DO CÓDIGO no formato:
Atividade_09_Vetores_Comerciante_SeuNome - Envie os arquivos no Microsoft Teams na tarefa:
Atividade Cap 09 - Vetores e Coleções
🔑 Gabarito de Código (C, Java e Python)
Solução em C:
#include <stdio.h>
int main() {
int n, i;
printf("Serao digitados dados de quantos produtos? ");
scanf("%d", &n);
char nomes[n][50];
double compra[n], venda[n];
double totalCompra = 0.0, totalVenda = 0.0;
int lucroAbaixo10 = 0, lucroEntre10e20 = 0, lucroAcima20 = 0;
for (i = 0; i < n; i++) {
printf("Produto %d:\n", i + 1);
printf("Nome: ");
scanf("%s", nomes[i]);
printf("Preco de compra: ");
scanf("%lf", &compra[i]);
printf("Preco de venda: ");
scanf("%lf", &venda[i]);
totalCompra += compra[i];
totalVenda += venda[i];
double lucro = venda[i] - compra[i];
double pctLucro = (lucro / compra[i]) * 100.0;
if (pctLucro < 10.0) {
lucroAbaixo10++;
} else if (pctLucro <= 20.0) {
lucroEntre10e20++;
} else {
lucroAcima20++;
}
}
printf("\nRELATORIO:\n");
printf("Lucro abaixo de 10%%: %d\n", lucroAbaixo10);
printf("Lucro entre 10%% e 20%%: %d\n", lucroEntre10e20);
printf("Lucro acima de 20%%: %d\n", lucroAcima20);
printf("Valor total de compra: %.2lf\n", totalCompra);
printf("Valor total de venda: %.2lf\n", totalVenda);
printf("Lucro total: %.2lf\n", totalVenda - totalCompra);
return 0;
}
Solução em Java:
import java.util.Locale;
import java.util.Scanner;
public class Comerciante {
public static void main(String[] args) {
Locale.setDefault(Locale.US);
Scanner sc = new Scanner(System.in);
System.out.print("Serao digitados dados de quantos produtos? ");
int n = sc.nextInt();
String[] nomes = new String[n];
double[] compra = new double[n];
double[] venda = new double[n];
double totalCompra = 0.0, totalVenda = 0.0;
int abaixo10 = 0, entre10e20 = 0, acima20 = 0;
for (int i = 0; i < n; i++) {
System.out.printf("Produto %d:\n", i + 1);
System.out.print("Nome: ");
nomes[i] = sc.next();
System.out.print("Preco de compra: ");
compra[i] = sc.nextDouble();
System.out.print("Preco de venda: ");
venda[i] = sc.nextDouble();
totalCompra += compra[i];
totalVenda += venda[i];
double lucro = venda[i] - compra[i];
double pctLucro = (lucro / compra[i]) * 100.0;
if (pctLucro < 10.0) {
abaixo10++;
} else if (pctLucro <= 20.0) {
entre10e20++;
} else {
acima20++;
}
}
System.out.println("\nRELATORIO:");
System.out.printf("Lucro abaixo de 10%%: %d\n", abaixo10);
System.out.printf("Lucro entre 10%% e 20%%: %d\n", entre10e20);
System.out.printf("Lucro acima de 20%%: %d\n", acima20);
System.out.printf("Valor total de compra: %.2f\n", totalCompra);
System.out.printf("Valor total de venda: %.2f\n", totalVenda);
System.out.printf("Lucro total: %.2f\n", totalVenda - totalCompra);
sc.close();
}
}
Solução em Python:
n = int(input("Serao digitados dados de quantos produtos? "))
compra, venda = [], []
abaixo10, entre10e20, acima20 = 0, 0, 0
for i in range(n):
print(f"Produto {i+1}:")
input("Nome: ")
p_compra = float(input("Preco de compra: "))
p_venda = float(input("Preco de venda: "))
compra.append(p_compra)
venda.append(p_venda)
pct = ((p_venda - p_compra) / p_compra) * 100.0
if pct < 10.0:
abaixo10 += 1
elif pct <= 20.0:
entre10e20 += 1
else:
acima20 += 1
total_compra = sum(compra)
total_venda = sum(venda)
print("\nRELATORIO:")
print(f"Lucro abaixo de 10%: {abaixo10}")
print(f"Lucro entre 10% e 20%: {entre10e20}")
print(f"Lucro acima de 20%: {acima20}")
print(f"Valor total de compra: {total_compra:.2f}")
print(f"Valor total de venda: {total_venda:.2f}")
print(f"Lucro total: {total_venda - total_compra:.2f}")