fbpx

Problema #2304 – Cuvinte7 – Rezolvari PBInfo

de Mihai-Alexandru

Scrieţi un program care citeşte de la tastatură, în această ordine, un număr natural n, apoi n cuvinte, separate prin Enter, urmate de un număr natural k. Numerele citite sunt din intervalul [1,20], iar fiecare cuvânt este format din cel mult 20 de caractere, numai litere mici ale alfabetului englez. Cel puţin unul dintre cuvinte are k litere.

Programul construiește în memorie, apoi afișează pe ecran, un șir care să cuprindă cuvintele citite, separate prin câte un spațiu, astfel încât toate cele care au k litere să ocupe primele poziţii, iar celelalte să se regăsească în continuarea acestora, într-o ordine oarecare.

Exemplu

Intrare

5
am 
un 
cires 
de 
mai 
2 

Ieșire

am un de cires mai

Explicație

Există și alte soluții corecte.

#include <bits/stdc++.h>
using namespace std;

char a[1000][21];

int main()
{
    int n;
    cin >> n;
    for(int i = 0 ; i < n ; ++i)
        cin >> a[i];
    int k;
    cin >> k;
    for(int i = 0 ; i < n ; ++i)
    {
        int j = 0;
        int cnt=0;
        while(a[i][j]!='\0')
        {
            cnt++;
            j++;
        }
        if(cnt==k)
        {
            j=0;
            while(a[i][j]!='\0')
            {
            cout << a[i][j];
            j++;
            }
            cout << ' ';
        }
    }
    for(int i = 0 ; i <= n ; ++i)
    {
        int j = 0;
        int cnt=0;
        while(a[i][j]!='\0')
        {
            cnt++;
            j++;
        }
        if(cnt!=k)
        {
            j=0;
            while(a[i][j]!='\0')
            {
            cout << a[i][j];
            j++;
            }
            if(i!=n)
            cout << ' ';
        }
    }
    return 0;
}
Comentarii

S-ar putea sa iti placa