Programul meu este corect, dar nu obțin 100 de puncte

Dacă ai trimis soluția ta pe InfoAs și nu ai obținut 100 puncte, chiar dacă ești convins că programul tău este corect, iată câteva motive posibile pentru care s-ar putea întâmpla acest lucru și ce poți face pentru a remedia problema:

Verifică cerința problemei

Asigură-te că ai citit cu atenție cerința problemei. Chiar dacă programul tău pare corect, este posibil să fi omis un detaliu important sau să nu fi respectat toate specificațiile. Verifică următoarele:

  • Formatul de intrare și ieșire: Asigură-te că datele de intrare și ieșire sunt în formatul cerut (în fișier/pe tastatură, după cum este specificat în cerință și dacă respecți ordinea de afișare). Ți se specifică exact ce trebuie să afișezi, iar nerespectarea acestor detalii poate face ca platforma să creadă că ai rezolvat greșit problema.
  • Constrângerile problemei: Verifică dacă programul tău respectă toate constrângerile de timp și memorie specificate. Dacă nu, atunci este posibil să obții o eroare care împiedică luarea de puncte. Găsești pentru fiecare tip de mesaj câte un scurt articol în Centrul de ajutor ca să te ajute să remediezi problema.

Exemplu de eroare frecventă

Să presupunem că avem o problemă care citește două numere de la tastatură și cere afișarea sumei lor pe ecran (și atât). Un exemplu de mesaj în cerință ar arăta așa:

  • Date de intrare: Programul va citi de la tastatură cele două numere naturale, a și b, separate printr-un spațiu.
  • Date de ieșire: Programul va afișa pe ecran suma celor două numere.

Următoarea soluție, deși în esență este corectă, afișează și alte lucruri, fapt pe care îl poți depista când încarci soluția:

#include <iostream>

using namespace std;

int main()
{
    int a, b;
	cout << "Citeste numerele cu spatiu: ";
    cin >> a >> b;
    cout << "Suma este: " << a + b;
    return 0;
}

Dacă se citește 9 și 12, se va afișa:

Citeste numerele cu spatiu: Suma este: 21

Însă InfoAs se așteaptă să afișezi doar răspunsul simplu, fără alte mesaje:

21

Un cod corect ar fi următorul:

#include <iostream>

using namespace std;

int main()
{
    int a, b;
    cin >> a >> b;
    cout << a + b;
    return 0;
}

Verifică mesajele de eroare

Dacă ai obținut 0 puncte, este posibil ca soluția ta să fi întâmpinat erori. Verifică mesajele de eroare primite după evaluare:

  • Erori de compilare: Asigură-te că codul tău se compilează fără probleme. Erorile de compilare împiedică evaluarea corectă a soluției.
    • În acest caz, vei primi sugestii de corectare de la InfoAs AI — de pildă, ai uitat să declari o variabilă.
  • Erori de execuție: Dacă programul tău se compilează dar nu se comportă corect în timpul testării, mesajele de eroare pot oferi indicii despre ce nu a funcționat.
    • Poți consulta Centrul de ajutor pentru erori primite în acest sens.

Verifică cazul testat

Este important să te asiguri că soluția ta funcționează corect pentru toate cazurile de testare:

  • Testare cu date variate: Verifică dacă soluția ta se comportă corect cu diferite seturi de date, inclusiv cazuri limite și date speciale.
  • Comparare cu rezultate așteptate: Asigură-te că ieșirea produsă de programul tău se potrivește cu rezultatul așteptat pentru toate cazurile de testare.

Exemplu de eroare frecventă

Un alt exemplu este funcția predefinită strcpy. Funcția strcpy(destinație, sursă) se poate utiliza pentru a copia un șir de caractere de la sursă la destinație.

Poate apărea, însă, o problemă când sursa și destinația se suprapun — documentația C++ specifică faptul că această acțiune este impredictibilă.

Să zicem că vrem să ștergem primul caracter al unui șir. În CodeBlocks, dacă apelăm strcpy(s, s + 1), programul s-ar putea să meargă cum ne-am dorit, însă este o practică proastă, deoarece în majoritatea mediilor de programare (inclusiv cel utilizat de platformă), există posibilitatea ca programul să returneze o eroare.

Verifică implementarea logicii

Chiar dacă programul tău pare să rezolve problema în mod logic, este posibil să existe erori subtile:

  • Revizuiește algoritmul: Asigură-te că algoritmul tău este implementat corect și eficient.
  • Debugging: Folosește tehnici de debugging pentru a identifica posibilele probleme în codul tău.

Consultă feedback-ul oferit

Dacă InfoAs AI oferă feedback suplimentar sau sugestii, utilizează-le pentru a îmbunătăți soluția ta:

  • Sugestii de îmbunătățire: Verifică dacă ai primit sugestii de la InfoAs pentru a optimiza sau corecta soluția ta.
  • Analizează exemplele: Compară ieșirea produsă de codul tău cu exemplele oferite pentru a înțelege unde ar putea apărea discrepanțe.

Concluzie

Obținerea de 0 puncte în ciuda unui program corect poate fi frustrant, dar este important să verifici toate aspectele soluției tale, de la cerințe și mesaje de eroare, până la logica implementării și feedback-ul primit. Urmează pașii de mai sus pentru a identifica și remedia problemele, astfel încât să îți îmbunătățești soluția și să obții punctajul dorit.

Succes!

Alte articole din serie