Advertisement
Guest User

Untitled

a guest
Jan 20th, 2020
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.47 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4.  
  5. using namespace std;
  6. const int numStop = 99999;
  7.  
  8. template <class userType>
  9. void getVector(vector<userType> &data) {
  10.     cout << "INSERINDO O CONJUNTO DE NÚMEROS:" << endl
  11.          << "Insira um número para acrescentá-lo ou envie "
  12.          << numStop << " para executar as operações." << endl;
  13.    
  14.     userType value = 0;
  15.    
  16.     while (data.size() == 0) {
  17.         cin >> value;
  18.         while (value != numStop) {
  19.             data.push_back(value);
  20.             cin >> value;
  21.         }
  22.  
  23.         if(data.size() == 0) {
  24.             cout << "Não foi inserido nenhum número para operar!"
  25.                  << endl << "Insira pelo menos 1 número!" << endl;
  26.         }
  27.     }
  28.  
  29.     cout << endl;
  30. }
  31.  
  32. template <class opType>
  33. void doOperations(vector<opType> &data) {
  34.     opType sum = 0;
  35.  
  36.     sort(data.begin(), data.end()); //Ordenação
  37.  
  38.     vector<opType> mode;
  39.     mode.push_back(data.at(0));
  40.  
  41.     for (int i = 0; i < data.size(); ++i) { //Soma e Moda
  42.         sum = sum + data.at(i);
  43.         if(count(data.begin(), data.end(), data.at(i)) > count(data.begin(), data.end(), mode.at(0))) {
  44.             mode.clear();
  45.             mode.push_back(data.at(i));
  46.         }
  47.         if(count(data.begin(), data.end(), data.at(i)) == count(data.begin(), data.end(), mode.at(0))) {
  48.             if(count(mode.begin(), mode.end(), data.at(i)) == 0)
  49.                 mode.push_back(data.at(i));
  50.         }
  51.     }
  52.  
  53.     sort(mode.begin(), mode.end());
  54.  
  55.     opType average = sum/(static_cast<opType>(data.size())); //Média
  56.  
  57.     cout << "Soma: " << sum << endl
  58.          << "Média: " << average << endl;
  59.  
  60.     cout << "Moda: ";
  61.     for (int i = 0; i < mode.size(); ++i) {
  62.         cout << mode.at(i) << " ";
  63.     }
  64.  
  65.     cout << endl << "Ordenado: ";
  66.     for(int i = 0; i < data.size(); ++i) {
  67.         cout << data.at(i) << " ";
  68.     }
  69.  
  70.     cout << endl << endl;
  71. }
  72.  
  73. int main() {
  74.     string chosenType;
  75.     cout << "Escolha o tipo de variável: (int, float, double)" << endl;
  76.     cin >> chosenType;
  77.     cout << endl;
  78.    
  79.     if (chosenType == "int") {
  80.         vector<int> data;
  81.         getVector(data);
  82.         doOperations(data);
  83.     }
  84.  
  85.     if(chosenType == "float") {
  86.         vector<float> data;
  87.         getVector(data);
  88.         doOperations(data);
  89.     }
  90.    
  91.     if(chosenType == "double") {
  92.         vector<double> data;
  93.         getVector(data);
  94.         doOperations(data);
  95.     }
  96.  
  97.     return 0;
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement