fbpx

Problema #3112 – Bac_Cuvinte – Rezolvari PBInfo

de Mihai-Alexandru

Cerința

Într-un text cu cel mult 100 de caractere cuvintele sunt formate numai din litere mari și mici ale alfabetului englez și sunt separate prin câte un spațiu. Scrieți un program care citește de la tastatură un text de tipul precizat, apoi un număr natural, n, n∈[1,102), şi afişează pe ecran, pe linii separate, cuvintele din text care au exact n litere. Cuvintele sunt afișate în ordinea apariției lor în text, iar dacă nu există niciun astfel de cuvânt, se afișează pe ecran mesajul nu exista.

Date de intrare

Programul citește de la tastatură numărul textul dat, apoi numărul n.

Date de ieșire

Programul va afișa pe ecran cuvintele din text cu exact n litere, fiecare pe câte o linie.

Restricții și precizări

  • 1 ≤ n < 100
  • textul conține cel mult 100 de caractere; cuvintele sunt formate numai din litere mari și mici ale alfabetului englez și sunt separate prin câte un spațiu

Exemplu

Intrare

Fat Frumos este cel mai viteaz
6

Ieșire

Frumos
viteaz
#include <bits/stdc++.h>

using namespace std;

bool sl(char d[], int n)
{
    int i = 0;
    while(d[i])
        i++;
    if(i == n)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}

char s[1001];
char m[1001][1001];

int main()
{
    int n;
    cin.getline(s, 101);
    cin >> n;
    int i = 0;
    int j = 0;
    int cnt = 1;
    while(s[i])
    {
        if(s[i] == ' ' && (s[i+1]!=' ' || s[i+1]!='\0'))
        {
            j = 0;
            cnt++;
        }
        else
        {
            m[cnt][j] = s[i];
            j++;
        }
        i++;
    }
    int c = 0;
    for(int i = 1; i <= cnt; ++i)
        if(sl(m[i], n))
        {
            cout << m[i] << "\n";
            c++;
        }
    if(c == 0)
        cout << "nu exista";
    return 0;
}
Comentarii

S-ar putea sa iti placa