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


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ăspunsuri la întrebare

Răspuns de andriesboss92
5

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.


mrancla: Mersi mult mai am 2 prob nefacute poti sa ma ajuti si cu alea?
andriesboss92: Sigur. Unde?
mrancla: Ai insta sa ti dau acolo?
mrancla: Ca mi e mai usor
mrancla: Daca te uiti pe profil la intrebarile mele cred ca le vezi
Alte întrebări interesante