Siema. Program pobiera liczbę n (ilość słów) a następnie sortuje je po długości. Program jest napisany przezemnie być może że jest na zadane.pl gdyż wydaje mi się ze niedawno go wrzucałem, więc proszę mi nie zarzucać że coś kopiuję :D
Aha i mam nadzieję że o C++ chodzi :D
#include <iostream> #include <string> using namespace std;
bool mniejsze(string& a, string& b) { if(a.length() < b.length()) return true;
Siema. Program pobiera liczbę n (ilość słów) a następnie sortuje je po długości. Program jest napisany przezemnie być może że jest na zadane.pl gdyż wydaje mi się ze niedawno go wrzucałem, więc proszę mi nie zarzucać że coś kopiuję :D
Aha i mam nadzieję że o C++ chodzi :D
#include <string>
using namespace std;
bool mniejsze(string& a, string& b)
{
if(a.length() < b.length())
return true;
if(a.length() > b.length())
return false;
for(unsigned int i = 0; i < a.length(); i++)
{
if(a[i] < b[i])
return true;
if(a[i] > b[i])
return false;
}
return false;
}
void scal(string a[], string b[], int p, int s, int k)
{
int i=p, j=s+1, n=p;
while(i <= s && j <= k)
{
if(mniejsze(a[i], a[j]))
{
b[n] = a[i];
i++;
n++;
}
else
{
b[n] = a[j];
j++;
n++;
}
}
while(i <= s)
{
b[n] = a[i];
n++;
i++;
}
while(j <= k)
{
b[n] = a[j];
n++;
j++;
}
for(int l=p; l<=k; l++)
a[l] = b[l];
}
void sort(string a[], string b[], int p, int k)
{
int s=(p+k)/2;
if(p>=k) return;
sort(a, b, p, s);
sort(a, b, s+1, k);
scal(a, b, p, s, k);
}
int main()
{
int n;
cin >> n;
string* tab = new string[n];
string* pom = new string[n];
for(int i = 0; i < n; i++)
cin >> tab[i];
sort(tab, pom, 0, n-1);
for(int i = 0; i < n; i++)
cout << tab[i] << endl;
delete [] tab;
return 0;
};