Pascal:ruksak

Programovacie jazyky, rady, poradňa...
iWin
Light Professional
Light Professional
Používateľov profilový obrázok
Príspevky: 958
Registrovaný: 04 aug 2010, 14:30
Bydlisko: NR

Pascal:ruksak

Príspevok od používateľa iWin »

Takže v škole sme robili tento program, ktorý je pomerne primitívny. Zadanie bolo také že ruksak mal stálu hodnotu 50 a mal vypisovať aktuálnu hmotnosť a počet vecí
keďže som sa nudil tak som to nákodil znova s menšími vylepšeniami. Program plne funguje akoby mal ale stále podla mňa nie na 100%.

Aby ste to nemuseli púštať tak sa zamerajte na tú časť kde skončí cyklus a ide podmienka.... teda ak je homotnosť vecí vyššia ako nosnosť batohu.

Funguje to správne vypíše všetko ako má no vypíše akoby aj "úspech a to že ruksak dosiahol svoju nosnosť a počet vecí v ňom. Problém je v tom, že ak nastane to, že bude hmotnosť > nosnosť vypíše oboje. Skúšal som to rôzne zamedziť no ani jedno z toho nebolo moc dobré riešenie, tak sa obraciam na vás ako vlastne zariadiť to aby pri situácii hmotnosť > nosnosť program zastavil a po stlačení enteru sa "vypol"?

Kód: Vybrať všetko

program ruksak;

uses crt;

var
vaha_ruksak:real;
vaha_veci_one:real;
vaha_veci_2:real;
pocet_veci:integer;
begin
write('Zadaj nosnost ruksaku: ');
readln(vaha_ruksak);
vaha_veci_one:= 0;
pocet_veci:= 0;
repeat
write('Zadaj vahu veci: ');
writeln;
readln(vaha_veci_2);
vaha_veci_one:= vaha_veci_one + vaha_veci_2;
pocet_veci:= pocet_veci + 1;
write('Aktualna hmotnost veci je: ',vaha_veci_one:3:2);
writeln;
writeln;
write('a pocet veci je: ',pocet_veci);
writeln;
writeln;
until vaha_ruksak <= vaha_veci_one;
clrscr;
if vaha_veci_one > vaha_ruksak then
begin
textcolor(red);
write('!!!!!!!!Hmotnost veci v ruksaku prevysuje jeho nosnost!!!!!!!!');
writeln;
writeln;
write('!!!!!!!!Nosnost ruksaku: ', vaha_ruksak:3:2,' !!!!!!!!');
writeln;
writeln;
write('!!!!!!!!Hmotnost vasich veci: ', vaha_veci_one:3:2, '!!!!!!!!');
writeln;
writeln;
end;
textcolor(green);
writeln('Ruksak dosiahol svoju nosnot ',vaha_ruksak:3:2,' . A pocet veci v nom je ', pocet_veci);
readln;
end.
edit pre jednoduchšie hladanie :

Kód: Vybrať všetko

if vaha_veci_one > vaha_ruksak then
begin
textcolor(red);
write('!!!!!!!!Hmotnost veci v ruksaku prevysuje jeho nosnost!!!!!!!!');
writeln;
writeln;
write('!!!!!!!!Nosnost ruksaku: ', vaha_ruksak:3:2,' !!!!!!!!');
writeln;
writeln;
write('!!!!!!!!Hmotnost vasich veci: ', vaha_veci_one:3:2, '!!!!!!!!');
writeln;
writeln;
end;
textcolor(green);
writeln('Ruksak dosiahol svoju nosnot ',vaha_ruksak:3:2,' . A pocet veci v nom je ', pocet_veci);
readln;
end.
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Pascal:ruksak

Príspevok od používateľa audiotrack »

iWin napísal:...tak sa zamerajte na tú časť kde skončí cyklus a ide podmienka....
ako sorry, ale to sa mi fakt v tom bordeli nechce hľadať kde končí cyklus a začína podmienka. Nauč sa používať tabulátor a potom sa môžme začať baviť o programovaní.
uplink
VIP
VIP
Používateľov profilový obrázok
Príspevky: 15220
Registrovaný: 22 máj 2005, 23:01
Bydlisko: Hnúšťa
Kontaktovať používateľa:

Re: Pascal:ruksak

Príspevok od používateľa uplink »

[audio, podporuje quote tabulátory? :/ mne sa zdá že len medzery, prípadné taby to zhltne...či?]

//audio: quote nie, code áno. Zdrojáky sa dávajú do code, už len kvôli tým tabulátorom a fontu
iWin
Light Professional
Light Professional
Používateľov profilový obrázok
Príspevky: 958
Registrovaný: 04 aug 2010, 14:30
Bydlisko: NR

Re: Pascal:ruksak

Príspevok od používateľa iWin »

Je jedno či ich podporuje, má pravdu :oops: ja som ich tam nemal.
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Pascal:ruksak

Príspevok od používateľa audiotrack »

Kód: Vybrať všetko

if vaha_veci_one > vaha_ruksak then begin
   textcolor(red);
   write('!!!!!!!!Hmotnost veci v ruksaku prevysuje jeho nosnost!!!!!!!!');
   writeln;
   writeln;
   write('!!!!!!!!Nosnost ruksaku: ', vaha_ruksak:3:2,' !!!!!!!!');
   writeln;
   writeln;
   write('!!!!!!!!Hmotnost vasich veci: ', vaha_veci_one:3:2, '!!!!!!!!');
   writeln;
   writeln;
end else begin
   textcolor(green);
   writeln('Ruksak dosiahol svoju nosnot ',vaha_ruksak:3:2,' . A pocet veci v nom je ', pocet_veci);
end;
readln;
end.
iWin
Light Professional
Light Professional
Používateľov profilový obrázok
Príspevky: 958
Registrovaný: 04 aug 2010, 14:30
Bydlisko: NR

Re: Pascal:ruksak

Príspevok od používateľa iWin »

Thanks :)
Gregi
Light Star
Light Star
Príspevky: 224
Registrovaný: 24 mar 2005, 11:34

Re: Pascal:ruksak

Príspevok od používateľa Gregi »

Kód: Vybrať všetko

program Ruksak;
uses Crt;
var
  nosnost_ruksaku,vaha_veci,vaha_veci_suma: real;
  pocet_veci: Byte;

BEGIN
  ClrScr;
  Write ('Zadaj nosnost ruksaku: ');
  ReadLn (nosnost_ruksaku);
  repeat
    Write ('Zadaj vahu veci c.',pocet_veci+1,': ');
    ReadLn (vaha_veci);
    vaha_veci_suma:=vaha_veci_suma+vaha_veci;
    inc (pocet_veci);
    WriteLn ('Aktualna hmotnost veci je: ',vaha_veci_suma:3:2);
  until (nosnost_ruksaku<=vaha_veci_suma);
  if vaha_veci_suma>nosnost_ruksaku then begin
    TextColor (red);
    WriteLn ('! Hmotnost veci v ruksaku prevysuje jeho nosnost !');
    WriteLn;
    WriteLn ('- nosnost ruksaku: ',nosnost_ruksaku:3:2);
    WriteLn ('- hmotnost vasich veci: ',vaha_veci_suma:3:2);
  end
  else begin
    TextColor (green);
    Write ('Ruksak dosiahol svoju nosnot ',nosnost_ruksaku:3:2,'. Pocet veci v nom je ',pocet_veci);
    ReadLn;
  end;

END.
Avsak podla mna bol Tvoj zamer (ciel) iny. Ako vstupne parametre by mali byt max. nosnost ruksaku a pocet veci nalozenych don. Algoritmus by mal vyratat po zadani hmotnosti kazej veci, ci to ruksak unesie, alebo si jeho hmotnost presvihol. Ale to si skus uz sam. Ak cosi budes mat a nebudes si vediet pomoct, kludne postni a pomozeme :wink: .
Inak sa snaz (ak to jazyk umoznuje) premenne, konstanty pomenuvavat co najvystiznejsie. Pri malych programoch to az tak nevadi. No cim viac a viac sa zdrojak zvacuje, tym sa stava neprehladnejsi a chaotickejsi. K prehladnosti dopomaha i to hore spominane formatovanie (odsadzovanie, atd...).
iWin
Light Professional
Light Professional
Používateľov profilový obrázok
Príspevky: 958
Registrovaný: 04 aug 2010, 14:30
Bydlisko: NR

Re: Pascal:ruksak

Príspevok od používateľa iWin »

Dík za help ale nejak nerozumiem tomu s tým, že bol môj zámer iný :) môj zámer bol jasný upraviť zadanie zo školy :D a neviem prečo by som mal mať ako input len 2 premenné a myslím, že to môj algoritmus aj robí resp. cyklus robí to, že zadávam veci nejakej hodnoty pokým sú neni <= nosnosti batohu. A to je práve v tej podmienke že ak tú nosnosť prešvihneš tak ti vypíše že si ju prešvihol. Ja som mal problém s tým, že som nevedel ako ukončiť vykonávanie programu ak sa daná podmienka splní. Ale aj tak dík za rady.
Myslím, že premenné mám pomenované dosť výstižne keď sa pozrieš teda výstižné su pre mňa sú sice dlhšie tie názvy ale mne to vyhovuje.
A hej to formátovanie... s tým musím niečo urobiť skôr tu ide o lenivosť ako o to, že by som to nevedel no... ale tak to je asi aj zvyk.
Každopádne do tretice thanks za rady :)
Napísať odpoveď