fbpx

Problema #2692 – LungSortDesc – Rezolvari PBInfo

de Mihai-Alexandru

Cerința

Se dă un șir de caractere în care cuvintele sunt formate din litere mici și mari ale alfabetului englez și sunt separate prin spații.

Să se afișeze cuvintele pe ecran, fiecare cuvânt pe câte o linie, în ordinea descrescătoare a numărului de litere. Dacă două cuvinte au același număr de litere atunci ele se vor afișa în ordine lexicografică.

Date de intrare

Programul citește de la tastatură șirul de caractere.

Date de ieșire

Programul va afișa cuvintele din șir pe ecran, conform cerinței.

Restricții și precizări

  • șirul va conține maximum 255 de caractere

Exemplu

Intrare

ana are mere

Ieșire

mere
ana
are
#include <bits/stdc++.h>

using namespace std;

char mat[100][100];

int main()
{
    char s[300];
    cin.getline(s , 300);
    int i = 0;
    int j = 0 , cnt = 1;
    while(s[i]!='\0')
    {
        if(s[i]==' ')
            j=0 , cnt++;
        else
            mat[cnt][j]=s[i] , j++;
        i++;
    }
    for(int i = 1 ; i <= cnt ; ++i)
        for(int j = i + 1 ; j <= cnt ; ++j)
            if(strcmp(mat[i] , mat[j]) > 0)
                swap(mat[i] , mat[j]);
    int lmax = 0;
    for(int i = 1 ; i <= cnt ; ++i)
        if(strlen(mat[i]) > lmax)
            lmax=strlen(mat[i]);
    for(int i = lmax ; i >= 1 ; --i)
        for(int j = 1 ; j <= cnt ; ++j)
            if(strlen(mat[j])==i)
                cout << mat[j] << '\n';
    return 0;
}
Comentarii

S-ar putea sa iti placa