#1087
Cuvinte4
Se consideră un şir de cuvinte separate două câte două printr-un spaţiu. Fiecare cuvânt este caracterizat prin numărul de ordine care reprezintă poziţia lui în şirul de cuvinte (primul cuvânt are numărul de ordine 1
). Unui cuvânt i se pot aplica în mod repetat următoarele transformări: primul caracter al cuvântului (cel mai din stânga) se şterge de acolo şi se adaugă după ultimul caracter din cuvânt. Astfel, dintr-un cuvânt s
cu k
caractere se pot obţine alte k-1
cuvinte pe care le numim cuvinte obţinute din transformarea cuvântului s
. De exemplu, dintr-un cuvânt format din 4
caractere c1c2c3c4
, cuvintele obţinute prin transformarea lui sunt: c2c3c4c1
, c3c4c1c2
, c4c1c2c3
.
Se caută în şirul de cuvinte prima pereche de cuvinte vecine (a,b)
, în care al doilea cuvânt din pereche (cuvântul b)
este identic cu un cuvânt obţinut din transformarea lui a
. Dacă există o astfel de pereche, se şterge cuvântul b
din şir. Prin ştergerea cuvântului b
din şir, acesta va avea mai puţin cu un cuvânt! Se repetă operaţia de căutare de mai sus până când în şirul rămas nu mai există o pereche (a,b)
de cuvinte vecine, astfel încât b
să fie obţinut prin transformarea lui a
.
Se ştie că pe parcursul modificărilor, cuvintele nu-şi schimbă numerele de ordine pe care le-au avut iniţial.
Scrieţi un program care să citească şirul de cuvinte şi să afişeze:
a) numărul de ordine al primului cuvânt şters sau valoarea 0
în cazul în care nu se şterge niciun cuvânt
b) numerele de ordine ale cuvintelor rămase după finalizarea operaţiilor de modificare.
OJI 2010, Clasa a VII-a
Problema | Cuvinte4 | Operații I/O |
![]() cuvinte4.in /cuvinte4.out
|
---|---|---|---|
Limita timp | 0.1 secunde | Limita memorie |
Total: 64 MB
/
Stivă 8 MB
|
Id soluție | #56412001 | Utilizator | |
Fișier | cuvinte4.cpp | Dimensiune | 1023 B |
Data încărcării | 18 Februarie 2025, 11:20 | Scor / rezultat | Eroare de compilare |
cuvinte4.cpp: In function 'int main()': cuvinte4.cpp:17:29: warning: pointer to a function used in arithmetic [-Wpointer-arith] strcpy(b, v[strlen[i]-1]); ^ cuvinte4.cpp:17:31: warning: pointer to a function used in arithmetic [-Wpointer-arith] strcpy(b, v[strlen[i]-1]); ^ cuvinte4.cpp:17:32: error: invalid types 'char [50][11][size_t (*)(const char*)throw () {aka unsigned int (*)(const char*)throw ()}]' for array subscript strcpy(b, v[strlen[i]-1]); ^ cuvinte4.cpp:20:27: error: invalid conversion from 'char' to 'const char*' [-fpermissive] while(strcmp(b,a[i])!=0) ^ In file included from /usr/include/c++/4.8/cstring:42:0, from cuvinte4.cpp:3: /usr/include/string.h:144:12: error: initializing argument 2 of 'int strcmp(const char*, const char*)' [-fpermissive] extern int strcmp (const char *__s1, const char *__s2) ^ cuvinte4.cpp:22:33: error: invalid types 'size_t(const char*)throw () {aka unsigned int(const char*)throw ()}[char [275]]' for array subscript strcpy(b, a[strlen[a]-1]); ^ cuvinte4.cpp:24:23: error: invalid types 'size_t(const char*)throw () {aka unsigned int(const char*)throw ()}[char [11]]' for array subscript b[strlen[b]-1]=NULL; ^ cuvinte4.cpp:25:28: error: invalid conversion from 'char' to 'const char*' [-fpermissive] if(strcmp(a[i+1],b)==0) ^ In file included from /usr/include/c++/4.8/cstring:42:0, from cuvinte4.cpp:3: /usr/include/string.h:144:12: error: initializing argument 1 of 'int strcmp(const char*, const char*)' [-fpermissive] extern int strcmp (const char *__s1, const char *__s2) ^ cuvinte4.cpp:30:23: error: incompatible types in assignment of 'int' to 'char [11]' v[i+1]=NULL; ^
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema Cuvinte4 face parte din prima categorie. Soluția propusă de tine va fi evaluată astfel:
Suma punctajelor acordate pe testele utilizate pentru verificare este 100. Astfel, soluția ta poate obține cel mult 100 de puncte, caz în care se poate considera corectă.