#1032
Se consideră un text memorat într-o matrice M, definită prin coordonatele colţului stânga sus (x1,y1) şi coordonatele colţului dreapta jos (x2,y2).
Prin aplicarea unui algoritm de compresie, matricei M i se asociază un şir de caractere, notat CM. Şirul de caractere CM este construit prin aplicarea următoarelor reguli:
M are o singură linie şi o singură coloană atunci CM conţine numai caracterul memorat în matrice;M se comprimă şi CM este şirul kc, unde k reprezintă numărul de caractere din matrice, iar c caracterul memorat;
matricea este împărţită în 4 submatrice A, B, C, D după cum este ilustrat în figura alăturată, unde coordonatele colţului stânga sus ale submatricei A sunt (x1,y1), iar coordonatele colţului dreapta jos sunt ((x2+x1)/2,(y2+y1)/2);CM este şirul *CACBCCCD unde CA, CB, CC, CD sunt şirurile de caractere obţinute, în ordine, prin compresia matricelor A, B, C, D utilizând acelaşi algoritm;CM este şirul *CACB unde A, B, CA, CB au semnificaţia descrisă la punctul 3.;CM este şirul *CACC unde A, C, CA, CC au semnificaţia descrisă la punctul 3.;Dat fiind şirul de caractere CM ce se obţine în urma aplicării algoritmului de compresie asupra unei matrice M de dimensiune NxN să se determine:
OJI 2012, clasa a X-a
| Problema | Compresie | Operații I/O |
compresie.in/compresie.out
|
|---|---|---|---|
| Limita timp | 0.5 secunde | Limita memorie |
Total: 4 MB
/
Stivă 3 MB
|
| Id soluție | #62143963 | Utilizator | |
| Fișier | compresie.cpp | Dimensiune | 1.80 KB |
| Data încărcării | 11 Ianuarie 2026, 13:19 | Scor/rezultat | Eroare de compilare |
compresie.cpp: In function 'void build(int, int, int, int)': compresie.cpp:26:33: error: invalid conversion from 'char' to 'char*' [-fpermissive] strcat(num, sir[pos]); ^ In file included from /usr/include/features.h:374:0, from /usr/include/i386-linux-gnu/c++/4.8/bits/os_defines.h:39, from /usr/include/i386-linux-gnu/c++/4.8/bits/c++config.h:426, from /usr/include/c++/4.8/iostream:38, from compresie.cpp:1: /usr/include/i386-linux-gnu/bits/string3.h:140:1: error: initializing argument 1 of 'char* strcat(char*, const char*)' [-fpermissive] __NTH (strcat (char *__restrict __dest, const char *__restrict __src)) ^ compresie.cpp:26:32: error: invalid conversion from 'char' to 'const char*' [-fpermissive] strcat(num, sir[pos]); ^ In file included from /usr/include/features.h:374:0, from /usr/include/i386-linux-gnu/c++/4.8/bits/os_defines.h:39, from /usr/include/i386-linux-gnu/c++/4.8/bits/c++config.h:426, from /usr/include/c++/4.8/iostream:38, from compresie.cpp:1: /usr/include/i386-linux-gnu/bits/string3.h:140:1: error: initializing argument 2 of 'char* strcat(char*, const char*)' [-fpermissive] __NTH (strcat (char *__restrict __dest, const char *__restrict __src)) ^ compresie.cpp:31:26: error: invalid conversion from 'char' to 'const char*' [-fpermissive] inum=atoi(num); ^ In file included from /usr/include/features.h:374:0, from /usr/include/i386-linux-gnu/c++/4.8/bits/os_defines.h:39, from /usr/include/i386-linux-gnu/c++/4.8/bits/c++config.h:426, from /usr/include/c++/4.8/iostream:38, from compresie.cpp:1: /usr/include/stdlib.h:278:1: error: initializing argument 1 of 'int atoi(const char*)' [-fpermissive] __NTH (atoi (const char *__nptr)) ^ compresie.cpp:35:29: error: invalid conversion from 'char' to 'char*' [-fpermissive] strcpy(num, '\0'); ^ In file included from /usr/include/features.h:374:0, from /usr/include/i386-linux-gnu/c++/4.8/bits/os_defines.h:39, from /usr/include/i386-linux-gnu/c++/4.8/bits/c++config.h:426, from /usr/include/c++/4.8/iostream:38, from compresie.cpp:1: /usr/include/i386-linux-gnu/bits/string3.h:102:1: error: initializing argument 1 of 'char* strcpy(char*, const char*)' [-fpermissive] __NTH (strcpy (char *__restrict __dest, const char *__restrict __src)) ^ compresie.cpp:35:29: warning: null argument where non-null required (argument 2) [-Wnonnull] strcpy(num, '\0'); ^ compresie.cpp: In function 'int main()': compresie.cpp:52:20: warning: comparison with string literal results in unspecified behaviour [-Waddress] if(sir[i]=="*") cnt++, continue; ^ compresie.cpp:52:20: error: ISO C++ forbids comparison between pointer and integer [-fpermissive] compresie.cpp:52:25: error: 'cnt' was not declared in this scope if(sir[i]=="*") cnt++, continue; ^ compresie.cpp:52:32: error: expected primary-expression before 'continue' if(sir[i]=="*") cnt++, continue; ^ compresie.cpp:52:32: error: expected ';' before 'continue' compresie.cpp:55:31: error: invalid conversion from 'char' to 'char*' [-fpermissive] strcat(num, sir[i]); ^ In file included from /usr/include/features.h:374:0, from /usr/include/i386-linux-gnu/c++/4.8/bits/os_defines.h:39, from /usr/include/i386-linux-gnu/c++/4.8/bits/c++config.h:426, from /usr/include/c++/4.8/iostream:38, from compresie.cpp:1: /usr/include/i386-linux-gnu/bits/string3.h:140:1: error: initializing argument 1 of 'char* strcat(char*, const char*)' [-fpermissive] __NTH (strcat (char *__restrict __dest, const char *__restrict __src)) ^ compresie.cpp:55:30: error: invalid conversion from 'char' to 'const char*' [-fpermissive] strcat(num, sir[i]); ^ In file included from /usr/include/features.h:374:0, from /usr/include/i386-linux-gnu/c++/4.8/bits/os_defines.h:39, from /usr/include/i386-linux-gnu/c++/4.8/bits/c++config.h:426, from /usr/include/c++/4.8/iostream:38, from compresie.cpp:1: /usr/include/i386-linux-gnu/bits/string3.h:140:1: error: initializing argument 2 of 'char* strcat(char*, const char*)' [-fpermissive] __NTH (strcat (char *__restrict __dest, const char *__restrict __src)) ^ compresie.cpp:60:26: error: invalid conversion from 'char' to 'const char*' [-fpermissive] inum=atoi(num); ^ In file included from /usr/include/features.h:374:0, from /usr/include/i386-linux-gnu/c++/4.8/bits/os_defines.h:39, from /usr/include/i386-linux-gnu/c++/4.8/bits/c++config.h:426, from /usr/include/c++/4.8/iostream:38, from compresie.cpp:1: /usr/include/stdlib.h:278:1: error: initializing argument 1 of 'int atoi(const char*)' [-fpermissive] __NTH (atoi (const char *__nptr)) ^ compresie.cpp:62:29: error: invalid conversion from 'char' to 'char*' [-fpermissive] strcpy(num, '\0'); ^ In file included from /usr/include/features.h:374:0, from /usr/include/i386-linux-gnu/c++/4.8/bits/os_defines.h:39, from /usr/include/i386-linux-gnu/c++/4.8/bits/c++config.h:426, from /usr/include/c++/4.8/iostream:38, from compresie.cpp:1: /usr/include/i386-linux-gnu/bits/string3.h:102:1: error: initializing argument 1 of 'char* strcpy(char*, const char*)' [-fpermissive] __NTH (strcpy (char *__restrict __dest, const char *__restrict __src)) ^ compresie.cpp:62:29: warning: null argument where non-null required (argument 2) [-Wnonnull] strcpy(num, '\0'); ^ compresie.cpp:70:5: error: expected ';' before 'cout' cout<<cnt1<<endl; ^
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema Compresie 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ă.