Menù Principale

Cerca
Login
Registrati
Link
<< Discussione precedente | Discussione successiva >>   
Aiutino programma dev-pascal.

Autore Messaggio
babacaio
sab 29 mar 2014 - 15:07

online
Utente registrato #41747
Registrato il: sab 29 mar 2014 - 14:54
Messaggi: 1

in 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[i].codice);
writeln('Inserisci il nome del ',I,'^ prodotto');
readln(tabella1[i].descrizione);
writeln('Inserisci la scorta minima del ',I,'^ prodotto');
readln(tabella1[i].scortaminima);
writeln('Inserisci le rimanenze iniziali del ',I,'^ prodotto');
readln(tabella1[i].rimanenzeiniziali);
writeln('Inserisci le entrate totali del ',I,'^ prodotto');
readln(tabella1[i].totaleentrate);
writeln('Inserisci le uscite totali del ',I,'^ prodotto');
readln(tabella1[i].totaleuscite);
end;
end;
begin
//ordinamento per codice
For I:=1 to N-1 do
For J:=I+1 to N do
begin
If (tabella1[i].codice>tabella1[j].codice) then
begin
tmptabella1:=tabella1[i];
tabella1[i]:=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[i].codice);
gotoxy(10, I+5);
write(tabella1[i].descrizione);
gotoxy(24, I+5);
write(tabella1[i].scortaminima:0:2);
gotoxy(36, I+5);
write(tabella1[i].rimanenzeiniziali:0:2);
gotoxy(49, I+5);
write(tabella1[i].totaleentrate:0:2);
gotoxy(62, I+5);
write(tabella1[i].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[i].giacenzaattuale:=tabella1[i].rimanenzeiniziali+tabella1[i].totaleentrate-tabella1[i].totaleuscite;
if (tabella2[i].giacenzaattuale<tabella1[i].scortaminima) then
begin
tabella2[i].codice1:=tabella1[i].codice;
tabella2[i].descrizione1:=tabella1[i].descrizione;
tabella2[i].giacenzaattuale:=tabella2[i].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[i].codice1);
gotoxy(13, I+5);
write(tabella2[i].descrizione1);
gotoxy(30, I+5);
write(tabella2[i].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.
Torna ad inizio pagina

Moderatori: Danix, Taf, Rcs, Energy, zandet2, ZioZione, Admin, LordJim60

Salta:     Torna ad inizio pagina

RSS discussione: rss 0.92 RSS discussione: rss 2.0 RSS discussione: RDF
Powered by e107 Forum System