vector_demo_C++.cpp

  1  #include <iostream>     // cin cout
  2  #include <iomanip>      // setw setprecision
  3  #include <fstream>      // szöveges fájlok kezelése
  4  #include <vector>       // vektor (vector) adattĂ­pushoz (count)
  5  #include <algorithm>    // sort, max_element, min_element
  6  #include <numeric>      // accumulate
  7  #include <ctime>        // random számokhoz
  8  #include <windows.h>    // color a szövegekiírásokhoz
  9  
 10  using namespace std;    // standard i/o eszközökre mennek pl. a cin és cout parancsok
 11  
 12  void Color(int color)
 13  {
 14      SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color);
 15  }
 16  
 17  void vector_constructor(vector<int>& v, int db)
 18  {
 19      srand(time(NULL));                  // véletlenszám-generátor inicializálása
 20      for(auto i=0; i<db; i++)
 21      {
 22          v.push_back(rand()%100+1);      // 1-100 közötti véletlenszám megy a vektorba
 23      }
 24  }
 25  
 26  void vector_print(vector<int> v, string filename, string label)
 27  {
 28      ofstream fki;
 29      fki.open(filename);
 30      cout << label;
 31      for(int elem:v)    // vektor "bejárása" elemenként
 32      {
 33          cout << elem << " ";
 34          fki << elem << " ";
 35      }
 36      cout << endl;
 37      fki.close();
 38  }
 39  
 40  void vector_sort(vector<int>& v, string desc)
 41  {
 42      if(desc=="desc")
 43          sort(v.rbegin(), v.rend());
 44          // sort(v.begin(), v.end(), greater<int>());
 45      else
 46          sort(v.begin(), v.end());
 47  }
 48  
 49  unsigned long int vector_meret(vector<int> v)
 50  {
 51      return v.size();
 52  }
 53  
 54  void vector_ujelem(vector<int>& v, int hely, int ertek)
 55  {
 56      v.insert(v.begin()+hely, ertek);
 57  }
 58  
 59  float vector_atlag(vector<int> v)
 60  {
 61      return (float)accumulate(v.begin(), v.end(), 0) / (float)v.size();
 62  }
 63  
 64  int main()
 65  {
 66      setlocale(LC_ALL, "hun");
 67      vector<int> vec;
 68      int uj, helye;
 69  
 70      vector_constructor(vec,  10);
 71      Color(15);  // fehér
 72      cout << "Vektor mérete: " << vector_meret(vec) << endl;
 73      Color(10);  // zöld
 74      vector_print(vec, "vektor.txt", "Vektor elemei......: ");
 75      // Új elem beszúrása a vektorba
 76      cout << "Új elem értéke: ";
 77      cin >> uj;
 78      cout << "Ăšj elem helye : ";
 79      cin >> helye;
 80      vector_ujelem(vec, helye-1, uj);
 81  
 82      Color(15);  // fehér
 83      cout << "Vektor mérete: " << vector_meret(vec) << endl;
 84      Color(10);  // zöld
 85      vector_print(vec, "vektor.txt", "Vektor elemei......: ");
 86      Color(70);  // piros-sárga
 87      cout << "Vektor legnagyobb eleme  : " << setw(6) << *max_element(vec.begin(), vec.end()) << " " << endl;
 88      Color(19);  // kék-szürke
 89      cout << "Vektor legkisebb eleme   : " << setw(6) << *min_element(vec.begin(), vec.end()) << " " << endl;
 90      Color(70);  // piros-sárga
 91      cout << "Vektor elemeinek összege : " << setw(6) << accumulate(vec.begin(), vec.end(),0) << " " << endl;
 92      Color(19);  // kék-szürke
 93      cout << "Vektor elemeinek átlaga  : " << setprecision(5) << vector_atlag(vec) << " " << endl;
 94      Color(10);  // zöld
 95      vector_sort(vec, "desc");
 96      vector_print(vec, "sorted_vector.txt", "Csökkenő sorrendben: ");
 97  
 98      vector_sort(vec, "asc");
 99      vector_print(vec, "sorted_vector.txt", "Emelkedő sorrendben: ");
100      Color(15);  // fehér
101  
102      // Adott indexű elem lekérdezése
103      cout << "Melyik sorszámú elemre kiváncsi? ";
104      cin >> helye;
105      cout << helye << ". elem (indexe: " << helye-1 << ")" << " értéke: ";
106      Color(70);  // piros-sárga
107      cout << setw(4) << vec[helye-1] << " " << endl;
108  
109      Color(15);  // fehér
110  
111      return 0;
112  }