Implemente um programa em C++ que contenha uma função para normalizar os valores de um vector de números inteiros. A normalização consiste em ajustar os valores do vector para que todos fiquem dentro de um intervalo específico, por exemplo, entre 0 e 100. A função deve encontrar o valor mínimo e máximo do vector e, em seguida, recalcular cada elemento para o novo intervalo.
A função (void) deve receber como parâmetros o vector e os valores inteiros novoMin e novoMax.
A função deve recalcular cada valor do vetor usando a fórmula:
onde mínimo e máximo são os menores e maiores valores do vetor original, respectivamente.
No main, peça ao usuário digitar e preencher os valores. Em seguida, chame a função normalizarvetor com um intervalo definido pelo usuário e exiba o vetor normalizado.
Exemplo de execução:
Digite os elementos do vetor (999 para encerrar):
10 20 30 40 50 999
Digite o novo valor mínimo: 0
Digite o novo valor máximo: 100
Vetor normalizado: 0 25 50 75 100
A função (void) deve receber como parâmetros o vector e os valores inteiros novoMin e novoMax.
A função deve recalcular cada valor do vetor usando a fórmula:
No main, peça ao usuário digitar e preencher os valores. Em seguida, chame a função normalizarvetor com um intervalo definido pelo usuário e exiba o vetor normalizado.
10 20 30 40 50 999
Digite o novo valor mínimo: 0
Digite o novo valor máximo: 100
Vetor normalizado: 0 25 50 75 100
Passo 1
Beleza, vamos nessa! O exercício pede pra gente fazer um programa em C++ que normaliza os valores de um vetor de números inteiros. Normalizar aqui significa ajustar esses números para que fiquem dentro de um intervalo que a gente escolhe, tipo de 0 a 100. Pra isso, vamos precisar entender como encontrar o valor mínimo e máximo do vetor e usar a fórmula de normalização. Vamos usar conceitos de vetores, funções e entrada/saída em C++.
Passo 2
Primeiro, vamos incluir as bibliotecas necessárias e usar o espaço de nomes padrão. Vamos precisar de
<iostream>
para entrada e saída de dados e de <vector>
para manipular o vetor de números.#include <iostream>
#include <vector>
using namespace std;
Passo 3
Agora, vamos criar a função de normalização. Essa função vai receber o vetor original, o novo valor mínimo e o novo valor máximo. Dentro dela, vamos encontrar o menor e o maior valor do vetor original para usar na fórmula de normalização.
void normalizarVetor(vector<int>& vec, int novoMin, int novoMax) {
if(vec.empty()) return; // Verifica se o vetor está vazio
int minimo = vec[0];
int maximo = vec[0];
// Encontrar o mínimo e o máximo do vetor
for(auto num : vec) {
if(num < minimo) minimo = num;
if(num > maximo) maximo = num;
}
// Aplicar a fórmula de normalização em cada elemento
for(auto &num : vec) {
num = ((double)(num - minimo) / (maximo - minimo)) * (novoMax - novoMin) + novoMin;
}
}
Passo 4
No
main
, vamos pedir pro usuário digitar os elementos do vetor. Vamos continuar recebendo números até que ele digite 999, que é a nossa condição pra encerrar a entrada.int main() {
vector<int> vetor;
int input;
cout << "Digite os elementos do vetor (999 para encerrar):\n";
while(true) {
cin >> input;
if(input == 999) break;
vetor.push_back(input);
}
Passo 5
Depois, vamos pedir pro usuário os novos valores mínimo e máximo para a normalização.
int novoMin, novoMax;
cout << "Digite o novo valor mínimo: ";
cin >> novoMin;
cout << "Digite o novo valor máximo: ";
cin >> novoMax;
Passo 6
Agora, chamamos a função
normalizarVetor
com os parâmetros que o usuário forneceu e depois exibimos o vetor normalizado. normalizarVetor(vetor, novoMin, novoMax);
cout << "Vetor normalizado: ";
for(auto num : vetor) {
cout << num << " ";
}
cout << endl;
return 0;
}
Resposta
Aqui está o programa completo:
#include <iostream>
#include <vector>
using namespace std;
void normalizarVetor(vector<int>& vec, int novoMin, int novoMax) {
if(vec.empty()) return; // Verifica se o vetor está vazio
int minimo = vec[0];
int maximo = vec[0];
// Encontrar o mínimo e o máximo do vetor
for(auto num : vec) {
if(num < minimo) minimo = num;
if(num > maximo) maximo = num;
}
// Aplicar a fórmula de normalização em cada elemento
for(auto &num : vec) {
num = ((double)(num - minimo) / (maximo - minimo)) * (novoMax - novoMin) + novoMin;
}
}
int main() {
vector<int> vetor;
int input;
cout << "Digite os elementos do vetor (999 para encerrar):\n";
while(true) {
cin >> input;
if(input == 999) break;
vetor.push_back(input);
}
int novoMin, novoMax;
cout << "Digite o novo valor mínimo: ";
cin >> novoMin;
cout << "Digite o novo valor máximo: ";
cin >> novoMax;
normalizarVetor(vetor, novoMin, novoMax);
cout << "Vetor normalizado: ";
for(auto num : vetor) {
cout << num << " ";
}
cout << endl;
return 0;
}
Quando você executar o programa, ele vai pedir pra você digitar os elementos do vetor até que você digite 999. Depois, pede pro novo valor mínimo e máximo e mostra o vetor normalizado conforme o intervalo escolhido.