👤


4.
Un şir cu maximum 255 de caractere conține cuvinte separate prin câte un spațiu. Cuvintele
sunt formate numai din litere mici ale alfabetului englez. Scrieți un program C/C++ care
citeşte de la tastatură un astfel de şir şi îl afişează pe ecran modificat, inversând prin
oglindire doar cuvintele care încep cu vocală, ca în exemplu. Se considera vocale literele din
mulțimea (a, e, i, o, u}.
Exemplu: pentru şirul: maine este proba la informatica se va afişa:
maine etse proba la acitamrofni


Răspuns :

Răspuns:

#include <iostream>

#include <cstring>

using namespace std;

int main()

{

   char vocale[]="aeiou", sir[256], *p;

   cin.get(sir,255);

   p = strtok(sir," ");

   while ( p != NULL )

   {

       if ( strchr(vocale,p[0]) )

       {

           for(int i = strlen(p)-1; i>=0; i--)

               cout << p[i];

           cout << " ";      

       }

       else

           cout << p << " ";

       p = strtok(NULL," ");

   }

}

Explicație:

Citim sirul. Folosim pointerul *p pentru functia strtok care va reprezenta fiecare cuvant din sir pe rand pana la spatiu.

p = strtok( sir, separator );

separator fiind datele din cerinta: " sirul... conține cuvinte separate prin câte un spațiu " In cazul nostru separator = " " .... " spatiu "

Prin secventa repetitiva while ( p != NULL ) { ... instructiune ... p = strtok( NULL, separator ); } pointerul p va reprezenta fiecare cuvant de la primul spatiu pana la urmatorul.