<< Discussione precedente | Discussione successiva >> |
Aiutino programma dev-pascal. |
Autore | Messaggio |
babacaio |
| ||
Utente registrato #41747 Registrato il: sab 29 mar 2014 - 14:54Messaggi: 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 |