Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {You have a certain number of crates that weight differently, how many ships do you need to transport them all at the same time?}
- uses wincrt;
- Type Tab=array[1..100] of integer;
- Var NC,BK:integer; TPC:tab;
- Procedure remplissageTPC(var TPC:Tab;NC,BK:Integer);
- Var i:byte;
- Begin
- For i:=1 to NC do
- Repeat
- Writeln('Write down the weight of crate number ',i);
- Readln(TPC[i]);
- Until (TPC[i]>0) and (TPC[i]<BK);
- End;
- Procedure triTPC(var TPC:tab;NC:integer);
- Var verif:boolean;i:byte;x:integer;
- Begin
- Repeat
- verif:=true;
- For i:=1 to NC-1 do
- Begin
- writeln(i,' ',nc);
- if TPC[i]<TPC[i+1] then
- Begin
- x:=TPC[i];
- TPC[i]:=TPC[i+1];
- TPC[i+1]:=x;
- verif:=false;
- End;
- End;
- Until verif=true;
- End;
- Procedure Saisie(var NC,BK:integer);
- Begin
- Repeat
- Writeln('Number of crates');
- readln(NC);
- Until NC>0;
- Repeat
- Writeln('Maximal weight per boat');
- Readln(BK);
- Until BK>0;
- remplissageTPC(TPC,NC,BK);
- triTPC(TPC,NC);
- writeln('FintriTPC');
- End;
- Function Verif(TPC:tab;NC:integer):boolean;
- var i:byte;
- Begin
- i:=1;
- While (TPC[i]=0) and (i<=NC) do
- i:=i+1;
- Verif:=(i>NC);
- End;
- Procedure Affichage( NC,BK:integer;var TPC:tab);
- var i:byte; S,SP,NB:integer;
- Begin
- S:=TPC[1];
- TPC[1]:=0;
- i:=2;
- NB:=0;
- Repeat
- Repeat
- SP:=S;
- S:=S+TPC[i];
- if S<=BK then
- Begin
- TPC[i]:=0;
- i:=i+1;
- End
- else
- Begin
- S:=SP;
- i:=i+1;
- End;
- Until (S=BK) or (i>NC);
- If (S=BK) or (i>NC) then NB:=NB+1;
- S:=0;
- i:=2;
- Until Verif(TPC,NC);
- Writeln('Number of ships:', NB);
- End;
- Begin
- Saisie(NC,BK);
- Affichage(NC,BK,TPC);
- End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement