poniedziałek, 11 kwietnia 2016

C++ - Odwracanie tablicy metodą rekurencyjną

W tym poście chciałbym przedstawić sposób odwrócenia tablicy znaków, do tego celu wykorzystuje metodę rekurencyjną.

Program


Poniżej przedstawiam program do odwracania tablicy znaków:

  1. #include <iostream>
  2. const int TabEle = 10;
  3. void swap(char& a, char& b);
  4. void odwroc(char *tab, int left, int right);
  5. using namespace std;
  6. int main()
  7. {
  8.  //Deklaracja tablicy z liczbami
  9.  char tabl[TabEle]={'F''c''$''#''W''n''o''4''2' ,'p'};
  10.  //Pêtla wypisujaca elementy tablicy
  11.  for(int i=0; i<TabEle; i++)
  12.  {
  13.      cout << tabl[i] << "  ";
  14.  }
  15.  //Przejscie do nowej linii
  16.  cout << endl;
  17.  //Wywolanie funkcji odwrócenia tablicy
  18.  odwroc(tabl, 0, TabEle-1);
  19.  for(int i=0; i<TabEle; i++)
  20.  {
  21.     //Wypisanie odwróconej tablicy
  22.     cout << tabl[i] << "  ";
  23.  }
  24.  //Przejscie do nowej linii
  25.  cout << endl;
  26.  return 0;
  27. }
  28. //Funkcja zamieniajaca znaki miejscami
  29. void swap(char& a, char& b)
  30. {
  31.     int pomocnicza=a;
  32.     a=b;
  33.     b=pomocnicza;
  34. }
  35. void odwroc(char *tab, int left, int right)
  36. {
  37.  if(left<right)
  38.  {
  39.    //Zamienienie elementów skrajych
  40.    swap(tab[left], tab[right]);
  41.    //Odwrócenie pozostalych elementow tablicy
  42.    odwroc(tab, left+1, right-1);
  43.  }
  44. }

W powyższym programie oprócz funkcji głównej znajdują się dwie pomocnicze. Zadaniem jednej z nich jest odwrócenie wartości w tablicy poprzez zamienienie jej elementów miejscami, z wykorzystaniem zmiennej pomocniczej. Funkcja odwróć przechodzi przez poszczególne elementy tablicy w parach, tzn, wykorzystuje zmiennej znajdujące się na końcach tablicy. 

Główna pętla programu najpierw w pętli for wyświetla aktualne elementy tablicy po czym przechodzi do funkcji odwracania i wyświetla przestawione elementy.

Program będzie działał tak samo dla jakiegokolwiek typu danych.