#4685
Scrieți o funcție care va șterge dintr-o listă dublu înlănțuită primul nod care memorează valoarea A și ultimul nod care memorează valoarea B.
| Problema | LdiStergeAB | Operații I/O |
ldistergeab.in/ldistergeab.out
|
|---|---|---|---|
| Limita timp | 0.1 secunde | Limita memorie |
Total: 64 MB
/
Stivă 8 MB
|
| Id soluție | #64597734 | Utilizator | |
| Fișier | ldistergeab.cpp | Dimensiune | 8.12 KB |
| Data încărcării | 17 Mai 2026, 21:40 | Scor/rezultat | Eroare de compilare |
ldistergeab.cpp:80:8: error: extended character → is not valid in an identifier 80 | z = p; → z pointează la nod. | ^ ldistergeab.cpp:82:14: error: extended character → is not valid in an identifier 82 | z = nullptr; → pierzi adresa nodului. | ^ ldistergeab.cpp:84:11: error: extended character → is not valid in an identifier 84 | delete z; → faci delete nullptr, care nu face nimic. | ^ ldistergeab.cpp:112:1: error: extended character → is not valid in an identifier 112 | → segmentation fault. | ^ ldistergeab.cpp:178:19: error: extended character „ is not valid in an identifier 178 | Dacă intenția era „șterge toate nodurile dintre A și B”, nu doar nodurile A și B, atunci funcția trebuie făcută diferit. | ^ ldistergeab.cpp:178:54: error: extended character ” is not valid in an identifier 178 | Dacă intenția era „șterge toate nodurile dintre A și B”, nu doar nodurile A și B, atunci funcția trebuie făcută diferit. | ^ ldistergeab.cpp:402:26: error: extended character ≥ is not valid in an identifier 402 | Acum, cu ipotezele tale (≥2 elemente, A != B), funcția este corectă. | ^ ldistergeab.cpp:70:1: error: ‘Codul’ does not name a type 70 | Codul tău încearcă să șteargă nodul cu valoarea A și nodul cu valoarea B dintr-o listă dublu înlănțuită, dar are câteva bug-uri serioase care pot produce memory leaks sau acces invalid la memorie. | ^~~~~ ldistergeab.cpp:72:35: error: ‘nu’ does not name a type 72 | 1. Problema principală: delete z; nu șterge nimic | ^~ ldistergeab.cpp:76:1: error: ‘z’ does not name a type 76 | z = nullptr; | ^ ldistergeab.cpp:77:1: error: expected unqualified-id before ‘delete’ 77 | delete z; | ^~~~~~ ldistergeab.cpp:78:5: error: found ‘:’ in nested-name-specifier, expected ‘::’ 78 | Aici: | ^ | :: ldistergeab.cpp:78:1: error: ‘Aici’ does not name a type 78 | Aici: | ^~~~ ldistergeab.cpp:80:8: error: ‘→’ does not name a type 80 | z = p; → z pointează la nod. | ^ ldistergeab.cpp:82:14: error: ‘→’ does not name a type 82 | z = nullptr; → pierzi adresa nodului. | ^ ldistergeab.cpp:84:11: error: ‘→’ does not name a type 84 | delete z; → faci delete nullptr, care nu face nimic. | ^ ldistergeab.cpp:91:1: error: expected unqualified-id before ‘delete’ 91 | delete z; | ^~~~~~ ldistergeab.cpp:92:1: error: ‘fără’ does not name a type 92 | fără z = nullptr înainte. | ^~~~ ldistergeab.cpp:98:1: error: ‘dar’ does not name a type 98 | dar ultim rămâne vechea adresă. | ^~~ ldistergeab.cpp:103:1: error: ‘ultim’ does not name a type 103 | ultim->urm = nullptr; | ^~~~~ ldistergeab.cpp:104:1: error: expected unqualified-id before numeric constant 104 | 3. La ștergerea primului element, posibil crash | ^~ ldistergeab.cpp:108:1: error: ‘prim’ does not name a type 108 | prim->ant = nullptr; | ^~~~ ldistergeab.cpp:109:1: error: ‘Dacă’ does not name a type 109 | Dacă lista are un singur element, p->urm este nullptr, deci: | ^~~~ ldistergeab.cpp:117:1: error: expected unqualified-id before ‘if’ 117 | if(prim) | ^~ ldistergeab.cpp:119:1: error: expected unqualified-id before ‘else’ 119 | else | ^~~~ ldistergeab.cpp:121:1: error: expected unqualified-id before numeric constant 121 | 4. La ștergerea ultimului element, aceeași problemă | ^~ ldistergeab.cpp:125:1: error: ‘dar’ does not name a type 125 | dar p->ant este nullptr. | ^~~ ldistergeab.cpp:168:9: error: found ‘:’ in nested-name-specifier, expected ‘::’ 168 | Avantaje: | ^ | :: ldistergeab.cpp:168:1: error: ‘Avantaje’ does not name a type 168 | Avantaje: | ^~~~~~~~ ldistergeab.cpp:230:1: error: ‘E’ does not name a type 230 | E mai bine decât versiunea anterioară, dar încă are câteva bug-uri importante. | ^ ldistergeab.cpp:239:1: error: ‘ai’ does not name a type 239 | ai actualizat doar legătura înainte (urm), dar nu și cea înapoi (ant). | ^~ ldistergeab.cpp:245:1: error: ‘Altfel’ does not name a type 245 | Altfel lista se strică. | ^~~~~~ ldistergeab.cpp:251:1: error: ‘prim’ does not name a type 251 | prim->ant = nullptr; | ^~~~ ldistergeab.cpp:252:1: error: ‘Dacă’ does not name a type 252 | Dacă p->urm == nullptr, faci dereferențiere de nullptr. | ^~~~ ldistergeab.cpp:258:1: error: expected unqualified-id before ‘if’ 258 | if(prim) | ^~ ldistergeab.cpp:260:1: error: expected unqualified-id before ‘else’ 260 | else | ^~~~ ldistergeab.cpp:262:1: error: expected unqualified-id before numeric constant 262 | 3. Crash la ștergerea lui B dacă lista are un singur element | ^~ ldistergeab.cpp:266:1: error: ‘ultim’ does not name a type 266 | ultim = p->ant; | ^~~~~ ldistergeab.cpp:267:1: error: ‘Dacă’ does not name a type 267 | Dacă p->ant == nullptr, crash. | ^~~~ ldistergeab.cpp:316:1: error: ‘Observă’ does not name a type 316 | Observă că exact aceeași logică merge pentru: | ^~~~~~~ ldistergeab.cpp:339:1: error: expected unqualified-id before ‘else’ 339 | else | ^~~~ ldistergeab.cpp:344:1: error: ‘Dacă’ does not name a type 344 | Dacă A este în mijlocul listei, actualizezi doar: | ^~~~ ldistergeab.cpp:347:1: error: ‘dar’ does not name a type 347 | dar nodul din dreapta încă are: | ^~~ ldistergeab.cpp:356:1: error: ‘exact’ does not name a type 356 | exact cum ai făcut la B. | ^~~~~ ldistergeab.cpp:402:1: error: ‘Acum’ does not name a type 402 | Acum, cu ipotezele tale (≥2 elemente, A != B), funcția este corectă. | ^~~~
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema LdiStergeAB face parte din a doua categorie. Pentru aceste probleme se folosește un program suport, furnizat de propunătorul problemei. 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ă.