Pascal program

poruka: 7
|
čitano: 5.102
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
15 godina
neaktivan
offline
Pascal programiranje

Problem se javlja kod sljedećeg programa u Pascalu. Molim vas da pokušate ispraviti program, unaprijed hvala!

Program VolumenTijela;{Deklariranje varijabla, konstanti i tako dalje}USES crt, graph;LABEL povratak;LABEL nastavka;VAR V, a, r1, r2, b, h, V1, V2, V3: real;   gd, gm:smallint;CONST pi=3.14;{Kraj deklariranja varijabla, konstanti i tako dalje}

{Procedure}PROCEDURE unospodataka;FORWARD;PROCEDURE tetraedar;FORWARD;PROCEDURE odsjecakvaljka;FORWARD;PROCEDURE odsjecakkugle;FORWARD;PROCEDURE tijelo;FORWARD;PROCEDURE crtanje;FORWARD;PROCEDURE uvijet;FORWARD;{Kraj procedura}
{Procedura koja izracunava volumen tetraedra}PROCEDURE tetraedar;BEGIN   V1=a*a*a*sqrt(2)/6;END;{Kraj procedure koja izracunava volumen tetraedra}
{Procedura kojom unosimo podatke}PROCEDURE  unospodataka;BEGIN   WRITELN('Unesite duljinu stranice tetraedra - a =');   READLN(a);   WRITELN('Unesite duljinu polumjera baze valjka - r2 =');   READLN(r2);   WRITELN('Unesite visinu valjka - b =');   READLN(b);   WRITELN('Unesite duljinu polumjer kugle - r1 =');   READLN(r1);   WRITELN('Unesite visinu kuglina odsjecka - h =');   READLN(h);END;{Kraj procedure kojom unosimo podatke}
{Procedura koja izracunava volumen odsjecka valjka}PROCEDURE odsjecakvaljka;BEGIN   V2=sqr(r2)*pi*(b-((a*sqrt(3))/(6*sqrt(2)));END;{Kraj procedure koja izracunava volumen odsjecka valjka}
{Procedura koja izracunava volumen odsjecka kugle}PROCEDURE odsjecakkugle;BEGIN   V3=(2/3)*sqr(r1)*pi*h;END;{Kraj procedure koja izracunava volumen odsjecka kugle}
{Procedura koja provjerava da li je uvijet zadovoljen}PROCEDURE uvijet;BEGIN   (r1>0) AND (r2>0) AND (b>0) AND (h>0) AND (h>((a*sqrt(3))/(6*sqrt(2))));END;{Kraj procedure koja provjerava da li je uvijet zadovoljen}
{Procedura koja crta tijelo}PROCEDURE crtanje;BEGIN   DETECTGRAPH(gd,gm);   INITGRAPH(gd,gm,'');   {Tetraedar}   SetColor(5);   LINE(100,300,200,100);   LINE(200,100,300,300);   LINE(100,300,300,300);   SetLineStyle(3,1,1);   LINE(100,300,200,200);   LINE(300,300,200,200);   LINE(200,100,200,200);   {Kugla}   SetColor(6);   CIRCLE(300,175,100);   {Valjak}   SetColor(4);   SetLineStyle(0,1,1);   ELLIPSE(200,275,0,360,50,20);   ELLIPSE(200,375,0,360,50,20);   LINE(150,275,150,375);   LINE(250,275,250,375);
   READLN;   CLOSEGRAPH;END;{Kraj procedure koja crta tijelo}
{Procedura koja izracunava ukupan volumen tijela}PROCEDURE tijelo;BEGIN   V=V1+V2+V3;END;{Kraj procedure koja izracunava ukupan volumen tijela}
BEGIN   crtanje;   WRITELN('ZADATAK:');   WRITELN('Zadan je pravilni tetraedar koji ima stranicu a. S jedne strane tetraedra ulazi kugla koja ima polumjer r1 i duljinu visine odsjecka h. S druge strane tetraedra ulazi valjak koji ima polumjer baze r2 i svoju visinu b. Baza valjka je paralelna sa stranicom tetraedra koju sijece. Program ce izracunati volumen toga tijela.');   WRITELN();   WRITELN('IZRADA:');   :povratak;   unospodataka;   IF uvijet=true THEN goto povratak ELSE goto nastavak;   :nastavak;   tetraedar;   odsjecakvaljka;   odsjecakkugle;   tijelo;   WRITELN('Volumen tijela je = ', tijelo);   READLN;END.

http://www.bfbc-online.com
Poruka je uređivana zadnji put uto 14.6.2011 21:59 (fiif).
Moj PC  
0 0 hvala 0
15 godina
neaktivan
offline
Pascal program
Uglavnom, meni javlja greške kod formula za izračunavanje V1 i V2 :S
http://www.bfbc-online.com
Moj PC  
0 0 hvala 0
16 godina
moderator
offline
Re: Pascal programiranje

Kriminalno loše napisan kod. Od korištenja goto-a (zar je tako teško umjesto toga napisati petlju repeat...until not uvjet), globalnih varijabli, do nepotrebnog pisanja procedura kad je sve moglo biti unutar glavnog programa ili recimo procedure "izračunaj".

 

Ono što je naočigled jasno je da bi "procedura" uvijet (valjda uvjet!) zapravo trebala biti funkcija, s obzirom da procedure ne vraćaju vrijednost, a ti "uvijet" koristiš kao funkciju. Također, možeš li objasniti što radi procedura "uvijet"? Ne radi ništa. Radi logičke operacije, a s rezultatom ne radi ništa! Zar ne znaš kako se vraća vrijednost u Pascalu? Pripiše se vrijednost nazivu funkcije.

 

function Uvjet: Boolean;begin Uvjet := (r1>0) AND (r2>0) AND (b>0) AND (h>0) AND (h>((a*sqrt(3))/(6*sqrt(2))));end;

 

Poruka je uređivana zadnji put sub 18.6.2011 15:35 (mbaksa).
12 godina
neaktivan
offline
Pascal program

E ja nemam pojma sa PASKALOM a dobio sam da riješim zadatak, pa VAS molim za pomoć.

Zadata je ovakav.

Izračunati volumen tijala koje je sastavljeno od prizme, kocke, lopte i valjka.

Moj PC  
0 0 hvala 0
12 godina
neaktivan
offline
Pascal program
Program Volumentijela;
Uses crt;
{Dekariranje varijabli, konstanti itd}
Label povratak;
Label nastavak;
Var a,b,c,V1,d,V2,R1,L,V3,R2,V4,V5,V6,V7,V:real;
const Pi=3.14;
{Kraj deklariranja varijabli}
{Procedure}
Procedure tijelo;
FORWARD;
Procedure unospodataka;
FORWARD;
Procedure kvadar;
Forward;
Procedure kocka;
Forward;
Procedure lopta;
Forward;
procedure valjak;
Forward;
Procedure odsjecakvaljka;
Forward;
Procedure valjakkrozkocku;
Forward;
Procedure isjecaklopte;
Forward;
Procedure uslov;
Forward;
{procedura koja izracunava volumena valjka}
Procedure valjak;
Begin V3:=(sqr(R1))*Pi*L;
END;
{kraj procedure koja izracunava volumen valjka}
{Procedura kojom unosimo podatke}
Procedure unospodataka;
Begin
Writeln ('Unesite duzinu stranice kvadra - a =');
Readln (a);
Writeln ('Unesite sirinu stranice kvadra - b =');
Readln (b);
Writeln ('Unesite visinu stranice kvadra - c =' );
Readln (c);
Writeln ('Unesite dimenziju stranice kocke - d =');
Readln (d);
Writeln ('Unesite dimenziju poluprecnika valjka - R1 =');
Readln (R1);
Writeln ('Unesite dimenziju duzine valjka - L =');
Readln (L);
Writeln ('Unesite dimenziju poluprecnika lopte -R2 =');
Readln (R2);
END;
{Kraj procedure kojom unosimo podatke}
{Procedura koja izracunava volumen kvadra}
Procedure kvadar;
Begin V1:=a*b*c;
END;
{Kraj procedure koja izracunava volumen kvadra}
{procedura koja izracunava volumen kocke}
Procedure kocka;
Begin V2:=d*d*d;
END;
{kraj procedure koja izracunava volumen kocke}
{procedura koja izracunava volumen lopte}
Procedure lopta;
Begin V4:=(4/3)*R2*R2*R2*Pi;
END;
{procedura koja izracunava volumen valjka u kvadru}
Procedure odsjecakvaljka;
Begin V5:=(sqr(R1))*Pi*(a/2);
END;
{kraj procedure koja izracunava volumen valjka}
{procedura koja izracunava volumen valjka kroz kocku}
Procedure valjakkrozkocku;
Begin V6:=(sqr(R1))*Pi*d;
END;
{kraj procedurekoja izracunava volumen valjka kroz kocku}
Procedure isjecaklopte;
Begin V7:=(2/3)*(sqr(R2))*Pi*(R2-(sqr(R2)-sqr(R1)));
End;
{kraj procedure koja izracunava volumen isjecka lopte}
{procedura koja provjerava uslove}
Procedure uslov;
Begin (L>d+0.5*a);
END;
{kraj procedure koja provjerava uslove}
{procedura koja izracunava ukupan volumen tijela}
Procedure tijelo;
Begin V=V1+V2+V3+V4-V5-V6-V7;
END;
{kraj procedure koja izracunava ukupan volumen tijela}
Writeln('ZADATAK:');
WRITELN('Zadano je slozeno tijelo koje se sastoji od kvadra, kocke, lopte i valjka. Valjak zadire u kvadar, prolazi kroz kocku i naslanja se na loptu. Program ce izracunati volumen tog tijela.');
Writeln();
Writeln ('IZRADA');
:povratak;
unospodataka;
IF uslov=true THEN go to povratak ELSE goto nastavak;
:nastavak;
valjak;
kvadar;
kocka;
lopta;
odsjecakvaljka;
valjakkrozkocku;
isjecaklopte;
tijelo;
WRITELN('Volumen tijela je = ', tijelo);
READLN;
END.
Moj PC  
0 0 hvala 0
10 godina
neaktivan
offline
Program u Pascalu MOLIM POMOĆ

Imam zadatak za seminarski rad, a stvarno nemam 3 čiste o programiranju.. bila bih vrlo zahvalna ako bi mi netko pomogao riješpiti zadatak  {#}

 

Zadatak: Napišite program koji ispisuje tekst, tj. izvorni kod programa u Pascalu, iz jedne datoteke u drugu datoteku tako da sve ključne riječi napišete velikim slovima.

 
0 0 hvala 0
15 godina
offline
Re: Program u Pascalu MOLIM POMOĆ

Postavljajte svoja pitanja u ovu temu.Mislim da je veća mogućnost da će vam netko odgovoriti.

AC Milan - IL CLUB PIU' TITOLATO AL MONDO
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice