Šta je novo?

Pomoć oko programiranja u PASCAL-u

Markic

Slavan
Učlanjen(a)
15.02.2013
Poruke
4,267
Poena
475
Moja oprema  
Laptop
Macbook Air M1, HP Pavilion 17
Mobilni telefon
Google Pixel 8 Pro
Pametni uređaji
Galaxy Watch 4 Classic
Pristup internetu
  1. Kablovski internet
U gimnaziji smo počeli da radimo PASCAL (konačno bar malo programiranja :D).
E sada imam problema u vezi sa pravljenjem programa koji za uneta dva broja ispisuje veći:
Program Maximum;
var
a,b:integer;
begin
writeln('unesite dva broja');
readln(a,b);
if a>b then
writeln(a);
else
writeln(b);
readln;
end.

Međutim kada pokušam da pokrenem program javlja mi grešku u redu gde se nalazi "else". Greška je "Fatal: syntax error, ";" expected but ELSE found.
Kada ovo else zamenim sa "if b>a then" program ne javlja grešku, u čemu je problem?
 
Hvala, to je to.
 
...a šta ako su a i b jednaki?:p
ispisaće b, što nije tačno...
 
  • Like
Reagovanja: NAS
Imam jedno novo pitanje:
Da li je moguće rešiti sledeći zadatak u Pascalu?
-Napisati program koji koristeći naredbu while na ekranu ispisuje brojeve između a i b koji se završavaju sa cifrom 3.
Kako ja da definišem to da se broj završava sa 3, ako ne znam da li je broj 2,3,4-ocifren?
 
If x(x je taj broj za koji pitas) mod 10=3

Onda stampas taj broj.

Pre while petlje stavis da je x pocetak segmenta, while petlja ide dok x nije jednak kraju segmenta, pitas za svako x ovo gore sto sam ti napisao i stampas ako jeste, na kraju zaglavlja za while petlju x++ ili kako se vec inkrementira broj u Pascalu.

Nebitno je da li je broj dvocifren, cetvorocifren ili n-tocifren, moduo 10 vraca njegovu poslednju cifru.
 
Poslednja izmena:
svaki algoritam je moguce resiti u pascalu ili u bilo kom drugom jeziku

ono sto je sramota je da u 2017. godini ucite pascal, a ne c++ kao prvi jezik
 
If x(x je taj broj za koji pitas) mod 10=3
Onda stampas taj broj.
Pre while petlje stavis da je x pocetak segmenta, while petlja ide dok x nije jednak kraju segmenta, pitas za svako x ovo gore sto sam ti napisao i stampas ako jeste, na kraju zaglavlja za while petlju x++ ili kako se vec inkrementira broj u Pascalu.
Nebitno je da li je broj dvocifren, cetvorocifren ili n-tocifren, moduo 10 vraca njegovu poslednju cifru.

Malo ubrzanje: nadje se prvi veći broj od a kod koga je poslednja cifra 3, onda while petlja dok je broj manji ili jednak b, ispise se taj broj, pa broj=broj+10...
 
Malo ubrzanje: nadje se prvi veći broj od a kod koga je poslednja cifra 3, onda while petlja dok je broj manji ili jednak b, ispise se taj broj, pa broj=broj+10...
Hvala i za ovaj hint.
A šta mislite o ovom zadatku:
Isto koristeći while, treba napraviti program koji računa zbir cifara za uneti broj. (Da li je tu bitno naglasiti da li je broj dvocifren, trocifren..?
 
Ovo ti je analogno prethodnom zadatku. Broj cifara nije bitan.

sum = 0
while(x > 0)
sum = sum + x mod 10
x = x / 10
 
Ovo ti je analogno prethodnom zadatku. Broj cifara nije bitan.

sum = 0
while(x > 0)
sum = sum + x mod 10
x = x / 10
Zar ovo ne bi trebalo da mi vraća poslednju cifru broja, bar tako ispadne kada napišem program sa ovim kodom, recimo unesem 25 i on napiše 5.
 
Tacno je rekao covek.
X mod 10 vraca poslednju cifru.
X/10 mod 10 vraca pretposlednju cifru i tako dalje, sve dok x ne postane nula na kraju(kad broj manji od 10 podelis 0, dobijes 0).

I ovo sto je rekao za x+=10 je bolje od ovog sto sam rekao za proveru svakog broja, za prethodni zadatak.
 
Tacno je rekao covek.
X mod 10 vraca poslednju cifru.
X/10 mod 10 vraca pretposlednju cifru i tako dalje, sve dok x ne postane nula na kraju(kad broj manji od 10 podelis 0, dobijes 0).

I ovo sto je rekao za x+=10 je bolje od ovog sto sam rekao za proveru svakog broja, za prethodni zadatak.

Onda je negde pravim grešku:
var
x,sum:integer;
begin
writeln('Unesi broj');
readln(x);
sum:=0;
while x>0 do
begin
sum:=sum+x mod 10;
x:= x/(x mod 10);
end;
writeln('Suma je',sum);
readln;
end.

Izbacuje grešku da je pogrešan tip podataka, ali ako ja stavim zbog deljenja real, onda neću moći da koristim while petlju.
 
X=x/10, a ne x=x/(x mod 10)
 
Koliko znam u radu sa celim brojevima u paskalu nema klasičnog deljenja, zamena za njega su operacije div i mod. Div je celobrojno deljenje a mod ostatak pri celobrojnom deljenju.
 
Hvala puno, problem je bio sa div.
 
Malo ubrzanje: nadje se prvi veći broj od a kod koga je poslednja cifra 3, onda while petlja dok je broj manji ili jednak b, ispise se taj broj, pa broj=broj+10...

Imam samo još jedno pitanje vezano za ovaj zadatak, da li pri traženju prvog većeg broja od a koristim while petlju ili nešto drugo?
 
Dok je x moduo 10 razlicito od 3, povecavas x.
 
var
a,b,x:integer;
begin
writeln('Unesite granicu');
readln(a,b);
x:=1;
while x mod 10<>3 do
x:=x+1;
while x<b do
begin
if x mod 10=3 then
x:=x+10;
end;
writeln('Brojevi veći od a a manji od b su',x);
readln;
end.

Sada kad napravim ovaj program izbacuje, recimo za brojeve od 10 do 33, rezultat 33. (Ispada da samo sabira 13 sa 10)?
 
Vise gresaka imas.

Prva greska je sto ne kreces od a, nego od 1(ako sam dobro shvatio gleda se segment od a do b).

Druga greska je sto u drugoj while petlji uopste imas if uslov, jer kad se broj zavrsava sa 3, broj koji je za 10/20/30.. veci od njega se sigurno zavrsava sa 3, ne treba ti if uslov.

Treca greska je sto ti je stampanje van while petlje.

Znaci u drugoj while petlji izbaci if uslov i ubaci stampanje i to je to.
 
Poslednja izmena:
Evo mene ponovo sa pitanjem na ovu temu, sticajem okolnosti ponovo radimo u 3. razredu gradivo 2. godine, pa me zanima jel zna neko kako uz pomoć for petlje napisati program koji ispisuje sve 3-ocifrene palindrome?
 
For(i= 100 to 999 Do)
If i mod 10=i mod 100 then
Writeln(i);
 
Kod:
Program Palindrome(output);
var
  i: integer;
begin
  for i := 100 to 999 do
  begin
    if i mod 10 = i [B][U]div[/U][/B] 100 then
        writeln(i);
  end;
end.
 
Uh, da, treba celobrojno deljenje, a ne ostatak pri deljenju, moja greska.
 
Jel zna neko kako rešiti ovaj problem:
Formiramo niz 123456789101112131415161718192021..., dopisivajući prirodne brojeve jedan za drugim. Odrediti cifru koja se nalazi na n-tom mestu.
 
Nazad
Vrh Dno