Exercícios de Programação com Arrays e Estruturas de Dados

Exercício 1: Cálculo de Médias

Defina um array de tamanho 5 para armazenar as notas de uma turma de alunos (os valores podem ser atribuídos livremente). Calcule a pontuação total e a média da turma.

#include <iostream>
using namespace std;

int main() {
    const int TAMANHO = 5;
    float notas[TAMANHO];
    float soma = 0.0;
    
    // Entrada de dados
    for(int i = 0; i < TAMANHO; i++) {
        cout << "Digite a nota do aluno " << i+1 << ": ";
        cin >> notas[i];
        soma += notas[i];
    }
    
    // Cálculo e exibição
    cout << "Soma das notas: " << soma << endl;
    cout << "Média da turma: " << soma/TAMANHO << endl;
    
    return 0;
}
</iostream>

Exercício 2: Estatísticas de Desempenho

Após uma prova final, um professor precisa saber quantos alunos tiveram desempenho excelente (nota maior ou igual a 90). Desenvolva um programa para calcular essa quantidade.

#include <iostream>
using namespace std;

int main() {
    const int MAX_ALUNOS = 100;
    float notas[MAX_ALUNOS];
    int quantidadeAlunos;
    int excelentes = 0;
    
    cout << "Digite o número de alunos: ";
    cin >> quantidadeAlunos;
    
    // Leitura das notas e verificação
    for(int i = 0; i < quantidadeAlunos; i++) {
        cout << "Nota do aluno " << i+1 << ": ";
        cin >> notas[i];
        if(notas[i] >= 90) {
            excelentes++;
        }
    }
    
    cout << "Número de alunos com excelente desempenho: " << excelentes << endl;
    
    return 0;
}
</iostream>

Exercício 3: Números de Pico

Em um conjunto de inteiros, identifique os números que não são o primeior nem o último, e são maiores que ambos seus vizinhos adjacentes.

#include <iostream>
using namespace std;

int main() {
    int quantidade;
    cout << "Digite a quantidade de números: ";
    cin >> quantidade;
    
    if(quantidade < 3) {
        cout << "É necessário pelo menos 3 números." << endl;
        return 1;
    }
    
    int numeros[quantidade];
    
    // Leitura dos números
    for(int i = 0; i < quantidade; i++) {
        cin >> numeros[i];
    }
    
    // Verificação de números de pico
    for(int i = 1; i < quantidade-1; i++) {
        if(numeros[i] > numeros[i-1] && numeros[i] > numeros[i+1]) {
            cout << numeros[i] << endl;
        }
    }
    
    return 0;
}
</iostream>

Exercício 4: Filtragem de Genomas

Identifique e remova genomas alienígenas de uma sequência genética. Os genomas alienígenas têm a propriedade de que o quadrado do número dividido por 7 tem resto 1.

#include <iostream>
using namespace std;

bool ehGenomaAlienigena(int numero) {
    return (numero * numero) % 7 == 1;
}

int main() {
    int quantidade;
    cout << "Digite a quantidade de genes: ";
    cin >> quantidade;
    
    int genes[quantidade];
    
    // Leitura dos genes
    for(int i = 0; i < quantidade; i++) {
        cin >> genes[i];
    }
    
    // Filtragem e exibição
    cout << "Sequência genética normal: ";
    for(int i = 0; i < quantidade; i++) {
        if(!ehGenomaAlienigena(genes[i])) {
            cout << genes[i] << " ";
        }
    }
    cout << endl;
    
    return 0;
}
</iostream>

Exercício 5: Cálculo de Descontos

Em uma promoção de fim de semana, compras acima de R$100 recebem 10% de desconto no valor excedente. Calcule o valor final a ser pago.

#include <iostream>
#include <iomanip>
using namespace std;

int main() {
    int quantidadeItens;
    cout << "Digite a quantidade de itens: ";
    cin >> quantidadeItens;
    
    float precos[quantidadeItens];
    float total = 0.0;
    
    // Leitura dos preços
    for(int i = 0; i < quantidadeItens; i++) {
        cin >> precos[i];
        total += precos[i];
    }
    
    // Aplicação do desconto
    if(total > 100) {
        float desconto = (total - 100) * 0.1;
        total -= desconto;
    }
    
    cout << fixed << setprecision(2);
    cout << "Valor final: R$ " << total << endl;
    
    return 0;
}
</iomanip></iostream>

Exercício 6: Coleta de Frutas

Uma criança pode alcançar maçãs em uma árvore com ou sem usar um banco de 30cm de altura. Dadas as alturas das maçãs e a altura máxima que a criança alcança, determine quantas maçãs ela pode colher.

#include <iostream>
using namespace std;

int main() {
    const int NUM_MACAS = 10;
    int alturasMacas[NUM_MACAS];
    int alturaMaximaCrianca;
    
    // Leitura das alturas das maçãs
    for(int i = 0; i < NUM_MACAS; i++) {
        cin >> alturasMacas[i];
    }
    
    // Leitura da altura máxima da criança
    cin >> alturaMaximaCrianca;
    
    // Cálculo das maçãs alcançáveis
    int macasColhidas = 0;
    for(int i = 0; i < NUM_MACAS; i++) {
        if(alturasMacas[i] <= alturaMaximaCrianca + 30) {
            macasColhidas++;
        }
    }
    
    cout << "Maçãs colhidas: " << macasColhidas << endl;
    
    return 0;
}
</iostream>

Exercício 7: Soma de Pares e Ímpares

Dada uma sequência de números, calcule a soma separada dos números pares e ímpares.

#include <iostream>
using namespace std;

int main() {
    int quantidadeNumeros;
    cout << "Digite a quantidade de números: ";
    cin >> quantidadeNumeros;
    
    int numeros[quantidadeNumeros];
    int somaPares = 0, somaImpares = 0;
    
    // Leitura e processamento
    for(int i = 0; i < quantidadeNumeros; i++) {
        cin >> numeros[i];
        if(numeros[i] % 2 == 0) {
            somaPares += numeros[i];
        } else {
            somaImpares += numeros[i];
        }
    }
    
    cout << "Soma dos números ímpares: " << somaImpares << endl;
    cout << "Soma dos números pares: " << somaPares << endl;
    
    return 0;
}
</iostream>

Exercício 8: Números Perfeitos

Um número perfeito é um número par com dígitos todos pares. Identifique todos os números perfeitos em uma dada sequência.

#include <iostream>
using namespace std;

bool ehNumeroPerfeito(int numero) {
    if(numero % 2 != 0) return false;
    
    int temp = numero;
    while(temp > 0) {
        int digito = temp % 10;
        if(digito % 2 != 0) return false;
        temp /= 10;
    }
    return true;
}

int main() {
    int quantidadeNumeros;
    cout << "Digite a quantidade de números: ";
    cin >> quantidadeNumeros;
    
    int numeros[quantidadeNumeros];
    
    // Leitura dos números
    for(int i = 0; i < quantidadeNumeros; i++) {
        cin >> numeros[i];
    }
    
    // Identificação e exibição de números perfeitos
    cout << "Números perfeitos: ";
    for(int i = 0; i < quantidadeNumeros; i++) {
        if(ehNumeroPerfeito(numeros[i])) {
            cout << numeros[i] << " ";
        }
    }
    cout << endl;
    
    return 0;
}
</iostream>

Exercício 9: Probabilidades

Calcule a probabilidade de extrair um número específico de um conjunto de bolas numeradas.

#include <iostream>
#include <iomanip>
using namespace std;

int main() {
    int quantidadeBolas;
    cout << "Digite a quantidade de bolas: ";
    cin >> quantidadeBolas;
    
    int numerosBolas[quantidadeBolas];
    int numeroProcurado;
    
    // Leitura dos números das bolas
    for(int i = 0; i < quantidadeBolas; i++) {
        cin >> numerosBolas[i];
    }
    
    // Leitura do número procurado
    cout << "Digite o número procurado: ";
    cin >> numeroProcurado;
    
    // Cálculo da probabilidade
    int ocorrencias = 0;
    for(int i = 0; i < quantidadeBolas; i++) {
        if(numerosBolas[i] == numeroProcurado) {
            ocorrencias++;
        }
    }
    
    float probabilidade = static_cast<float>(ocorrencias) / quantidadeBolas;
    
    cout << fixed << setprecision(2);
    cout << "Probabilidade: " << probabilidade << endl;
    
    return 0;
}
</float></iomanip></iostream>

Exercício 10: Análise de Variância

Duas empresas produzem peças com dimensões ligeiramente diferentes. Calcule a variância das dimensões para determinar qual empresa produz peças mais consistentes.

#include <iostream>
using namespace std;

float calcularVarianca(int dados[], int tamanho) {
    float soma = 0.0;
    for(int i = 0; i < tamanho; i++) {
        soma += dados[i];
    }
    float media = soma / tamanho;
    
    float varianca = 0.0;
    for(int i = 0; i < tamanho; i++) {
        varianca += (dados[i] - media) * (dados[i] - media);
    }
    
    return varianca / tamanho;
}

int main() {
    int quantidadeAmostras;
    cout << "Digite a quantidade de amostras: ";
    cin >> quantidadeAmostras;
    
    int empresaA[quantidadeAmostras], empresaB[quantidadeAmostras];
    
    // Leitura das amostras da empresa A
    cout << "Digite as dimensões da empresa A: ";
    for(int i = 0; i < quantidadeAmostras; i++) {
        cin >> empresaA[i];
    }
    
    // Leitura das amostras da empresa B
    cout << "Digite as dimensões da empresa B: ";
    for(int i = 0; i < quantidadeAmostras; i++) {
        cin >> empresaB[i];
    }
    
    // Cálculo das variâncias
    float varianciaA = calcularVarianca(empresaA, quantidadeAmostras);
    float varianciaB = calcularVarianca(empresaB, quantidadeAmostras);
    
    // Determinação da empresa mais consistente
    if(varianciaA < varianciaB) {
        cout << "A empresa A tem peças mais consistentes." << endl;
    } else {
        cout << "A empresa B tem peças mais consistentes." << endl;
    }
    
    return 0;
}
</iostream>

Tags: Arrays Algoritmos C++ estruturas-de-dados programação

Publicado em 6-8 00:56 por Thomas