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:

  1. Salve os arquivos DO CÓDIGO no formato: Atividade_09_Vetores_Negativos_SeuNome
  2. 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:

  1. Salve os arquivos DO CÓDIGO no formato: Atividade_09_Vetores_Soma_SeuNome
  2. 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:

  1. Salve os arquivos DO CÓDIGO no formato: Atividade_09_Vetores_Alturas_SeuNome
  2. 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:

  1. Salve os arquivos DO CÓDIGO no formato: Atividade_09_Vetores_Comerciante_SeuNome
  2. 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}")