(2) Crie duas funções que encontrem e retornem o valor máximo e o valor mínimo de um vector de inteiros. Preencha o vector no main.
Exemplo de entrada:
Entre com os valores do vector: 123456789
Exemplo de saída:
Valor máximo: 9
Valor mínimo: 1
Valor mínimo: 1
Passo 1
Beleza, o que o enunciado pede é: criar duas funções em C++ que, dado um
vector<int>
, retornem o valor máximo e o valor mínimo. Esse assunto cai em: vetores (arrays dinâmicos), laços de repetição (for
), comparações e criação de funções. Para resolver, vamos precisar de:- Saber ler entrada do usuário.
- Armazenar valores em um
std::vector<int>
. - Fazer funções que recebam esse vetor (por referência) e percorram ele pra achar maior e menor.
Passo 2
Primeiro, a estrutura das funções. Uma função em C++ tem protótipo, corpo e retorna algo. Aqui queremos:
int encontraMax(const std::vector<int>& v);
int encontraMin(const std::vector<int>& v);
const std::vector<int>& v
evita cópia e garante que não vamos modificar o vetor.- Ambas retornam um
int
(o maior ou o menor).
Passo 3
Vamos implementar
encontraMax
. A lógica é:- Inicializar
maxValor
com o primeiro elemento:maxValor = v[0]
. - Percorrer cada elemento
do vetor (índices de 1 até v.size()-1
). - Se
, atualiza maxValor = v_i
. - No fim, retorna
maxValor
.
Em código:
int encontraMax(const std::vector<int>& v) {
int maxValor = v[0];
for (size_t i = 1; i < v.size(); ++i) {
if (v[i] > maxValor) {
maxValor = v[i];
}
}
return maxValor;
}
Passo 4
Agora
encontraMin
é o mesmo raciocínio, mas procurando o menor:minValor = v[0]
.- Para cada
, se , faz minValor = v_i
. - Retorna
minValor
.
Em código:
int encontraMin(const std::vector<int>& v) {
int minValor = v[0];
for (size_t i = 1; i < v.size(); ++i) {
if (v[i] < minValor) {
minValor = v[i];
}
}
return minValor;
}
Passo 5
No
main()
, a gente vai:- Perguntar pro usuário:
Entre com os valores do vector:
e ler uma string (tipo"123456789"
). - Converter cada caractere em número com
c - '0'
e darpush_back
nostd::vector<int> v
. - Chamar
encontraMax(v)
eencontraMin(v)
. - Imprimir os resultados.
Resposta
#include <iostream>
#include <vector>
#include <string>
// Passo 3: função que encontra o valor máximo
int encontraMax(const std::vector<int>& v) {
int maxValor = v[0];
for (size_t i = 1; i < v.size(); ++i) {
if (v[i] > maxValor) {
maxValor = v[i];
}
}
return maxValor;
}
// Passo 4: função que encontra o valor mínimo
int encontraMin(const std::vector<int>& v) {
int minValor = v[0];
for (size_t i = 1; i < v.size(); ++i) {
if (v[i] < minValor) {
minValor = v[i];
}
}
return minValor;
}
int main() {
std::string entrada;
std::vector<int> v;
std::cout << "Entre com os valores do vector: ";
std::cin >> entrada;
// Preenche o vetor convertendo cada caractere em dígito
for (char c : entrada) {
v.push_back(c - '0');
}
int maximo = encontraMax(v);
int minimo = encontraMin(v);
std::cout << "Valor máximo: " << maximo << "\n";
std::cout << "Valor mínimo: " << minimo << "\n";
return 0;
}