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

Buna, cum se poate rezolva aceasta problema: Într-un text de cel mult 50 de caractere cuvintele sunt separate prin câte un spațiu și sunt formate din
litere mari ale alfabetului englez, urmate eventual de caracterul . (punct), dacă sunt scrise prescurtat.
Textul reprezintă numele unei instituții de învățământ și doar cuvintele din mulțimea
{COLEGIUL, LICEUL, NATIONAL, TEORETIC} pot fi prescurtate, eliminându-se ultimele lor litere.
Scrieţi un program C/C++ care citeşte de la tastatură un text de tipul precizat și construiește în
memorie, apoi afișează pe ecran, numele instituției scris fără prescurtări.
Exemplu: dacă se citește textul COLEG. NATIONAL DE INFORMATICA sau textul
COLEG. NAT. DE INFORMATICA se obține COLEGIUL NATIONAL DE INFORMATICA.
Multumesc anticipat.

Răspunsuri la întrebare

Răspuns de boiustef
1

#include <iostream>

#include <cstring>

using namespace std;

char cuv[4][15]={"COLEGIUL","LICEUL","NATIONAL","TEORETIC"},

      t[50], s[80], *p, sep[]=" ";

int poz, i, n, k;

int main()

{

   cin.getline(t,50);

   p=strtok(t,sep);

   while (p)

   {

       n=strlen(p);

       if (p[n-1]!='.') strcat(s,p);

       else

       {

           p[n-1]='\0';

           for (k=0; k<4; ++k)

           {

               if (strstr(cuv[k],p))

               {

                   strcat(s,cuv[k]);

                   break;

               }

           }

       }

       p=strtok(NULL, sep);

       if (p) strcat(s, " ");

   }

     cout << s << "\n";

}


Snake13: fix asta am scris in codeblocks
boiustef: ?? ŞI de ce eu primesc bn iar tu nu?
Snake13: idk.. s-a retardat calculatorul
boiustef: p[n-1]='\O';
AICI SE PARE AI BĂGAT LITERA O INLOC DE ZERO ?
Snake13: a,da ms mult
Snake13: scz de deranj XD
boiustef: ;)))
Snake13: si totusi..inca tot asa merge =)))
Snake13: da-i pace ca mai vad eu daca nu
Snake13: Sa iti dea Dumnezeu sanatate.
Alte întrebări interesante