![Avatar](/data/images/profiles/users/default.png)
babacaio (Normal User)
Newbie
![](/data/images/stars/gray.png) ![](/data/images/stars/gray.png) ![](/data/images/stars/gray.png) ![](/data/images/stars/gray.png) ![](/data/images/stars/gray.png)
Messaggi: 1
Iscritto: 29/03/2014
|
i n pratica mi è stato assegnato un esercizio dove ci devono essere due RECORD di array, uno dove inserisco in input con codice, descrizione, scorta minima, rimanenze, totale entrate e totale uscite. Con queste poi devo creare un altro record dove c è il codice, la descrizione e la giacenza attuale (che la traccia mi dice che si calcola sommando le rimanenze iniziali e le entrate totali e sottraendo le uscite totali); le giacenze attuali vanno stampate a video solo se sono minori della scorta minima. Il problema parte e "funziona" ma la PROCEDURE CONTROLLO non funziona come dovrebbe...sapete dirmi l errore?
Program giacenze_e_scorte;
USES crt;
const
max=1500;
type
rec1=record
codice:string[30];
descrizione:string[100];
scortaminima:real;
rimanenzeiniziali:real;
totaleentrate:real;
totaleuscite:real;
end;
rec2=record
codice1:string[30];
descrizione1:string[100];
giacenzaattuale:real;
end;
vet1=array[1..max]of rec1;
vet2=array[1..max]of rec2;
var
tabella1:vet1;
tabella2:vet2;
I,N,I1,scelta,J:integer;
PROCEDURE CARICA;
var
tmptabella1:rec1;
begin
textcolor(black);
clrscr;
writeln('*** Dimensionamento e caricamento dati ***');
writeln;
write('Inserisci il numero totale di prodotti ---> ');
readln(N);
writeln;
while (N<1) or (N>max) do
begin
writeln;
writeln('Valore non valido, inserisci nuovo valore');
readln(N);
end;
begin
For I:=1 to N do
begin
writeln;
writeln;
writeln('Inserisci il codice del ',I,'^ prodotto');
readln(tabella1.codice);
writeln('Inserisci il nome del ',I,'^ prodotto');
readln(tabella1.descrizione);
writeln('Inserisci la scorta minima del ',I,'^ prodotto');
readln(tabella1.scortaminima);
writeln('Inserisci le rimanenze iniziali del ',I,'^ prodotto');
readln(tabella1.rimanenzeiniziali);
writeln('Inserisci le entrate totali del ',I,'^ prodotto');
readln(tabella1.totaleentrate);
writeln('Inserisci le uscite totali del ',I,'^ prodotto');
readln(tabella1.totaleuscite);
end;
end;
begin
//ordinamento per codice
For I:=1 to N-1 do
For J:=I+1 to N do
begin
If (tabella1.codice>tabella1[j].codice) then
begin
tmptabella1:=tabella1;
tabella1:=tabella1[j];
tabella1[j]:=tmptabella1;
end;
end;
end;
end;
Procedure visualizza1;
begin
textcolor(black);
clrscr;
writeln(' *** Visualizzazione dei dati ***');
writeln;
writeln;
writeln('Codice Descrizione S. Minima R.Iniziali Tot.Entrate Tot.Uscite');
For I:=1 to N do
begin
gotoxy(1, I+5);
write(tabella1.codice);
gotoxy(10, I+5);
write(tabella1.descrizione);
gotoxy(24, I+5);
write(tabella1.scortaminima:0:2);
gotoxy(36, I+5);
write(tabella1.rimanenzeiniziali:0:2);
gotoxy(49, I+5);
write(tabella1.totaleentrate:0:2);
gotoxy(62, I+5);
write(tabella1.totaleuscite:0:2);
writeln;
end;
writeln;
writeln;
writeln;
writeln('Premi invio per continuare');
writeln;
readln;
end;
Procedure controllo;
begin
clrscr;
For I:=1 to N do
tabella2.giacenzaattuale:=tabella1.rimanenzeiniziali+tabella1.totaleentrate-tabella1.totaleuscite;
if (tabella2.giacenzaattuale<tabella1.scortaminima) then
begin
tabella2.codice1:=tabella1.codice;
tabella2.descrizione1:=tabella1.descrizione;
tabella2.giacenzaattuale:=tabella2.giacenzaattuale;
end;
end;
Procedure visualizza2;
begin
textcolor(black);
clrscr;
writeln(' *** Visualizzazione delle giacenze attuali ***');
writeln;
writeln;
writeln('Codice Descrizione Giacenza Attuale');
For I:=1 to N do
begin
gotoxy(1, I+5);
write(tabella2.codice1);
gotoxy(13, I+5);
write(tabella2.descrizione1);
gotoxy(30, I+5);
write(tabella2.giacenzaattuale:0:2);
end;
writeln;
writeln;
readln;
end;
BEGIN //PROGRAMMA PRINCIPALE
begin
textbackground(11);
clrscr;
repeat;
TextColor(Red);
writeln;
writeln;
writeln('***** BENVENUTI *****');
writeln;
writeln;
writeln;
writeln;
TextColor(Black+blink);
writeln('*** 1 ---> Dimensionamento e Caricamento Dei Dati ***');
writeln;
writeln;
writeln('*** 2 ---> Visualizzazione dati acquisiti ***');
writeln;
writeln;
writeln('*** 3 ---> Ordinamento Giacenze Attuali ***');
writeln;
writeln;
writeln('*** 4 ---> Visualizzazione Giacenze attuali ***');
writeln;
writeln;
writeln('*** 5 ---> Fine ***');
writeln;
writeln;
writeln;
begin
TextColor(Black);
write('Inserite il codice dell'' operazione che volete svolgere ----> ');
readln(scelta);
sound(440);
delay(1000);
nosound;
end;
Case scelta of
1:carica;
2:visualizza1;
3:controllo;
4:visualizza2;
5:;
end;
clrscr;
until scelta>4;
end;
end.
|