Advertisement
MeehoweCK

Untitled

Nov 8th, 2020
655
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.33 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <ctime>
  4.  
  5. using namespace std;
  6.  
  7. const int W = 10;
  8. const int K = 8;
  9.  
  10. void przesun_w_prawo(char* tablica, int rozmiar)
  11. {
  12.     char nowa_tablica[rozmiar];
  13.  
  14.     // pętla przesuwająca znaki na nową pozycję:
  15.     for(int i = 0; i < (rozmiar - 1); ++i)
  16.     {
  17.         nowa_tablica[i + 1] = tablica[i];
  18.     }
  19.     nowa_tablica[0] = tablica[rozmiar - 1];
  20.  
  21.     // kopiowanie nowej tablicy do dotychczasowej:
  22.     for(int i = 0; i < rozmiar; ++i)
  23.     {
  24.         tablica[i] = nowa_tablica[i];
  25.     }
  26. }
  27.  
  28. void wypisz_tablice(char tablica[][K])
  29. {
  30.     for(int i = 0; i < W; ++i)
  31.     {
  32.         for(int j = 0; j < K; ++j)
  33.             cout << tablica[i][j] << '\t';
  34.         cout << endl;
  35.     }
  36. }
  37.  
  38. int ile_malych_liter(char* tablica, int rozmiar)
  39. {
  40.     int wynik = 0;
  41.  
  42.     for(int i = 0; i < rozmiar; ++i)
  43.     {
  44.         if(tablica[i] >= 'a' && tablica[i] <= 'z')
  45.             ++wynik;
  46.     }
  47.     return wynik;
  48. }
  49.  
  50. bool czy_istnieje_cyfra(char* tablica, int rozmiar)
  51. {
  52.     for(int i = 0; i < rozmiar; ++i)
  53.         if(tablica[i] >= '0' && tablica[i] <= '9')
  54.             return true;
  55.     return false;
  56. }
  57.  
  58. bool cyfra_na_koncu(char* tablica, int rozmiar)
  59. {
  60.     if(tablica[rozmiar - 1] >= '0' && tablica[rozmiar - 1] <= '9')
  61.         return true;
  62.     return false;
  63. }
  64.  
  65. void konwersja_tablicy(char tablica[][K], int X)
  66. {
  67.     char kolumna[W];
  68.  
  69.     // sprawdzanie kolejnych kolumn:
  70.     for(int i = 0; i < K; ++i)
  71.     {
  72.         // wypełnienie tablicy pomocniczej:
  73.         for(int j = 0; j < W; ++j)
  74.             kolumna[j] = tablica[j][i];
  75.  
  76.         if(!czy_istnieje_cyfra(kolumna, W))
  77.             continue;
  78.  
  79.         if(ile_malych_liter(kolumna, W) >= X)
  80.         {
  81.             // przesuwamy dotąd, aż cyfra będzie na końcu:
  82.             while(!cyfra_na_koncu(kolumna, W))
  83.                 przesun_w_prawo(kolumna, W);
  84.         }
  85.  
  86.         // wstawiamy tablicę pomocniczą na miejsce danej kolumny:
  87.         for(int j = 0; j < W; ++j)
  88.             tablica[j][i] = kolumna[j];
  89.     }
  90. }
  91.  
  92. int main()
  93. {
  94.     srand(time(nullptr));
  95.  
  96.     char a[W][K];
  97.  
  98.     for(int i = 0; i < W; ++i)
  99.         for(int j = 0; j < K; ++j)
  100.             a[i][j] = 48 + rand() % (122 - 48 + 1);
  101.  
  102.     wypisz_tablice(a);
  103.     cout << endl;
  104.     konwersja_tablicy(a, 2);
  105.     wypisz_tablice(a);
  106.  
  107.     return 0;
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement