02/08/06 17:43
thedifferent
Salve a tutti
Devo svolgere un programma pascal che mi permetta di inserire,eliminare e stampare la lista di vari libri dati da tastiera.
Per ogni libro deve essere inoltre inserito:
-il titolo
-l'autore
-la casa editrice
-il prezzo
...che devono essere poi stampate.
Fino ad ora sono riuscito a realizzare solo un programma che aggiunge,elimina e stampa solo i libri a cui però riesco a dare solamente il titolo.Se provo a inserire le altre caratteristiche il programma mi restituisce o caratteri incomprensibili o inverte a caso l'ordine delle caratteristiche(es.sotto la voce titolo viene inserito il prezzo e così via).
Ecco il programma che aggiunge,elimina e stampa libri provvisti solo di titolo
Come faccio a far visualizzare anche le altre voci?(autore,casa e prezzo)
Spero possiate aiutarmi
Devo svolgere un programma pascal che mi permetta di inserire,eliminare e stampare la lista di vari libri dati da tastiera.
Per ogni libro deve essere inoltre inserito:
-il titolo
-l'autore
-la casa editrice
-il prezzo
...che devono essere poi stampate.
Fino ad ora sono riuscito a realizzare solo un programma che aggiunge,elimina e stampa solo i libri a cui però riesco a dare solamente il titolo.Se provo a inserire le altre caratteristiche il programma mi restituisce o caratteri incomprensibili o inverte a caso l'ordine delle caratteristiche(es.sotto la voce titolo viene inserito il prezzo e così via).
Ecco il programma che aggiunge,elimina e stampa libri provvisti solo di titolo
program libreria; uses crt; type dati=string; pnodi=^nodi; nodi=record dato,dato2: dati; pros: pnodi end; var primo,secondo:pnodi; scelta:char; finito:boolean; procedure init; begin primo:=nil; end; function listavuota:boolean; begin listavuota:=primo=nil end; procedure creanuovo(var punt:pnodi;info:dati); begin new(punt); punt^.dato:=info; punt^.pros:=nil end; procedure inserisci; var nuovo,temp,precedente:pnodi; datoinput,datoinput2:dati; begin write('Inserisci il titolo del libro: '); readln(datoinput); creanuovo(nuovo,datoinput); if listavuota then primo:=nuovo else if primo^.dato>nuovo^.dato then begin temp:=primo; primo:=nuovo; primo^.pros:=temp end else begin temp:=primo; while (temp<>nil)and(nuovo^.dato>temp^.dato) do begin precedente:=temp; temp:=temp^.pros end; nuovo^.pros := temp; precedente^.pros:=nuovo end; end; procedure elimina; var temp,precedente:pnodi; datoinput:dati; trovato:boolean; begin write('Inserisci il nome del libro da cancellare: '); readln(datoinput); if listavuota then writeln('Non Š possibile cancellare alcun libro in quanto la lista Š vuota') else begin trovato:=false; precedente:=nil; temp:=primo; if primo^.dato=datoinput then begin primo:=primo^.pros; dispose(temp); trovato:=true end else while(not trovato)and(temp<>nil)do if temp^.dato=datoinput then begin trovato:=true; precedente^.pros:=temp^.pros; dispose(temp) end else begin precedente:=temp; temp:=temp^.pros end; if not trovato then begin writeln('Il libro inserito non esiste'); readln end end end; procedure stampa; var temp:pnodi; begin clrscr; writeln; writeln('-- ELENCO COMPLETO --'); writeln; temp:=primo; while temp<>nil do begin writeln('TITOLO: ',temp^.dato); temp:=temp^.pros; end; writeln('-------------------------'); readln end; begin init; finito:=false; repeat clrscr; gotoxy(1,50); textbackground(blue); textcolor(yellow);write(' Premi 0 '); textcolor(white);write('per uscire'); gotoxy(1,1); writeln; writeln; writeln; writeln; writeln(' ----------BENVENUTO NELL''ARCHIVIO LIBRI----------'); writeln; writeln(' 1: Inserisci un libro'); writeln(' 2: Cancella un libro'); writeln(' 3: Visualizza la lista completa dei libri'); writeln; repeat write('Scelta: '); readln(scelta) until(scelta>='0')and(scelta<='3'); case scelta of '0':finito:=true; '1':inserisci; '2':elimina; '3':stampa; end; until finito end.
Come faccio a far visualizzare anche le altre voci?(autore,casa e prezzo)
Spero possiate aiutarmi
Ultima modifica effettuata da thedifferent 02/08/06 17:53
aaa