Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Scusami se ti do un algoritmo sbagliato ma ho letto frettolosamente il papiro che avete già scritto.
Per ricavare da un file:
CLASSE ISCRITTI PROMOSSI BOCCIATI
1^E 20 10 10
3^B 25 22 3
4^F 16 14 2
5^C 12 12 0
2^G 15 10 5
si può assegnarlo ad un "text":
var
T: text;
S : string;
....
Assign(F, <nomefile>
saltare la prima stringa:
reset(F);
readln(F, S);
e usare questa procedure
type
classe = record
nome : string[3];
iscritti, promossi, bocciati : byte;
end;
classi = array of classe;
function leggi : classi;
var I : word;
begin
setlength(leggi, 1);
while not(eof(T) do begin
setlength(leggi, (high(leggi)+2)); //ingrandisce l'array
readln(F, S);
with leggi[high(leggi)] do begin //considera l'ultima posizione in leggi
for I := 1 to 3 do nome := concat(nome,S);
repeat inc(i) until S<>#32; //salta gli spazi
iscritti := (char(S)-48)*10 + (char(S[i+1])-48); //converte i due caratteri in numero
inc(i); repeat inc(i) until S<>#32; //salta gli spazi
promossi := (char(S)-48)*10 + (char(S[i+1])-48); //converte i due caratteri in numero
inc(i); repeat inc(i) until S<>#32; //salta gli spazi
bocciati := (char(S)-48)*10 + (char(S[i+1])-48); //converte i due caratteri in numero
end;
end;
end;
Se non avesse la struttura di sopra non funzionerebbe
Esatto ho usato FreePascal e con dati di 3 cifre(x esempio) ci sarebbe un errore.
Comunque aumenta di 2 perchè high(<array dinamico> da il valore più alto dell'array es a : array[0..15] high(a)=15; ma setlenght(<array>,numero) imposta la lunghezza(il numero totale), nell'esempio sarebbe stato 16(a[0] la prima, a[1] la seconda ... a[15] la sedicesima).
setlength(array,high(array)+1);
mantiene sempre le stesse dimensioni dell'array.
setlength(array,high(array));
diminuisce di uno le dimensioni.