408
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