Informatică, întrebare adresată de ProMinecraft69, 9 ani în urmă

Scrieți funcția cu următorul antet:


void Prescurtat(char s[ ])


Funcția primește ca parametru un text de cel mult 50 de caractere, alcătuit din cuvinte separate prin câte un spațiu și 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. Funcția va returna tot prin intermediul parametrului s numele instituției scris fără prescurtări.





Exemplu

Dacă s memorează inițial COLEG. NAT. DE INFORMATICA, atunci după apelul Prescurtat(s), șirul va deveni COLEGIUL NATIONAL DE INFORMATICA.


Restricții și precizări

Lungimea inițială a șirului s va fi de cel mult 50, iar la final de cel mult 100.

Puteți utiliza funcțiile pentru șirurile de caractere din biblioteca cstring


Acesta este codul meu, pe exemplu si pe altele create de mine imi da bine, pe site-ul pbinfo imi da tot gresit, doresc sa-mi spuneti daca stiti care este motivul. Multumesc!


Problema se numeste "prescurtat".

Codul meu => https://pastebin.com/TGwaS0Dv


boiustef: codul tău se bazează pe exemplul propus, dar textul introdus poate fi oricare şi să ni conţină cuvintele DE, INFORMATICA...
boiustef: si nu crezi ca orice cuvant ce se incepe cu C sa fie substituit prin cuvantul COLEGIUL?

Răspunsuri la întrebare

Răspuns de boiustef
10

void Prescurtat(char s[])

{

   char w[100], *p, sep[]=" ", c1[]="COLEGIUL", c2[]="LICEUL", c3[]="NATIONAL", c4[]="TEORETIC";

   int n;

     p=strtok(s,sep); w[0]='\0';

   while (p)

   {

       n=strlen(p);

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

       else

       {

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

           if (strstr(c1,p)) strcat(w,c1);

           if (strstr(c2,p)) strcat(w,c2);

           if (strstr(c3,p)) strcat(w,c3);

           if (strstr(c4,p)) strcat(w,c4);

       }

       p=strtok(NULL, sep);

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

   }

   strcpy(s,w);

}


ProMinecraft69: Am uitat de solutia asta si pana la urma am stat pana am facut eu problema, dar acum ca vad ca te-ai oferit sa ma ajuti iti dau coroana sa fie =)))
boiustef: bravo, că ai făcut singur...
Alte întrebări interesante