Problema cu fișiere text este cel mai scump item al testului, între 12 și 16 puncte, și se punctează pe pași, nu pe rezultat. Aici ai operațiile cu fișiere în Pascal și C++ și ordinea în care se adună punctele.
reset deschide un fișier care există deja, pentru citire. rewrite creează fișierul de ieșire, iar dacă el există, îi șterge conținutul. Închiderea cu close este obligatorie la scriere: fără ea, ultimele date pot rămâne nescrise.
Cum arată datele în teste Fișierul de intrare are, aproape întotdeauna, aceeași formă: pe prima linie un număr întreg n, apoi n linii sau n valori. De aici și ordinea din program:
1)deschizi fișierul de intrare
2)citești n de pe prima linie
3)repeți de n ori citirea unei linii sau a unei perechi de valori
4)calculezi
5)scrii rezultatul în fișierul de ieșire, în formatul cerut
6)închizi ambele fișiere
readln trece la linia următoare după citire, deci se folosește când fiecare valoare este pe rândul ei; read lasă cursorul pe același rând și se folosește când pe o linie sunt mai multe valori.
Formatul ieșirii Citește cerința până la capăt: „două numere separate prin spațiu” sau „câte o linie pentru fiecare elev” sunt condiții punctate separat. În Pascal spațiul se scrie explicit, writeln(f, k, ' ', c), iar trecerea la rând nou se face cu writeln, nu cu write.
Unde sunt punctele La itemul de 16 puncte al profilului real, punctele stau astfel: 1 pentru declarații, 1 pentru antetul funcției cerute, 1 pentru operațiile cu fișierul, 1 pentru citirea lui n, 1 pentru instrucțiunea repetitivă, 1 pentru citirea datelor, 1 pentru apelul funcției, iar restul pentru pașii algoritmului și pentru scrierea corectă în fișier, unde până și spațiul dintre valori are punctul lui. De aceea un program neterminat, dar cu fișiere deschise corect și cu antetul funcției scris, adună puncte reale.
Tabloul Când rezultatul cere toate datele deodată, le păstrezi într-un tablou: var c : array[1..50] of integer; în Pascal, int c[51]; în C++. Dimensiunea se ia din limita superioară dată în enunț, de exemplu n≤50.
Structura completă, în Pascal
assign(fin, 'date.in'); reset(fin);
assign(fout, 'date.out'); rewrite(fout);
readln(fin, n);
for i := 1 to n do readln(fin, a[i]);
writeln(fout, rezultat);
close(fin); close(fout);
The rest of the lesson is in the subscription
The real ANCE items where the topic appears, the step-by-step solved example, the typical mistakes and the 7 check questions open with the subscription. “What you must know” stays free.
Source of the tests: the National Agency for Curriculum and Assessment, ance.gov.md. Nota10 is not affiliated with MEC or ANCE. Automatic grading is an estimate, not an official grade.