Pascal krabice help – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Pascal krabice help – Pascal – Fórum – Programujte.comPascal krabice help – Pascal – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
jurad
~ Anonymní uživatel
13 příspěvků
2. 11. 2014   #1
-
0
-

caute mam ukol 

Továrna expeduje své výrobky v krabicích tvaru krychle. Používá 6 velikostí krabic, a to krabice o hraně velikosti 20 cm, 40 cm, 60 cm, 80 cm, 100 cm a 120 cm. Zabalené výrobky se odvážejí v paletách, které mají tvar krychle o hraně 120 cm.

Na standardním vstupu je zadáno šest kladných celých čísel (z rozsahu typu integer), která představují počty jednotlivých druhů krabic připravených na odvoz v pořadí od nejmenších krabic po největší krabice. Určete, jaký minimální počet palet je třeba použít k odvozu všech těchto krabic s výrobky.

Krabice se při ukládání do palet nesmějí nijak deformovat. Výsledkem výpočtu je jediné celé číslo představující počet potřebných palet, program ho vypíše na standardní výstup.

uses crt;
var      b: array [1..6] of longint;
         a: array [1..6] of longint;
         p,i,j,k,l,V:longint;

begin
clrscr;
a[1]:=20;
a[2] := 40;
a[3] :=60;
a[4] := 80;
a[5]:=100;
a[6] :=120;
V:=1728000;
p:=0;
for i:=1 to 6 do
readln (a[i]);

for i:=1 to 6 do

writeln (a[i], ' ');
  p:=b[6];
for j:=5 downto 1 do   begin      {delam dokud mam krabici}
   while (b[j]<>0) do begin
           a [j]:=b[j]-1;
                        p:=p+1;
            V:=V-(a[j]*a[j]*a[j] ) ;
            k:=j;
           if (k>1) then
           for k:=j-1 downto 1  do  begin
            if (V mod (a[k] * a[k]*a[k]) = 0 )then begin
                b[k]:= b[k] - (V div (a[k]*a[k]*a[k]) );
                V:= V - ( (V div (a[k]*a[k]*a[k] ) )  * (a[k]*a[k]*a[k]) ) end
            else
                 if (k>1) then
                 for l:=k-1 downto 1 do begin
                 b[l]:= a[l] - (V div (a[l]*a[l]*a[l]) )   ;
                 V:= V - ( (V div (a[l]*a[l]*a[l] ) )  * (a[l]*a[l]*a[l]) )  end;end;

            V:=1728000;

            end;      end;
              write ('ahoj');
            writeln (p);
            readln
            end.

nechce se mi to pocitat a nevim kam dat pocitadlo popripade nemuzu najit logickou chybu v tom muzete me poradit?

Nahlásit jako SPAM
IP: 78.128.194.–
Reklama
Reklama
JoDiK
~ Anonymní uživatel
981 příspěvků
2. 11. 2014   #2
-
0
-

#1 jurad
Až budeš proměnné nazývat tak, aby z názvu bylo jasné, co proměnná obsahuje a budeš si program komentovat na více než jen na jednom místě, třeba tu chybu najdeš sám, nebo se rychleji najde někdo, kdo se ti na to koukne a poradí...

Takže jen tak po zběžném kouknutí:

Tohle tam máš zbbytečně, protože o kousek dál

a[1]:=20;
a[2] := 40;
a[3] :=60;
a[4] := 80;
a[5]:=100;
a[6] :=120;

tady:

for i:=1 to 6 do
readln (a[i]);


To hned přepíšeš vstupními údaji.

Pak zkoumáš nějaké:

while (b[j]<>0) do begin


ale do b jsi zatím nic nevložil, takže v tom lepším případě tam jsou samé nuly a ten výše uvedený cyklus neproběhne ani jednou...

Nahlásit jako SPAM
IP: 88.103.228.–
jurad
~ Anonymní uživatel
13 příspěvků
2. 11. 2014   #3
-
0
-

#2 JoDiK

pointa je ta ze do B davam pocty tech krabic a do A musim dat ty rozmery to se dopisoval proto tam jsou obcas chyby ale zapominal jsem na komenty tak se v tom uz stracim takze kazdej postreh je dobrej

Nahlásit jako SPAM
IP: 78.128.194.–
JoDiK
~ Anonymní uživatel
981 příspěvků
2. 11. 2014   #4
-
0
-

#3 jurad
do b nedáváš nic, protože počtama krabic přepíšeš ty rozměry v a.

Nahlásit jako SPAM
IP: 88.103.228.–
jurad
~ Anonymní uživatel
13 příspěvků
2. 11. 2014   #5
-
0
-

#4 JoDiK
to prave nemuzu jinak to bude hazet chybu tak to musim prepsat 

Nahlásit jako SPAM
IP: 78.128.194.–
JoDiK
~ Anonymní uživatel
981 příspěvků
2. 11. 2014   #6
-
0
-

#3 jurad
opravdu si ty proměnné pojmenuj lépe - co třeba:

var      pocty_krabic: array [1..6] of integer;
         rozmery_krabic: array [1..6] of integer;

PS: v zadání máš jasně řečen rozsah, proč tam cpeš ty longinty?

Nahlásit jako SPAM
IP: 88.103.228.–
JoDiK
~ Anonymní uživatel
981 příspěvků
2. 11. 2014   #7
-
0
-

#5 jurad
Nerozumím...

Nahlásit jako SPAM
IP: 88.103.228.–
jurad
~ Anonymní uživatel
13 příspěvků
2. 11. 2014   #8
-
0
-

#7 JoDiK
nechtelo me to vzit 120*120*120 proto i kdyz nechapu duvod proc 

Nahlásit jako SPAM
IP: 78.128.194.–
jurad
~ Anonymní uživatel
13 příspěvků
2. 11. 2014   #9
-
0
-

#7 JoDiK


begin
clrscr;
rozmer krabice[1]:=20;
rozmer krabice[2] := 40;
rozmer krabice[3] :=60;
rozmer krabice[4] := 80;
rozmer krabice[5]:=100;
rozmer krabice[6] :=120;
V:=1728000;
p:=0;
for i:=1 to 6 do
readln (pocet krabic[i]);

for i:=1 to 6 do

writeln (rozmer krabice[i], ' ');
  p:=pocet krabic[6];
for j:=5 downto 1 do   begin      {delam dokud mam krabici}
   while (pocet krabic [j]<>0) do begin
         pocet krabic [j]:=pocet krabic[j]-1;

            V:=V-(rozmer krabice[j]*rozmer krabice[j]*rozmer krabice[j] ) ;
            k:=j;
           if (k>1) then
           for k:=j-1 downto 1  do  begin
            if (V mod (rozmer krabice[k] * rozmer krabice[k]*rozmer krabice[k]) = 0 )then begin
               pocet krabic[k]:= rozmer kabice [k] - (V div (rozmer krabice[k]*rozmer krabice[k]*rozmer krabice[k]) );
                V:= V - ( (V div (rozmer krabice[k]*rozmer krabice[k]*rozmer krabice[k] ) )  * (rozmer krabice[k]*rozmer krabice[k]*rozmer krabice[k]) ) end
            else
                 if (k>1) then
                 for l:=k-1 downto 1 do begin
                 pocet krabic[l]:= rozmer krabice[l] - (V div (rozmer krabice[l]*rozmer krabice[l]*rozmer krabice[l]) )   ;
                 V:= V - ( (V div (rozmer krabice[l]*rozmer krabice[l]*rozmer krabice[l] ) )  * (rozmer krabice[l]*rozmer krabice[l]*rozmer krabice[l]) )  end;end;

            V:=1728000;

            end;      end;
                         writeln (p);
            readln
            end.

takze takhle to tucne sem opravil pac si myslim ze v tom byla take ta chyba

Nahlásit jako SPAM
IP: 78.128.194.–
JoDiK
~ Anonymní uživatel
981 příspěvků
2. 11. 2014   #10
-
0
-

#8 jurad
aha, no to je vcelku jasné - integer je jen do 32768, tak to potom jo, nedíval jsem se dál, že ty objemy ukládáš do b...

Nahlásit jako SPAM
IP: 88.103.228.–
JoDiK
~ Anonymní uživatel
981 příspěvků
2. 11. 2014   #11
-
0
-

#9 jurad
nevím, jestli dobře vidím, tobě to veme název proměnné s mezerou?

Nahlásit jako SPAM
IP: 88.103.228.–
jurad
~ Anonymní uživatel
13 příspěvků
2. 11. 2014   #12
-
0
-

#11 JoDiK
pupravoval jsem to ted pro rychlost v textovym poly jinak pochopitelne ze ne

Nahlásit jako SPAM
IP: 78.128.194.–
jurad
~ Anonymní uživatel
13 příspěvků
2. 11. 2014   #13
-
0
-

#12 jurad
#11 JoDiK
nevis nahodou proc se me furt ten pascal stve ze jednou vypise chyby pri completaci a nekdy ne?

Nahlásit jako SPAM
IP: 78.128.194.–
JoDiK
~ Anonymní uživatel
981 příspěvků
2. 11. 2014   #14
-
0
-

#12 jurad
tak to upravuj přímo v programu a nauč se při ladění programu používat krokování a výpis obsahu proměnných. Pak ty logické chyby najdeš mnohem rychleji...

Nahlásit jako SPAM
IP: 88.103.228.–
jurad
~ Anonymní uživatel
13 příspěvků
2. 11. 2014   #15
-
0
-

#14 JoDiK
jak se to dela pres to neumim to 

Nahlásit jako SPAM
IP: 78.128.194.–
JoDiK
~ Anonymní uživatel
981 příspěvků
2. 11. 2014   #16
-
0
-

#13 jurad
Protože nevím jaký pasal používáš ani jaké chyby ti to píše, tak ti k tomu nemám co říct...

Jestli se jedná o chyby při kompilaci, které tam jednou jsou a podruhé ne, aniž by se změnil zdrojový kód programu, tak asi vyměň pascal - to je totiž nemožné...

Nahlásit jako SPAM
IP: 88.103.228.–
jurad
~ Anonymní uživatel
13 příspěvků
2. 11. 2014   #17
-
0
-

#16 JoDiK
pouzivam free pascal 

blbe sem to napsal vcera mi to chyby vypisovalo kde jsou ted mi to vypise chyby ze tam jsou ale nevybehne takovej ten ramecek kde ti pise kde jsou

Nahlásit jako SPAM
IP: 78.128.194.–
JoDiK
~ Anonymní uživatel
981 příspěvků
2. 11. 2014   #18
-
0
-

#17 jurad
Aha, tak to je jiná.

Freepascal neznám, tak neporadím...

Nahlásit jako SPAM
IP: 88.103.228.–
JoDiK
~ Anonymní uživatel
981 příspěvků
2. 11. 2014   #19
-
0
-

#18 JoDiK
Borland Pascal mi přesune kurzor přesně do místa chyby a na požádání mi z nápovědy zobrazí přímo podrobnosti o chybě...

Nahlásit jako SPAM
IP: 88.103.228.–
jurad
~ Anonymní uživatel
13 příspěvků
2. 11. 2014   #20
-
0
-

#19 JoDiK
krokovani by tam melo fungovat stejne jak to tam delas?

Nahlásit jako SPAM
IP: 78.128.194.–
JoDiK
~ Anonymní uživatel
981 příspěvků
2. 11. 2014   #21
-
0
-

#20 jurad
Koukni se na debug menu, step, breakpoint, watch nebo jak se ty nástroje jmenují...

česky krok, zastavovací bod, sledovací okno obsahu proměnných

Nahlásit jako SPAM
IP: 88.103.228.–
JoDiK
~ Anonymní uživatel
981 příspěvků
2. 11. 2014   #22
-
0
-

#21 JoDiK
jo a taky si zkus počty krabic pro odladění programu zadat napevno, ať to nemusíš při každém spuštění furt dokola zadávat...

Nahlásit jako SPAM
IP: 88.103.228.–
jurad
~ Anonymní uživatel
13 příspěvků
2. 11. 2014   #23
-
0
-

#22 JoDiK
chyba 215 nevis co to je?

Nahlásit jako SPAM
IP: 78.128.194.–
jurad
~ Anonymní uživatel
13 příspěvků
2. 11. 2014   #24
-
0
-

 V:= V - ( (V div (rozmer krabice[k]*rozmer krabice[k]*rozmer krabice[k] ) )  * (rozmer krabice[k]*rozmer krabice[k]*rozmer krabice[k]) 

  V:= V - ( (V div (rozmer krabice[l]*rozmer krabice[l]*rozmer krabice[l] ) )  * (rozmer krabice[l]*rozmer krabice[l]*rozmer krabice[l]) )

me to hlasi chybu system_handleerroraddrframe$longint$pointer$pointer system handle error  frame$longint$pointer$pointer

Nahlásit jako SPAM
IP: 78.128.194.–
JoDiK
~ Anonymní uživatel
981 příspěvků
2. 11. 2014   #25
-
0
-

#23 jurad
Popis chyb máš v nápovědě nebo v dokumentaci nebo na internetu...

Něco ti přeteklo při výpočtu, jestli tam máš furt ty longinty, tak nějaký výpočet přelezl 4 miliardy, takže tipuju na někonečný cyklus...

Měl bys začít krokovat a ladit ty výpočty...

Nahlásit jako SPAM
IP: 88.103.228.–
jurad
~ Anonymní uživatel
13 příspěvků
2. 11. 2014   #26
-
0
-

#25 JoDiK
krokuju a pri krocich pri ruznych vystupech padnu bud tam nebo tam

Nahlásit jako SPAM
IP: 78.128.194.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 11 hostů

Podobná vlákna

Pole objektů (krabice) — založil Veverka

Pascal: kurz turbo pascal II — založil Systém

From Pascal to C — založil Manas

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý