(3) Escreva uma função que receba um deque<int> e retorne a média de todos os seus elementos. Preencha o deque no main.

Exemplo de entrada:

Entre com os valores do deque: 123456789

Exemplo de saída:

Média dos valores: 5
(4) Crie uma função que receba uma list<int>e um valor, e conte quantas vezes esse valor aparece na lista. Preencha a lista no main.

Passo 1

O exercício pede duas coisinhas com containers do C++ STL:
  1. Uma função que receba um deque<int> e calcule a média dos elementos.
  2. Outra função que receba uma list<int> e conte quantas vezes um valor aparece nela.
Conteúdo da matéria: uso de containers (deque e list), loops ou iteradores, operações de soma e comparação, e entrada/saída com cin/cout. Para resolver, a gente vai precisar:
  • Saber iterar sobre um container (com loop for ou iteradores).
  • Saber somar e dividir para achar média: .
  • Saber comparar valores e incrementar um contador.
  • Montar o main() para ler esses valores e chamar as funções.

Passo 2

Vamos fazer a função da média. A ideia é simples:
  1. Percorrer todo o deque somando os valores.
  2. Dividir essa soma pelo número de elementos.
Em código, fica assim (explicando cada parte):
double mediaDeque(const deque<int>& d) {
    // 1) somar tudo
    int soma = 0;
    for (int x : d) {
        soma += x;               // soma = soma + x
    }
    // 2) número de elementos
    int N = d.size();
    // 3) calcular média: soma / N
    //    usamos double para não perder a parte fracionária
    return static_cast<double>(soma) / N;
}

Passo 3

Agora a função que conta quantas vezes um valor aparece numa list<int>. A lógica:
  1. Percorrer a lista.
  2. Toda vez que o elemento atual for igual ao valor buscado, incrementar um contador.
Em código:
int contaOcorrencias(const list<int>& l, int alvo) {
    int contador = 0;
    for (int x : l) {
        if (x == alvo) {
            contador++;            // achou mais uma ocorrência
        }
    }
    return contador;
}

Passo 4

Bora pro main(). A gente vai:
  1. Perguntar quantos números o usuário quer colocar no deque.
  2. Ler esses números e dar push_back no deque.
  3. Calcular e imprimir a média.
  4. Perguntar quantos números pra lista, o valor-alvo, ler e empurrar na list.
  5. Chamar a função de contagem e imprimir o resultado.
Tudo junto fica assim:

Resposta

#include <iostream>
#include <deque>
#include <list>
using namespace std;

// Função que calcula média de um deque<int>
double mediaDeque(const deque<int>& d) {
    int soma = 0;
    for (int x : d) {
        soma += x;
    }
    return static_cast<double>(soma) / d.size();
}

// Função que conta ocorrências de 'alvo' em uma list<int>
int contaOcorrencias(const list<int>& l, int alvo) {
    int contador = 0;
    for (int x : l) {
        if (x == alvo) contador++;
    }
    return contador;
}

int main() {
    // Parte 1: deque
    cout << "Quantos valores no deque? ";
    int n;
    cin >> n;
    deque<int> d;
    cout << "Entre com " << n << " valores separados por espaço:\n";
    for (int i = 0; i < n; i++) {
        int valor;
        cin >> valor;
        d.push_back(valor);
    }
    double media = mediaDeque(d);
    cout << "Média dos valores: " << media << "\n";

    // Parte 2: list
    cout << "\nQuantos valores na lista? ";
    cin >> n;
    cout << "Qual valor você quer contar? ";
    int alvo;
    cin >> alvo;
    list<int> l;
    cout << "Entre com " << n << " valores separados por espaço:\n";
    for (int i = 0; i < n; i++) {
        int valor;
        cin >> valor;
        l.push_back(valor);
    }
    int vezes = contaOcorrencias(l, alvo);
    cout << "O valor " << alvo << " aparece " << vezes << " vezes na lista.\n";

    return 0;
}

Exercícios relacionados