Advertisement
Qanar

vector sort

Mar 26th, 2023 (edited)
460
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.93 KB | None | 0 0
  1. #include <iostream>
  2. #include <algorithm>
  3. using namespace std;
  4.  
  5. bool isSorted(const int v[], int len) {
  6.     int n = 0;
  7.     for (const int* ptr = v + 1; n < (len-1); ptr++, v++, n++)
  8.     {
  9.         if (*ptr < *v) return false;   
  10.     }
  11.     return true;
  12. }
  13.  
  14. void merge(const int* v1, int v1len, const int* v2, int v2len, int* vDest) {
  15.  
  16.     const int* ptr1 = v1;
  17.     const int* ptr2 = v2;
  18.     int i = 0, j = 0, k = 0;
  19.  
  20.     //Elemente der Vekoren angleichen
  21.     while (i < v1len && j < v2len)
  22.     {
  23.         if (*(v1 + i) <= *(v2 + j))
  24.         {
  25.             *(vDest + k) = *(v1 + i);
  26.             k++; i++;;
  27.         }
  28.         else
  29.         {
  30.             *(vDest + k) = *(v2 + j);
  31.             k++; j++;
  32.         }
  33.     }
  34.     //Vektor 1 durchlaufen und in Vektor 3 einfügen
  35.     while (i < v1len)
  36.     {
  37.         *(vDest + k) = *(v1 + i);
  38.         i++; k++;
  39.     }
  40.  
  41.     // Vektor 2 durchlaufen und in Vektor 3 einfügen
  42.     while (j < v2len)
  43.     {
  44.         *(vDest + k) = *(v2 + j);
  45.         j++; k++;
  46.     }
  47. }
  48.  
  49. void Werte_eingeben(int* v, int vlen)
  50. {
  51.     int i = 1;
  52.     for (int* ptr1 = v; (ptr1 - v) < vlen; ptr1++)
  53.     {
  54.         cout << i++ << "." << " Vektorelement -> ";
  55.         cin >> *ptr1;
  56.     }
  57. }
  58.  
  59. void vDest_Ausgabe(int* v3, int l)
  60. {
  61.     for (int* ptr3 = v3; (ptr3 - v3) < l; ptr3++)
  62.         cout << *ptr3 << " ";
  63. }
  64.  
  65. void main() {
  66.  
  67.     //Elemente Vektor
  68.     int vSource1[10] = {};
  69.     int vSource2[10] = {};
  70.  
  71.     int v1len;
  72.     int v2len;
  73.  
  74.     //Ausgabe Vektor 1
  75.     cout << "Geben Sie die Laenge des 1. Vektors ein (max 10) -> ";
  76.     cin >> v1len;
  77.     Werte_eingeben(vSource1, v1len);                                   
  78.  
  79.     //Ausgabe Vektor 2
  80.     cout << "Geben Sie die Laenge des 2. Vektors ein (max 10) -> ";
  81.     cin >> v2len;
  82.     Werte_eingeben(vSource2, v2len);                                   
  83.  
  84.     //Zusammenfügen in Vektor 3
  85.     int vDest[20] = {};                                                
  86.     int v3len = v1len + v2len; 
  87.  
  88.     //Anhängen eines Vektors an einen anderen
  89.     merge(vSource1, v1len, vSource2, v2len, vDest);
  90.  
  91.     //Ergebnis  
  92.     if (isSorted(vDest, v3len)) cout << "GG\nNeuer Vektor\n";
  93.     else cout << "RIP\nNeuer Vektor\n";
  94.  
  95.     for (int i = 0; i < v3len; i++)
  96.     {
  97.         cout << vDest[i] << " ";
  98.     }
  99. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement