Napísanie programu v pascale

Programovacie jazyky, rady, poradňa...
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: Napísanie programu v pascale

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

Skus vytvorit novy textovy dokument (hocikde trebars na ploche pravym->vytvorit novy...) a skopiruj tam ten svoj kod na prvej strane. Potom daj ctrl+F9 a nevidim dovo preco by to neslo :)

A este k tym dalsim programom, mas 3 cisla usporiadat od najmensieho po najvacsi? Tak ked uz mas min a max tak zistis aj stredne cislo a mozes vypisovat :)
+ tie trojuholniky: Sucet hociktorych stran musi byt vacsi ako tretia strana. Tri podmienky a hotovo. A aky trojuholnik? To neviem ako je myslene...
3PO
Medium Professional
Medium Professional
Príspevky: 1090
Registrovaný: 01 dec 2005, 23:51

Re: Napísanie programu v pascale

Príspevok od používateľa 3PO »

Sgt.Moody napísal:Opravil som to ale aj tak sa mi to nedá spustiť
ked to nejde spustit tak vyskoci siva tabulka. dole v okne sa objaci ramcek a tam su dve cisla. prve je riadok druhy je pozicia na riadku kde nastala chyba a za nim je popis chyby. ked to neopravis tak to tu preposli ale nie ako obrazok ale ako text pomocou tlacitka code
Sgt.Moody
Medium Expert
Medium Expert
Príspevky: 118
Registrovaný: 11 júl 2007, 10:09

Re: Napísanie programu v pascale

Príspevok od používateľa Sgt.Moody »

Kód: Vybrať všetko

program cisla;
var a,b,c,max,min:integer;
begin
writeln('zadaj cislo a');
readln(a);
writeln('zadaj cislo b');
readln(b);
writeln('zadaj cislo c');
readln(c);
if a>b
then max:=a
else max:=b;
if max<c
then max:=c;

if a<b
then min:=a
else min:=b;
if min>c
then min:=c;
writeln('max hodnota je,', max:3:2');
writeln('min hodnota je', min:3:2');
readln;
end.
A ten 3uholník aký to je? No že či je rovnostranný, rovnoramený...
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: Napísanie programu v pascale

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

max:3:2 nemozes napisat ak pouzivas integer. To je pre upravu desatinych miest pri desatinych cislach (A teda pre typ real)
Inak je to dobre.

A k tym trojuholnikom... rovnostranny je ak a=b=c, rovnoramenny je ak su práve dve strany rovnake, pravouhly je ked plati pytagorova veta... ake su este trojuholniky... :D
Samozrejme na zaciatku musis zistit, cis a jedna o trojuholnik. A teda ci sucet dvoch stran je vacsi ako tretia :)
Sgt.Moody
Medium Expert
Medium Expert
Príspevky: 118
Registrovaný: 11 júl 2007, 10:09

Re: Napísanie programu v pascale

Príspevok od používateľa Sgt.Moody »

Takže to 3:2 môžem zmazať alebo integer prepísať na real, správne ?


Aha tak to mi už funguje, diky moc :) A už len musím vyriešiť ten 3 uholník nejako. Napísať
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: Napísanie programu v pascale

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

Ano... radsej by som to zmazal a pracoval s integer-om :)
Sgt.Moody
Medium Expert
Medium Expert
Príspevky: 118
Registrovaný: 11 júl 2007, 10:09

Re: Napísanie programu v pascale

Príspevok od používateľa Sgt.Moody »

Dobre tak toto už funguje. Už len musím vyriešiť nejako ten 3uholník
3PO
Medium Professional
Medium Professional
Príspevky: 1090
Registrovaný: 01 dec 2005, 23:51

Re: Napísanie programu v pascale

Príspevok od používateľa 3PO »

k tomu trojuholniku. zoradis tie cisla na to uz program mas :) teraz zistis ci vobec trojuohlnik moze existovat(ci sa da nakreslit). na to sa pouziva trojuholnikova nerovnost. Ta vravi: sucet dlzky lubovolnych dvoch stran v trojuholniku musi byt vacssi ako dlzka tretej strany. takze pomocou if vyhodnotis ci plati toto

Kód: Vybrať všetko

a+b>c and b+c>a and c+a>b
k typu trojuholniku. tam asi ide o to ci je rovnostranny, rovnorameny, alebo roznostranny. to je opat jednoduche. opat cez if. a=b=c vtedy je rovnostrany. ak a=b alebo dalsia z kombinaci a=c b=c vtedy je rovnoramenny a ak a<>b<>c vtedy je roznostranny
Sgt.Moody
Medium Expert
Medium Expert
Príspevky: 118
Registrovaný: 11 júl 2007, 10:09

Re: Napísanie programu v pascale

Príspevok od používateľa Sgt.Moody »

No toto je ten 3uholník ale niekde tam je chyba. Nájde mi ju niekto ?

Kód: Vybrať všetko

program cisla;
var a,b,c,s,max,min:integer;
begin
  writeln('zadaj cislo a');
  readln(a);
  writeln('zadaj cislo b');
  readln(b);
  writeln('zadaj cislo c');
  readln(c);
  if a>b
  then max:=a
  else max:=b;
  if max<c
  then max:=c;
  if a<b
  then min:=a
  else min:=b;
  if min>c
  then min:=c;
  writeln('Maximalne cislo je ',max);
  if (a>min) and (a<max) then begin
  writeln('Stredne cislo je ',a);
  s:=a;
  end;
  if (b>min) and (b<max) then begin
  writeln('Stredne cislo je ',b);
  s:=b;
  end;
  if (c>min) and (c<max) then begin
  writeln('Stredne cislo je ',c);
  s:=c;
  end;
  writeln('Minimalne cislo je ',min);
  if (a+b>c) and (b+c>a) and (c+a>b)
  then begin
  writeln('Trojuholnik sa da zostrojit');
  if a=b=c then writeln('Trojuholnik je rovnostranny');
  if (a=b) or (b=c) or (a=c) then writeln('Trojuhlnik je rovnoramenny');
  if min^2+s^2=max^2 then writeln('Trojuholnik je pravouhly');
  end;
  else writeln('Neda sa zostrojit');
  readln;
  end.
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Re: Napísanie programu v pascale

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

Nebolo by prehľadnejšie, keby si si v premenných tie čísla usporiadal (prípadne, ak potrebuješ niekde ich pôvodné poradie, tak by si ich mohol zoradiť do iných premenných).
To a=b=c aj funguje?
Ak je trojuholník rovnostranný, tak nemôže byť iný a teda tú podmienku na rovnoramennosť daj do else (a keď je rovnostranný, tak nemôže byť pravouhlý, takže to tiež bude v tej else časti).
3PO
Medium Professional
Medium Professional
Príspevky: 1090
Registrovaný: 01 dec 2005, 23:51

Re: Napísanie programu v pascale

Príspevok od používateľa 3PO »

if a=b=c then writeln('Trojuholnik je rovnostranny'); ma vyzerat if (a=b) and (c=b) then writeln('Trojuholnik je rovnostranny');
riadok if min^2+s^2=max^2 then writeln('Trojuholnik je pravouhly'); pascal pouziva pre druhu mocninu prikaz sqr (z anglickeho square-stvorec) takze if sqr(min)+ sqr(s)=sqr(max); ale niesom si isty ci to prejde (neche sa mi spustat pascal).su to len chyby zapisu ci to vobec robi to co ma robit toto hladat nebudem :) a este odporucam precitat toto http://sulo.stary-gympel.sk/free-pascal-uvod/ vyhnes sa aspon zakladnym chybam a citaj co vypise debugger (to je to okno dole ktore vyskoci ked sa program nepodari spustit)
Sgt.Moody
Medium Expert
Medium Expert
Príspevky: 118
Registrovaný: 11 júl 2007, 10:09

Re: Napísanie programu v pascale

Príspevok od používateľa Sgt.Moody »

Ešte mi tam vypisuje, že chyba s bodkočiarkou niekde dolu ale nevem to nájsť. Pozerám ten riadok ale nič (38 riadok). Teraz to vyzerá takto

Kód: Vybrať všetko

program cisla;
var a,b,c,s,max,min:integer;
begin
  writeln('zadaj cislo a');
  readln(a);
  writeln('zadaj cislo b');
  readln(b);
  writeln('zadaj cislo c');
  readln(c);
  if a>b
  then max:=a
  else max:=b;
  if max<c
  then max:=c;
  if a<b
  then min:=a
  else min:=b;
  if min>c
  then min:=c;
  writeln('Maximalne cislo je ',max);
  if (a>min) and (a<max) then begin
  writeln('Stredne cislo je ',a);
  s:=a;
  end;
  if (b>min) and (b<max) then begin
  writeln('Stredne cislo je ',b);
  s:=b;
  end;
  if (c>min) and (c<max) then begin
  writeln('Stredne cislo je ',c);
  s:=c;
  end;
  writeln('Minimalne cislo je ',min);
  if (a+b>c) and (b+c>a) and (c+a>b)
  then begin
  writeln('Trojuholnik sa da zostrojit');
  if (a=b) and (c=b) then writeln('Trojuholnik je rovnostranny')
  else (a=b) or (b=c) or (a=c) then writeln('Trojuhlnik je rovnoramenny');
  if sqr(min)+sqr(s)=sqr(max) then writeln('Trojuholnik je pravouhly');
  end;
  else writeln('Neda sa zostrojit');
  readln;
  end.
3PO
Medium Professional
Medium Professional
Príspevky: 1090
Registrovaný: 01 dec 2005, 23:51

Re: Napísanie programu v pascale

Príspevok od používateľa 3PO »

precitaj si aky end sa dava za begin v podmienke....
Sgt.Moody
Medium Expert
Medium Expert
Príspevky: 118
Registrovaný: 11 júl 2007, 10:09

Re: Napísanie programu v pascale

Príspevok od používateľa Sgt.Moody »

end; ?
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Re: Napísanie programu v pascale

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

Tam asi tá bodkočiarka byť nemôže (pri end pred else).

Inak v Pascal môže byť aj v else ďalšia podmienka? Nemá tam byť náhodou ďalšie if?

//audiotrack: opravený preklep z "dvojbodka" na "bodkočiarka"
3PO
Medium Professional
Medium Professional
Príspevky: 1090
Registrovaný: 01 dec 2005, 23:51

Re: Napísanie programu v pascale

Príspevok od používateľa 3PO »

if podmienka then begin
príkaz1;
príkaz2;
end
mas to na tej stranke co som poslal
Sgt.Moody
Medium Expert
Medium Expert
Príspevky: 118
Registrovaný: 11 júl 2007, 10:09

Re: Napísanie programu v pascale

Príspevok od používateľa Sgt.Moody »

No tie bodkočiarky som odstránil a už len 2 chyby sú. V 25 riadku zase niečo
3PO
Medium Professional
Medium Professional
Príspevky: 1090
Registrovaný: 01 dec 2005, 23:51

Re: Napísanie programu v pascale

Príspevok od používateľa 3PO »

chrono napísal:Tam asi tá dvojbodka byť nemôže (pri end pred else).

Inak v Pascal môže byť aj v else ďalšia podmienka? Nemá tam byť náhodou ďalšie if?
neviem ci presne rozumiem. moze byt if ..... else if..... else if.... az do zblaznenia :)
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Re: Napísanie programu v pascale

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

3PO napísal:neviem ci presne rozumiem. moze byt if ..... else if..... else if.... az do zblaznenia :)
On tam ale má: else (a=b) or (b=c) or (a=c)
Sgt.Moody
Medium Expert
Medium Expert
Príspevky: 118
Registrovaný: 11 júl 2007, 10:09

Re: Napísanie programu v pascale

Príspevok od používateľa Sgt.Moody »

Syntax error, ";" expected but "IF" found

A je tam toto:

Kód: Vybrať všetko

if (b>min) and (b<max) then begin
  writeln('Stredne cislo je ',b);
  s:=b;
  end
Napísať odpoveď