PDA

View Full Version : Aiuto! Non riesco a Risolvere questo problema di Informatica


Mariano90
16-03-2010, 17:08
Alla fine dell'anno scolastico si conoscono per le cinque classi di una scuola superiore i risultati riguardanti: iscritti,promossi,bocciati. Calcolare le percentuali di bocciati e promossi e memorizzare i risultati in un file. Avendo,poi,a disposizione un archivio contenente i risultati dell'anno precedente,stampare le differenze degli iscritti,dei promossi e dei bocciati rispetto all'anno in corso.

Il problema deve essere svolto in programmazione Pascal. Chiedo un aiuto a voi programmatori x poter risolvere insieme questo problema. Grazie ;-)

deviato
16-03-2010, 17:26
Ho fatto qualcosa di pascal ma francamente dovrei ridarmi una rinfrescatina.
Però non capisco quale sia il problema in tutto ciò, la percentuale la trovi semplicemente facendo

Numero di studenti passati o bocciati diviso numero di studenti totali moltiplicato per 100

poi per il resto sono operazioni di lettura e scrittura mi pare :confused:

Mariano90
16-03-2010, 17:46
Allora il mio problema sta proprio nella codifica. Le operazioni da fare sono semplici.... Io fino ad ora sono riuscito a dichiarare solo il record in questo modo:

program RisultatiFineAnno;
uses crt;
type
Scuola=record
Iscritti, promossi, bocciati:integer;
PercPromossi,PercBocciati:real;
end;

var f: file of tclasse; // Nome logico del file
v:tclasse; // record che userò per lettura e scrittura su file
i:integer;

Da qui in poi non so più andare avanti... =(

Tommy81
16-03-2010, 18:56
Più che difficile, è un problema lungo perchè potrebbe richiedere diverse prove prima di farlo funzionare bene.
Per prima cosa io mi concentrerei da quella che tu indichi come la fine del lavoro... ovvero il file di testo che contiene gli studenti: inizierei a scriverne uno di prova ben formattato per essere "maneggiato" agevolmente dal pascal, senza complicarsi troppo la vita:

Cognome Nome Classe Sezione

0.............13........23..27

Bianchi.....Mario.....2...A
Rossi.......Marco.....3...A
Innocenti...Giulio....4...B

Questo è uno schema di file di testo in cui hai all'inizio incolonnati i cognomi poi dal 13° carattere in poi i nomi, dal 23° carattere la classe e infine dal 27° la sezione. Nel file i puntini non ci devono essere, li ho messi solo per facilitare il conteggio dei caratteri.
Scritto questo file di testo, correttamente formattato, e salvato in c:\ la prima cosa da fare è scrivere un programma in grado di leggerlo correttamente e usarlo come database.
Ogni studente, con tutti i suoi dati, può essere memorizzato come una stringa e una variabile record:

type String40=String[40
studente= Record
Nome, Cognome, Classe, Sezione: String40;
End;
poi ci sarà una variabile per il posizionamento all'interno del file di testo che chiamiamo X e quella che individua il file che chiamiamo Elenco.
Quindi abbiamo che l'inizio del programma avrà un aspetto del tipo...

Program Esercizio;
Uses Crt;

type String40=String[40];
String20=String[20];
studente= Record
Nome, Cognome, Classe, Sezione: String40;
End;
f= File of r

Var
a:f; (* a è la variabile logica di tipo file *)
x:r; (* x elemento del file di testo *)
Elenco: String20 (*stringa che contiene il nome del file di testo *)

A questo punto bisogna aprire il file:

Begin
Elenco:='c:\nomefile.txt'; (*<- qua metti dove e come hai salvato il file di testo *)
Assign (a,Elenco);


Si continua leggendo i dati nel file:


writeln (' Cognome Nome Classe Sezione');
writeln ('----------------------------------');
while not eof(a) do
begin
read(a,X);
writeln(X.Cognome:10,' ',X.Nome:10,' ',X.Classe:5,' ',X.Sezione:5);
end;
witeln;
readln;
end.


Non ho provato questo programma, quindi va messo a punto e provato per bene. La logica va bene e ti permette di iniziare a lavorare col file.

Mariano90
16-03-2010, 21:50
Eh infatti è abbastanza lungo....Io sono andato completamente nel pallone credimi. Magari potresti postarmi come l'avresti fatto tu(completo) così capendo bene questo problema,al prossimo compito in classe sarò ben preparato(questo era l'esercizio del compito precedente,al prossimo c sarà uno simile) =S Ti ringrazio anticipatamente :)

banryu79
17-03-2010, 17:24
...
Magari potresti postarmi come l'avresti fatto tu(completo) così capendo bene questo problema,al prossimo compito in classe... [cutted]

Impossibile, è vietato dal Regolamento di questa sezione del Forum, che evidentemente non hai letto bene.
Invece, dato che hai trovato disponibilità ad aiutarti, posta i tuoi dubbi punto per punto e vedrai che sarai indirizzato verso la soluzione; ma ci devi mettere del tuo, dato che non è possibile chiedere/postare soluzioni complete ;)