DearOohDeer

Tablice_Znakow - String_Funkcje

Apr 18th, 2021 (edited)
270
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.26 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. using namespace std;
  4.  
  5. #define MAX_LEN 128
  6. /*----------------------------------------------------------------------------
  7.   int str_len( char s[] )
  8.  
  9.   Funkcja:
  10.   Wlasna implementacja funkcji wyznaczajacej dlugosc napisu liczona w znakach
  11.  
  12.   Parametry:
  13.     char s[] -- tablica zawierajaca napis ktorego dlugosc jest wyznaczana
  14.  
  15.   Rezultat:
  16.     dlugosc napisu liczona w znakach
  17. ----------------------------------------------------------------------------*/
  18. int str_len( char s[] )
  19. {
  20.     int Dlugosc=0;
  21.     for(int i = 0; s[i] != '\0'; i++ )
  22.     {
  23.         Dlugosc++;
  24.     }
  25.     return Dlugosc;
  26. }
  27. /*----------------------------------------------------------------------------
  28.   int lwr_str_cnt( char s[] )
  29.  
  30.   Funkcja:
  31.     Wyznacza liczbe malych liter w napisie s
  32.  
  33.   Parametry:
  34.     char s[] -- tablica zawierajaca napis
  35.  
  36.   Rezultat:
  37.     Liczba malych liter w napisie s
  38. ----------------------------------------------------------------------------*/
  39. int lwr_str_cnt( char s[] )
  40. {
  41.     int Ilosc=0;
  42.     for(int i = 0; s[i] != '\0'; i++ )
  43.     {
  44.         if(s[i] >= 'a' && s[i] <= 'z')
  45.         {
  46.             Ilosc++;
  47.         }
  48.     }
  49.     return Ilosc;
  50. }
  51. /*----------------------------------------------------------------------------
  52.   int upr_str_cnt( char s[] )
  53.  
  54.   Funkcja:
  55.     Wyznacza liczbe duzych liter w napisie s
  56.  
  57.   Parametry:
  58.     char s[] -- tablica zawierajaca napis
  59.  
  60.   Rezultat:
  61.     Liczba duzych liter w napisie s
  62. ----------------------------------------------------------------------------*/
  63. int upr_str_cnt( char s[] )
  64. {
  65.     int Ilosc=0;
  66.     for(int i = 0; s[i] != '\0'; i++ )
  67.     {
  68.         if(s[i] >= 'A' && s[i] <= 'Z')
  69.         {
  70.             Ilosc++;
  71.         }
  72.     }
  73.     return Ilosc;
  74. }
  75. /*----------------------------------------------------------------------------
  76.   int dgt_str_cnt( char s[] )
  77.  
  78.   Funkcja:
  79.     Wyznacza liczbe cyfr w napisie s
  80.  
  81.   Parametry:
  82.     char s[] -- tablica zawierajaca napis
  83.  
  84.   Rezultat:
  85.     Liczba cyfr w napisie s
  86. ----------------------------------------------------------------------------*/
  87. int dgt_str_cnt( char s[] )
  88. {
  89.     int Ilosc=0;
  90.     for(int i = 0; s[i] != '\0'; i++ )
  91.     {
  92.         if(s[i] >= '0' && s[i] <= '9')
  93.         {
  94.             Ilosc++;
  95.         }
  96.     }
  97.     return Ilosc;
  98. }
  99. /*----------------------------------------------------------------------------
  100.   int nalpha_str_cnt( char s[] )
  101.  
  102.   Funkcja:
  103.     Wyznacza liczbe liter i cyfr w napisie s
  104.  
  105.   Parametry:
  106.     char s[] -- tablica zawierajaca napis
  107.  
  108.   Rezultat:
  109.     Liczba liter i cyfr w napisie s
  110. ----------------------------------------------------------------------------*/
  111. int nalpha_str_cnt( char s[] )
  112. {
  113.     int Ilosc=0;
  114.     for(int i = 0; s[i] != '\0'; i++ )
  115.     {
  116.         if((s[i] >= '0' && s[i] <= '9') || (s[i] >= 'A' && s[i] <= 'Z') ||  (s[i] >= 'a' && s[i] <= 'z'))
  117.         {
  118.             Ilosc++;
  119.         }
  120.     }
  121.     return Ilosc;
  122. }
  123. /*----------------------------------------------------------------------------
  124.   int chr_str_cnt( char c, char s[] )
  125.  
  126.   Funkcja:
  127.     Wyznacza liczbe wystapien znaku c w s
  128.  
  129.   Parametry:
  130.     char c   -- znak poszukiwany w napisie
  131.     char s[] -- tablica zawierajaca napis
  132.  
  133.  
  134.   Rezultat:
  135.     Liczba wystapien znaku c w napisie s
  136. ----------------------------------------------------------------------------*/
  137. int chr_str_cnt( char c, char s[] )
  138. {
  139.     int Ilosc=0;
  140.     for(int i = 0; s[i] != '\0'; i++ )
  141.     {
  142.         if(s[i] == c)
  143.         {
  144.             Ilosc++;
  145.         }
  146.     }
  147.     return Ilosc;
  148. }
  149. /*----------------------------------------------------------------------------
  150. int chr_str_pos( char c, char s[] )
  151.  
  152.   Funkcja:
  153.     Wyznacza indeks (pozycje w napisie) pierwszego wystapienia znaku c w s
  154.  
  155.   Parametry:
  156.     char c   -- znak poszukiwany w napisie
  157.     char s[] -- tablica zawierajaca napis
  158.  
  159.  
  160.   Rezultat:
  161.     Pozycja znaku w tablicy liczona od 0 lub -1 gdy znak nie znaleziony
  162. ----------------------------------------------------------------------------*/
  163. int chr_str_pos( char c, char s[] )
  164. {
  165.     int Indeks=-1;
  166.     for(int i = 0; s[i] != '\0'; i++ )
  167.     {
  168.         if(s[i] == c)
  169.         {
  170.             Indeks = i;
  171.             return Indeks;
  172.         }
  173.     }
  174.     return Indeks;
  175. }
  176. /*----------------------------------------------------------------------------
  177. int chr_str_rpos( char c, char s[] )
  178.  
  179.   Funkcja:
  180.     Wyznacza indeks (pozycje w napisie) ostatniego wystapienia znaku c w s
  181.  
  182.   Parametry:
  183.     char c   -- znak poszukiwany w napisie
  184.     char s[] -- tablica zawierajaca napis
  185.  
  186.  
  187.   Rezultat:
  188.     Pozycja znaku w tablicy liczona od 0 lub -1 gdy znak nie znaleziony
  189. ----------------------------------------------------------------------------*/
  190. int chr_str_rpos( char c, char s[] )
  191. {
  192.     int Indeks=-1;
  193.     for(int i = 0; s[i] != '\0'; i++ )
  194.     {
  195.         if(s[i] == c)
  196.         {
  197.             Indeks = i;
  198.         }
  199.     }
  200.     return Indeks;
  201. }
  202. /*----------------------------------------------------------------------------
  203.   void str_rev( char s[] )
  204.  
  205.   Funkcja:
  206.     Odwraca kolejnosc znakow w tablicy s
  207.  
  208.   Parametry:
  209.     char s[] -- tablica zawierajaca napis
  210.  
  211.   Rezultat:
  212.     Brak
  213. ----------------------------------------------------------------------------*/
  214. void str_rev( char s[] )
  215. {
  216.  
  217.     int Dlugosc = str_len(s); //Uzycie wlasnej funkcji do sprawdzenia dlugosc.
  218.     char temp[Dlugosc];
  219.     int n=0;//Tymczasowy n
  220.     int i;
  221.     for( i = (Dlugosc-1); i != -1; i-- ) //Przepisywanie wszystkich znakow od konca poza ostatnim.
  222.     {
  223.         temp[n] = s[i];
  224.         n++;
  225.     }
  226.     //temp[Dlugosc] = '\0'; Myslalem nad dodaniem znaku zakonczenia ale jakims cudem nie bylo to potrzebne.
  227.     // Prawdopodobnie iz nie zmieniam ostatniego znaku a ten znak jest juz znakiem zakoczenia.
  228.     for( i=0; i != (Dlugosc); i++ ) // Przepisywanie odwroconej tablicy do wlaciwiej.
  229.     {
  230.         s[i]=temp[i];
  231.     }
  232.  
  233. }
  234. // Ten main bedzie dzialal po prawidlowym zaimplementowaniu powyzszych funkcji
  235. int main()
  236. {
  237.     char line[ MAX_LEN ];
  238.     char c;
  239.     int pos;
  240.     string ciastko ;
  241.  
  242.     cout << "\n\nWpisz linie tekstu: ";
  243.     cin.getline( line, MAX_LEN );
  244.  
  245.     cout << "\nLiczba znakow           : " << str_len( line );
  246.     cout << "\nLiczba malych liter     : " << lwr_str_cnt( line );
  247.     cout << "\nLiczba duzych liter     : " << upr_str_cnt( line );
  248.     cout << "\nLiczba cyfr             : " << dgt_str_cnt( line );
  249.     cout << "\nLiczba alfanumerycznych : " << nalpha_str_cnt( line );
  250.  
  251.     cout << "\n\nPodaj pojedynczy znak: ";
  252.     cin.get( c );
  253.  
  254.     cout << "\nLiczba wystapien znaku  " << c << " : " << chr_str_cnt( c, line );
  255.  
  256.     if( ( pos = chr_str_pos( c, line ) ) != -1 )
  257.         cout << "\nPierwsze wystapienie znaku " << c << " od poczatku : " << pos + 1;
  258.     else
  259.         cout << "\nZnak " << c << " nie zostal znaleziony";
  260.  
  261.     if( ( pos = chr_str_rpos( c, line ) ) != -1 )
  262.         cout << "\nPierwsze wystapienie znaku " << c << " od konca : " << pos + 1;
  263.     else
  264.         cout << "\nZnak " << c << " nie zostal znaleziony";
  265.  
  266.     cout << "\n\nNapis oryginalny : " << line <<endl;
  267.     str_rev( line );
  268.     cout << "\nNapis odwrocony  : " << line;
  269.  
  270.     cout << "\nProgram zakonczy sie po wcisnieciu Enter...  : " ;
  271.  
  272.     cin.ignore();
  273.     cin.get();
  274.     return EXIT_SUCCESS;
  275. }
Add Comment
Please, Sign In to add comment