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...
Răspunsuri la întrebare
Răspuns de
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);
}
Alte întrebări interesante