👤

Va rog scrieţi un program care citeşte de la tastatură un text înlocuind fiecare cuvânt care are lungimea para cu simbolul *. afişează pe ecran textul obţinut sau mesajul nu exista dacă nu sunt cuvinte de lungime para.(c++)

Răspuns :

Ceva de genu:

#include <iostream>
#include <cstring>

using namespace std;

int main()
{
    char s[100]{}, s1[100]{};
    int ok = 0;
    cin.get(s, 100);

    const char sep[] = " ";
    char* a = strtok(s, sep);

    while (a)
    {
        if (strlen(a) % 2 == 0)
        {
            strcat(s1, "* ");
            ok = 1;
        }
        else
        {
            strcat(s1, a);
            strcat(s1, " ");
        }

        a = strtok(nullptr, sep);
    }

    if (ok == 1)
        cout << s1;
    else
        cout << "nu exista";
}

Cu un singur sir, desi nu sunt sigur daca pe alte compilatoare rezultatul va fi la fel:

#include <iostream>
#include <cstring>

int main()
{
    const int lgMax = 100;

    char s[lgMax]{};
    std::cin.get(s, lgMax);
    size_t lg = std::strlen(s);
    bool ok = false;

    for (size_t i = 0, cuvlg = 0; i < lg + 1; ++i) {
        if (std::isalpha(s[i]))
            ++cuvlg;
        else  {
            if (cuvlg % 2 == 0 && cuvlg) {
                std::strcpy(s + i - cuvlg, s + i - 1);
                s[i - cuvlg] = '*';
                lg = strlen(s);
                i -= cuvlg + 1;
                ok = true;
            }

            cuvlg = 0;
        }
    }

    if (ok)
        std::cout << s;
    else
        std::cout << "nu exista";
}