(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.
(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:
- Uma função que receba um
deque<int>
e calcule a média dos elementos. - 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:
- Percorrer todo o
deque
somando os valores. - 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:- Percorrer a lista.
- 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:- Perguntar quantos números o usuário quer colocar no
deque
. - Ler esses números e dar
push_back
no deque. - Calcular e imprimir a média.
- Perguntar quantos números pra lista, o valor-alvo, ler e empurrar na
list
. - 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;
}