Program Agenda_Multi;
uses crt, graph;
Type
Persona = Record
Nome: String[10];
Cognome: String[15];
Telefono: String[15];
End;
Const {dichiaro le costanti che verranno utilizzate}
Dim_Int = 16;
Var {dichiaro le variabili generali}
Rp: char;
c: Array [1..100] of Persona;
num, nume, Lunghezza_Agenda: integer;
voto: array[1..10] of integer;
Procedure Visualizza_Binario (vet: integer);
type
Binario = 0..1;
var
i, g: integer;
a: array[1..Dim_Int] Of Binario;
begin
if vet = 0 then
writeln(vet)
else begin
i := 1;
while vet <> 0 do begin
a[i] := vet mod 2;
vet := vet div 2;
i := i+1;
end;
for g := i+1 downto 1 do
write(a[g]);
end;
end;
Procedure binario;
begin
ClrScr;
Rp := 's';
while Rp = 's' do begin {controlla se l'utente vuole ricominciare}
TextColor(14);
Writeln('Calcolo Binario');
TextColor(15);
write('Inserisci un numero Positivo Intero: ');
readln(num);
writeln;
writeln('Calcolo in corso, attendere...');
Delay(2000);
writeln('Il numero convertito in binario Š ');
Visualizza_Binario(num);
writeln;
write('Vuoi continuare a convertire? (S/N): ');
readln(Rp);
end;
end;
Procedure Mag_Min;
var
max, min, i: integer;
Begin
ClrScr;
Rp := 's';
while Rp = 's' do begin
ClrScr;
TextColor(14);
Writeln('Ricerca del Maggiore e Minore');
TextColor(15);
write('Quanti Voti vuoi inserire? ');
readln(nume);
for i := 1 to nume do begin
write('Inserisci Voto: ');
readln(voto[i]);
end;
max := voto[i];
for i := 1 to nume do
if voto[i] > max then
max := voto[i];
min := voto[i];
for i := 1 to nume do
if voto[i] < min then
min := voto[i];
writeln;
Writeln('Calcolo in corso, attendere...');
Delay(2000);
writeln('Il maggiore Š ',max);
writeln('Il minore Š ',min);
Writeln;
write('Vuoi continuare la ricerca? (S/N): ');
readln(Rp);
End;
End;
Procedure Med_vot;
var
i: integer;
media: real;
Begin
ClrScr;
Rp := 's';
while Rp = 's' do begin
ClrScr;
TextColor(14);
Writeln('Calcolo della Media');
TextColor(15);
write('Quanti Voti vuoi inserire? ');
readln(nume);
for i := 1 to nume do begin
write('Inserisci Voto: ');
readln(voto[i]);
media := media+voto[i];
end;
media := media/nume;
writeln;
writeln('Calcolo in corso, attendere...');
Delay(2000);
writeln('La media Š ',media:5:2);
write('Vuoi continuare a calcolare? (S/N): ');
readln(Rp);
end;
end;
procedure Voti;
var
opz: integer;
Begin
ClrScr;
TextColor(14);
GotoXY(25,6); Write('Gestione Voti');
TextColor(15);
GotoXY(26,8); Write('1. Ricercare il Maggiore e Minore'); {con GotoXY, sposto il testo}
GotoXY(26,9); Write('2. Calcolare la Media');
GotoXY(26,10); Write('0. Per tornare al Menu Principale');
GotoXY(27,12); Write('Scegliere una opzione: ');
readln(opz);
case opz of
1: Mag_Min;
2: Med_Vot;
End;
End;
Procedure Aggiungi_Agenda;
Var
i, Num: integer;
Begin
ClrScr;
Repeat
Writeln;
TextColor(14);
Writeln('Aggiunta Persone');
TextColor(15);
Writeln;
Write('Quante persone vuoi aggiungere all''agenda? (1/100): ');
Readln(Num);
Until Num >= 1;
For i := Lunghezza_Agenda+1 to Lunghezza_Agenda+Num Do Begin
With c[i] Do Begin
Writeln;
Write('Inserisci il Nome: ');
readln(Nome);
Writeln;
Write('Inserisci il Cognome: ');
Readln(Cognome);
Writeln;
Write('Inserisci il Numero di Telefono: ');
Readln(Telefono);
End;
End;
Lunghezza_Agenda := Lunghezza_Agenda+Num;
End;
Procedure Visualizza_Agenda;
Var
i: integer;
Begin
ClrScr;
Writeln;
TextColor(14);
Writeln('Agenda Telefonica');
Writeln;
TextColor(15);
For i := 1 To Lunghezza_Agenda Do Begin
Writeln('Nome: ',c[i].Nome);
Writeln('Cognome: ',c[i].Cognome);
Writeln('Telefono: ',c[i].Telefono);
Writeln;
Write('Premere Invio per continuare...');
Readln;
End;
End;
Procedure Add_Calc;
Var
A, B: integer;
Begin
Rp := 's';
while Rp = 's' do begin
Writeln;
TextColor(14);
Writeln('Risultato');
TextColor(15);
Writeln;
Write('Inserire il 1ø Numero: ');
Readln(A);
Write('Inserire il 2ø Numero: ');
Readln(B);
Writeln;
Writeln('Attendere, calcolo in corso...');
Delay(2000);
Writeln('Il risultato dell''addizione Š ',A+B);
Write('Vuoi eseguire un''altra addizione? (S/N): ');
Readln(Rp)
End;
End;
Procedure Sott_Calc;
Var
A, B: integer;
Begin
Rp := 's';
while Rp = 's' do begin
Writeln;
TextColor(14);
Writeln('Risultato');
TextColor(15);
Writeln;
Write('Inserire il 1ø Numero: ');
Readln(A);
Write('Inserire il 2ø Numero: ');
Readln(B);
Writeln;
Writeln('Attendere, calcolo in corso...');
Delay(2000);
Writeln('Il risultato della sottrazione Š ',A-B);
Write('Vuoi eseguire un''altra sottrazione? (S/N): ');
Readln(Rp)
End;
End;
Procedure Div_Calc;
Var
A, B: integer;
Begin
Rp := 's';
while Rp = 's' do begin
Writeln;
TextColor(14);
Writeln('Risultato');
TextColor(15);
Writeln;
Write('Inserire il 1ø Numero: ');
Readln(A);
Write('Inserire il 2ø Numero: ');
Readln(B);
Writeln;
Writeln('Attendere, calcolo in corso...');
Delay(2000);
Writeln('Il risultato della divisione Š ',A/B:5:2);
Write('Vuoi eseguire un''altra divisione? (S/N): ');
Readln(Rp)
End;
End;
Procedure Molt_Calc;
Var
A, B: integer;
Begin
Rp := 's';
while Rp = 's' do begin
Writeln;
TextColor(14);
Writeln('Risultato');
TextColor(15);
Writeln;
Write('Inserire il 1ø Numero: ');
Readln(A);
Write('Inserire il 2ø Numero: ');
Readln(B);
Writeln;
Writeln('Attendere, calcolo in corso...');
Delay(2000);
Writeln('Il risultato della moltiplicazione Š ',A*B);
Write('Vuoi eseguire un''altra moltiplicazione? (S/N): ');
Readln(Rp)
End;
End;
Procedure Uso_Calcolatrice;
Var
opz, i, A, B, C, D: integer;
Begin
ClrScr;
Writeln;
TextColor(14);
GotoXY(25,4); Write('Calcolatrice');
TextColor(15);
writeln;
GotoXY(26,6); Write('1. Addizione');
GotoXY(26,7); Write('2. Sottrazione');
GotoXY(26,8); Write('3. Divisione');
GotoXY(26,9); Write('4. Moltiplicazione');
GotoXy(26,10); Write('0. Per tornare al Menu');
GotoXY(26,12); Write('Selezionare una Opzione: ');
Readln(opz);
Case opz Of {assegna una funzione al tasto digitato}
1: Add_Calc; {richiamo una procedura}
2: Sott_Calc;
3: Div_Calc;
4: Molt_Calc;
End;
End;
Procedure Menu; {visualizza il menu}
Var
Scelta: integer;
Begin
Lunghezza_Agenda := 0;
Scelta := -1;
While Scelta <> 0 Do Begin
ClrScr;
TextColor(14);
Writeln;
GotoXY(25,4); Write('Agenda Telefonica / Calcolatrice');
TextColor(15);
GotoXY(26,6); Write('1. Aggiungere Persone all''Agenda');
GotoXY(26,7); Write('2. Visualizzare L''elenco dell''Agenda');
GotoXY(26,8); Write('3. Utilizzare la Calcolatrice');
GotoXY(26,9); Write('4. Gestione Voti');
GotoXY(26,10); Write('5. Convetitore Dati Binari');
GotoXY(26,11); Write('0. Per Terminare Sessione di lavoro');
GotoXY(30,13); Write('Scegliere una opzione: ');
Readln(Scelta);
ClrScr;
Case Scelta Of
1: Aggiungi_Agenda;
2: Visualizza_Agenda;
3: Uso_Calcolatrice;
4: voti;
5: binario;
End;
End;
End;
Begin {inizio il programma vero e proprio}
ClrScr;
TextColor(10);
GotoXY(26,7); writeln('PROGRAM DESIGNED BY Morpheus');
Delay(2500);
ClrScr;
Menu;
End.