Algorytm 1 Sortowanie

Sposób I by Maciek

W wakacje udało mi się sklecić coś takiego:

#include <iostream>
 
using namespace std;
 
char slowo[100][20], slowo2[100][20], znak;
int ile, a=0, b=0, c=1, licz[100];
 
int main()
{
    cout<<"Wpisz slowa, ktore maja zostac uporzadkowane alfabetycznie.\n"
        <<"Ale najpierw wpisz ile wyrazow chcesz uporzadkowac: ";
    cin>>ile;
    cout<<"Teraz wpisuj slowa\n";
    for (a=0; a<ile; a++) cin >> slowo[a];
    for (a=0; a<ile; a++)
        for (c=0; c<ile; c++)
            if (strcmp(slowo[a], slowo[c])==1)
                licz[a]++;
    for (c=0; c<ile; c++)
        strcpy(slowo2[licz[c]], slowo[c]);
    cout << "\nPo posortowaniu slowa wystepuja w nastepujacej kolejnosci:\n";
    for (a=0; a<ile; a++)
        cout<<slowo2[a]<<'\n';
 
    return 0;
}

Idźcie za przykładem i wrzucajcie swoje algorytmy, albo jakieś znalezione w książkach/sieci ;)

Sposób II by Seb

Input

6
dziadek wnuczek babcia wnuczka ciocia

Pierwsza linia zawiera ilość wyrazów (n), które chcemy posortować, natomiast druga n wyrazów do posortowania.

Output

babcia
ciocia
dziadek
wnuczek
wnuczka
wujek

To chyba nie wymaga komentarza.

Opis

To rozwiązanie jest oparte na istniejących już mechanizmach w standardowych bibliotekach C++, czyli krótko mówiąc - "Po co drugi raz wynajdywać koło?". Poza tym tutaj składnia jest typowa dla C++ (wsparcie obiektów), natomiast powyżej pokazywana jest raczej koncepcja z C. Wydaje mi się, że to rozwiązanie jest bardziej "naturalne" i estetyczniejsze. A poza tym nie ma limitów długości i ilości wyrazów do posortowania (oczywiście w granicach dostępnej pamięci na danym sprzęcie), które występują w powyższej wersji.

Source

#include <vector>
#include <algorithm>
#include <string>
#include <iostream>
 
using namespace std;
 
int main(void) {
  unsigned long n;
  cin >> n;
  vector<string> texts(n);
  vector<string>::iterator p_start, p_end;
  p_start = texts.begin();
  p_end = texts.end();
 
  for(unsigned long i = 0; (p_start+i) != p_end; i++)
    cin >> *(p_start+i);
 
  sort(p_start, p_end);
 
  for(unsigned long i = 0; (p_start+i) != p_end; i++)
    cout << *(p_start+i) << endl;
 
  return false;
}
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License