Să se scrie un program care citește un șir de caractere în care cuvintele sunt formate numai din litere mici ale alfabetului englez și sunt separate prin câte un spațiu și elimină litera din mijloc a fiecărui cuvânt cu număr impar de litere (cel puțin trei).
Programul citește de la tastatură un șir de cel mult 100 caractere.
Programul afișează pe ecran textul obţinut, iar dacă nu există niciun cuvânt modificat, afișează pe ecran mesajul nu exista.
Intrare
pictura prin aceea arata o pace profunda
Ieșire
picura prin acea arta o pace profunda
Răspunsuri la întrebare
#include <iostream>
using namespace std;
int main()
{
int inceput=0, sfarsit=0; //'inceput' -> index inceputul cuvantului; 'sfarsit' -> index sfarsitul cuvantului
char sir_caractere[101] = {}; //lista in care se salveaza sirul de caractere
cout << "Scrie sirul de caractere: "; //afiseaza mesaj
cin.getline(sir_caractere, sizeof(sir_caractere)); //citeste sirul
for(sfarsit; sfarsit<101; sfarsit++) //in bucla for o sa numar cate litere sunt in fiecare cuvant
{ //ma folosesc de variabilele 'inceput' si 'sfarsit'
if((sir_caractere[sfarsit] == ' ') || (sir_caractere[sfarsit] == '\0')) //daca iterand prin caracterele din 'sir_caractere' ajung la
{ //un caracter -spatiu- ' ' sau -null- '\0' (am un cuvant)
if(((sfarsit - inceput) % 2 > 0) && ((sfarsit - inceput) > 1)) //incerc sa aflu daca cuvantul are un numar impar de litere
{ //si daca are mai mult de 1 litera
sir_caractere[(inceput + ((sfarsit - inceput - 1) / 2))] = '#'; //inlocuiesc caracterul din centru cuvantului cu caracterul '#'
}
inceput = sfarsit + 1; //reimprospatez variabila 'inceput' (ca programul sa tina minte de unde incepe urmatorul cuvant)
}
}
for(int i=0; i<101; i++) //afisez toate caracterele din 'sir_caractere' inafara de caracterul '#' (pentru ca '#' este litera din centrul cuvintelor impare)
{
if(sir_caractere[i] != '#')
{
cout << sir_caractere[i];
}
}
cout << endl;
return(0);
}