Informatică, întrebare adresată de mocanualexandrp2ikb6, 8 ani în urmă

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

Răspuns de AfloareiAndrei
1

#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);

}

Alte întrebări interesante