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:
novo valor =( valor atual - mínimo máximo - mínimo ) times( novoMax - novoMin )+ novoMin íáí
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

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.

Exercícios relacionados