Z sortowaniem bąbelkowym


//*************************************************************************

//           PROGRAM SPRAWDZA CZY PODANE WYRAZY SA ANAGRAMAMI

//               - anagramy to wyrazy tej samej dlugosci i skladajace sie z tych samych liter

//               - np. okno i noko, zez i ezz, piniki i iiipnk

//               - wykorzystuje sortowanie bąbelkowe i funkcje swap

//               - zlicza ile jest par anagramów w pliku

//*************************************************************************

 

#include<iostream>

#include<fstream>

 

using namespace std;

 

 int main()

 {

               

        string a;   // zmienna na wczytany wyraz ze strumienia danych czyli z pliku

string b;   // poniewaz interesuja mnie litery tego wyrazu to deklaruje ja jako string                  

               

    int suma=0;            // zmienna na ilosc anagramow w pliku 

int c;                        // zmienna na dlugosc wyrazu a

int d;                       // zmienna na dlugosc wyrazu b      

     

     ifstream odczyt("dane_anagram.txt");  

     ofstream zapis("wynik_anagram.txt");     

   

  while(!odczyt.eof()) 

  {

  

    odczyt>>a;   // czyta pierwszy wyraz z pliku

    c=a.size();    // oblicza dlugosc wyrazu czyli ilosc liter 

  

// teraz sortowanie liter w kazdym wyrazie w kolejnosci rosnacej, tak jak w alfabecie

// np. z wyrazu ara otrzymam aar

// zastosowalam sortowanie babelkowe

 

  for (int i=0; i<c; i++)

  

   {

  for (int j=0; j<c-1; j++)  

   

         {

         if (a[j]> a[j+1])

         swap (a[j], a[j+1]);    // zastosowalam funkcje swap,

                                                  // ktora zamienia miejscami elementy w tablicy

         }

   }

    

   

    odczyt>>b;

    d=b.size(); 

    

    // to samo dla drugiego wyrazu

    // czyli przez sortowanie babelkowe ustawiam litery w kolejnosci alfabetycznej    

    for (int i=0; i<d; i++)

  

    {

  for (int j=0; j<d-1; j++)  

   

         {

         if (b[j]> b[j+1])

         swap (b[j], b[j+1]);    

         }

    }

   

                                

    if (a==b)  //sprawdzam czy posortowany wyraz a jest taki sam jak posortowany wyraz b

{     

               suma=suma+1;                   // jesli sa rowne to sa anagramami i dlatego je zliczam

               zapis<<a<<" "<<b<<endl;  // oraz zapisuje je do pliku

    

      } 

  

  } 

   zapis<<endl<<"Jest "<<suma<<" anagramow";  // zapisuje "ladnie" do pliku

   

     odczyt.close();

     zapis.close();

     return 0;

}