Pe scurt
Interfața consolă schimbă date prin text: programul citește de la intrarea standard și scrie la ieșirea standard. Într-o problemă de evaluare automată, formatul este parte a contractului: dacă se cer două numere separate prin spațiu, un mesaj suplimentar precum „Rezultatul este” poate face ieșirea neconformă.
În detaliu
Interfața consolă schimbă date prin text: programul citește de la intrarea standard și scrie la ieșirea standard. În Python, input() citește o linie întreagă ca text; conversia la număr se face cu int(). În C++, cin >> sare peste spațiile albe dintre valori și citește valori de tipul variabilei. Mesajele de cerere a datelor ajută la folosirea interactivă, dar la problemele cu intrare și ieșire precise (cum sunt cele de la evaluarea automată) formatul face parte din contract: se afișează numai rezultatul cerut, în ordinea și cu separatorii ceruți. Un text suplimentar, un spațiu în plus sau o linie lipsă pot face ieșirea neconformă, chiar dacă valoarea numerică este corectă.
Exemplul 1 — suma a două numere.
a, b = map(int, input().split())
print(a + b)
Pentru intrarea 3 5, ieșirea este 8. input().split() împarte linia în două texte, iar map(int, ...) le transformă în numere. Versiunea C++ citește cu cin >> a >> b și scrie cu cout << a + b, iar valorile pot fi separate prin spațiu sau prin sfârșit de linie, pentru că spațiile albe delimitează valorile.
Exemplul 2 — format cu mai multe linii și mai multe valori. Problema: prima linie conține , a doua conține numere; se cer suma și maximul, separate printr-un spațiu, pe o singură linie.
n = int(input())
v = list(map(int, input().split()))
print(sum(v), max(v))
Pentru intrarea 3 pe prima linie și 4 9 2 pe a doua, ieșirea este 15 9. Funcția print pune implicit un spațiu între argumente și încheie linia. Varianta print("Suma =", sum(v), "Maxim =", max(v)) ar produce Suma = 15 Maxim = 9, care are aceleași valori, dar nu respectă formatul cerut. Pentru a afișa fiecare număr pe linia lui, s-ar folosi print(sum(v)) urmat de print(max(v)).
Exemplul 3 — varianta C++ a aceleiași probleme.
#include <iostream>
using namespace std;
int main() {
int n, x, s = 0, mx = 0;
cin >> n;
for (int i = 0; i < n; ++i) {
cin >> x;
s += x;
if (i == 0 || x > mx) mx = x;
}
cout << s << ' ' << mx << '\n';
}
Pentru aceeași intrare, programul afișează 15 9. Valoarea mx se inițializează cu primul element (i == 0), nu cu 0, ca rezultatul să fie corect și pentru numere negative. Caracterul '\n' încheie linia și nu schimbă valoarea numerică afișată.
Exemplul 4 — citirea până la sfârșitul intrării. Uneori enunțul nu precizează câte numere urmează. În C++, expresia cin >> x are valoare adevărată cât timp citirea reușește și fals la sfârșitul intrării sau când textul nu poate fi convertit în număr:
#include <iostream>
using namespace std;
int main() {
int x, poz = 0, total = 0;
while (cin >> x) {
++total;
if (x > 0) ++poz;
}
cout << poz << ' ' << total << '\n';
}
Pentru intrarea 5 -3 0 8 2 valorile citite sunt 5, −3, 0, 8 și 2, deci total ajunge la 5, iar poz la 3 (numerele 5, 8 și 2); se afișează 3 5. Zero nu este pozitiv, de aceea nu se numără. Caz-limită: pentru o intrare goală, condiția este falsă de la început și se afișează 0 0.
Exemplul 5 — afișarea unui număr real cu două zecimale. Se citesc trei note și se cere media cu exact două zecimale. Pentru notele 7, 8 și 8, suma este 23, iar media este :
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int a, b, c;
cin >> a >> b >> c;
cout << fixed << setprecision(2) << (a + b + c) / 3.0 << '\n';
}
Se afișează 7.67. Manipulatorul fixed cere număr fix de zecimale, iar setprecision(2) stabilește că sunt două; valoarea se rotunjește, nu se taie. Fără fixed, setprecision(2) limitează numărul total de cifre semnificative, iar afișarea ar fi 7.7. Împărțirea la 3.0, nu la 3, păstrează partea zecimală, altfel suma întreagă 23 s-ar împărți la 3 și s-ar obține 7.
Greșeli frecvente
- Greșit: orice text suplimentar la ieșire este acceptat de evaluator.Corect: respectă formatul cerut.
- Greșit:
cin >> a >> bcere obligatoriu două linii separate.Corect: spațiile albe delimitează valorile. - Greșit:
'\n'schimbă valoarea numerică afișată.Corect: doar încheie linia.
Testează-te pe această lecție
Lecția o citești aici, fără cont. Testele pe lecții și capitole sunt în cont, cu grile originale Didaxis și explicația fiecăreia: gratuit 10 grile pe zi, fără limită cu Premium, 49 de lei pe lună pentru fiecare copil.
Înainte și după
Surse și referințe
Redactare proprie, conform programei:
- OMEC 6930/2025, MO 4 bis/2026, Informatică CS, p. 1632–1633 și 1653–1654; OMEC 4370/2026, anexa 8, p. 155–156; rocnee.eu
- OMEC 4370/2026, anexa 8, Informatică IX intensiv, p. 155–156
- OMEC 6930/2025, MO 4 bis/2026, Informatică CS, p. 1632–1633; rocnee.eu
- OMEC 6930/2025, anexa 66, Informatică IX CS militar, Monitorul Oficial nr. 4 bis/8.01.2026, pp. 2563–2578; cdn.edupedu.ro; centralizator oficial actualizat prin OMEC 3224/2026, legislatie.just.ro
- OMEC 6930/2025, MO 4 bis/2026, Informatică CS, p. 1653–1654; rocnee.eu
Documente consultate
- OMEC 6930/2025, Informatică IX, MO 4 bis/2026, p. 1632–1633 și 1653–1654; OMEC 4370/2026, anexa 8, p. 155–156
- Programa școlară de informatică, clasa a X-a (OMECI 5099/2009, anexa 5), CNCE; rocnee.eu
- Programa de bacalaureat la informatică, matematică-informatică (anexa 2 la OMECTS 4800/2010), Ministerul Educației; edu.ro
- Subiectele și baremele Bacalaureatului 2026; subiecte2026.edu.ro
Desene: Redactare proprie (desen original), conform Programa școlară de informatică, clasa a X-a (OMECI 5099/2009, anexa 5), CNCE; rocnee.eu
