Pascal: školski zadaci

poruka: 546
|
čitano: 169.610
|
moderatori: Lazarus Long, XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
15 godina
protjeran
offline
Re: Pascal: školski zadaci
mbaksa kaže...
  1. Identiraj kod (uvuci redove)! Iz ovog se ništa ne vidi.
  2. Zatvori u begin..end blok sve iza then u if-ovima koji imaju else. Odnosno - iz ovog kako si napisao, nije jasno na koji if se odnosi else. Vjerujem da je zapravo ta neurednost kriva za to da si napisao kod s greškom.
  3. Ne postoji največi broj. Najveći je već druga priča.
  4. Ne kužim što će ti uopće toliko tih if-then-else konstrukcija, s obzirom da najveći i najmanji broj možeš pronaći na daleko jednostavniji način - uvedeš varijable min i max pa ako je neki broj > max, onda max postaje taj broj. Itd.

Napao si me kao da sam stručnjak u programiranju {#}

 

Ovo za č i ć nisam ja kriv, takvo je govorno područje ;)

Za max i min nisam znao, pokušao sam ovo logički riješiti...

http://www.animehr.com
16 godina
moderator
offline
Re: Pascal: školski zadaci
APazinjan kaže...
mbaksa kaže...

Ne kužim što će ti uopće toliko tih if-then-else konstrukcija, s obzirom da najveći i najmanji broj možeš pronaći na daleko jednostavniji način - uvedeš varijable min i max pa ako je neki broj > max, onda max postaje taj broj. Itd.

...

Za max i min nisam znao, pokušao sam ovo logički riješiti...

Ono što si ti pokušao baš i nije bilo "logički". Naime, koliko vidim, zadao si si zadatak pronalaženja najvećeg i najmanjeg broja. Shodno tome, logično bi bilo da prolaziš broj po broj i da pamtiš samo najmanji, tj. najveći broj.

 

Ovo kako si ti napisao bi eventualno imalo smisla ako bi ti trebao ispisati nešto tipa "Najveći broj spremljen je u varijabli c i iznosi toliko-i-toliko". S obzirom da nisi tako ispisivao, stvari su jasne. {#}

 

Ajde sad napiši program kak spada, da vidimo jesi li usvojio to što sam ti napisao.

14 godina
neaktivan
offline
Pascal: školski zadaci

Zanima me kako ću napraviti više uvjeta.

 

Npr. imam zadatak da ako je a=0 i b=0 da ispišem 'nema rješenja'.

 

Znači ne mogu raditi odvojeno,oba uvjeta moraju biti ispunjena.

 

A to je samo jedan dio zadatka.

 

Nadam se da shvaćate moje pitanje,kako da napravim da mi ispiše nešto kada OBA UVJETA MORAJU VRIJEDITI.

Moj PC  
0 0 hvala 0
16 godina
moderator
offline
Re: Pascal: školski zadaci
patch123 kaže...

Zanima me kako ću napraviti više uvjeta.

 

Npr. imam zadatak da ako je a=0 i b=0 da ispišem 'nema rješenja'.

 

Znači ne mogu raditi odvojeno,oba uvjeta moraju biti ispunjena.

Ovo si napisao kao da nikad u životu nisi programirao. Jesi čuo za operator i, and, &?

 

if (a=0 and b=0) then...

 

 

Edit: Ovakvo postavljanje zagrada funkcionira u C++-u, ali ne i u Pascalu, Plahi je napisao kako treba ići u Pascalu.

 

Poruka je uređivana zadnji put sub 19.2.2011 15:51 (mbaksa).
14 godina
neaktivan
offline
Re: Pascal: školski zadaci
mbaksa kaže...
Ovo si napisao kao da nikad u životu nisi programirao. Jesi čuo za operator i, and, &?

 

if (a=0 and b=0) then...

To sam i pokušao ali izbacilo mi je error.

 

Treba li išta dodati ispred if-a ?

 

 

Poruka je uređivana zadnji put sub 19.2.2011 15:18 (patch123).
14 godina
neaktivan
offline
Re: Pascal: školski zadaci
patch123 kaže...
mbaksa kaže...
Ovo si napisao kao da nikad u životu nisi programirao. Jesi čuo za operator i, and, &?

 

if (a=0 and b=0) then...

To sam i pokušao ali izbacilo mi je error.

 

Treba li išta dodati ispred if-a ?

 

 

if (a=0) and (b=0) then.....

Prodajem razne iPhone...za informacije, obratite mi se na pp.
16 godina
moderator
offline
Re: Pascal: školski zadaci
Plahi kaže...  

if (a=0) and (b=0) then.....

Hm... Nisam već dugo nešto konkretno radio u Pascalu/Delphiju... Drugačije funkcionira nego C++, odnosno prioritet operatora je drugačiji - u Pascalu operator and ima prednost pred usporedbom, dok u C++-u prioritet ima usporedba. Znači, u C++-u se može pisati i ovako:

 

if (a==0 && b==0) ...

 

patch123 kaže...
mbaksa kaže...
Ovo si napisao kao da nikad u životu nisi programirao. Jesi čuo za operator i, and, &?

 

if (a=0 and b=0) then...

To sam i pokušao ali izbacilo mi je error.

 

Treba li išta dodati ispred if-a ?

Kad će ljudi već jednom naučiti da im cijela mudrost piše u opisu greške? Mogao si u poruci napisati i koju ti je grešku napisalo pa bi nam vjerojatno odmah sve bilo jasno.

Poruka je uređivana zadnji put sub 19.2.2011 15:48 (mbaksa).
15 godina
offline
Re: Pascal: školski zadaci

Imam jedno pitanje.Bio sam na školskom natjecanju i riješio sam svoj zadatak,ali nije davao sva rješenja točna.Sad sam ga želio riješiti,ali ne znam gdje je greška.Hvala.

 

Zadatak

         U jednom malom gradiću uz more nalazi se autobusni kolodvor. Zaposlenici tog kolodvora su
         jako lijeni i žele cijeli dan piti kavu. 

         Međutim, baš je danas kolodvor pretrpan i na njemu se trenutno nalazi N grupa putnika.
         Članovi svake grupe su jako bliski, pa žele krenuti istovremeno. Zaposlenici su odlučili smanjiti 
         gužvu, pa su svakoj grupi dali redne brojeve po kojima kreću. Dakle, grupe su označene 
         brojevima od 1 do N i to je redoslijed njihovog odlaska. Prvo odlazi prva grupa, pa zatim druga
         itd.

         Zaposlenicima je poznat i raspored dolazaka autobusa na kolodvor, odnosno znaju za koliko
         minuta će doći koji autobus i koliko mjesta ima u njemu. Nakon što dođu, autobusi s kolodvora 
         kreću na vrlo specifičan način. Svaki autobus može krenuti tek nakon što je cijela grupa na redu 
         za odlazak ušla u autobuse.

         Dakle, prva grupa čeka dovoljan broj autobusa u koji može stati. I tek kad svi (iz prve grupe) 
         stanu u x autobusa, svi autobusi s prvom grupom kreću istovremeno. Pretpostavka je da je
         za ulaz putnika potrebna 1 minuta od dolaska, pa će polazak svih x autobusa s prvom grupom  
         biti 1 minutu nakon dolaska posljednjeg od x autobusa.

         U slučaju da u posljednjem od x autobusa ostane mjesta za cijelu sljedeću grupu ili za y 
         sljedećih grupa, onda i tih y sljedećih grupa ulazi u posljednji autobus prve grupe i kreće kad i 
         prva grupa.

         Nakon što prva grupa ode, na red dolazi druga grupa koja odlazi po istim pravilima, nakon nje 
         treća grupa itd.

         Radnike na kolodvoru zanima vrijeme odlaska posljednje grupe, odnosno za koliko minuta će 
         posljednja grupa napustiti autobusni kolodvor, tako da napokon mogu otići na kavu.

         NAPOMENA: Neće se dogoditi slučaj da dva autobusa dolaze istovremeno.

 

 

 

Ulazni podaci:

        U prvome retku se nalazi broj N ( 2 ≤ N ≤ 10 000 ) koji označava broj grupa putnika.

        U drugome retku se nalazi N prirodnih brojeva odvojenih razmakom, koji označavaju broj
        putnika u pojedinoj grupi ( 1 ≤ broj putnika u grupi ≤ 10 000 ). Pa tako prvi broj označava broj 
        ljudi u prvoj grupi, drugi broj označava broj ljudi u drugoj grupi itd...

        U trećem retku nalazi se broj M ( 2 ≤ M ≤ 10 000 ) koji označava broj autobusa.

        U sljedećih M redaka nalaze se po dva broja x i y (1 ≤ x ≤ 100 000 , 1 ≤ y 10 000), od kojih x
        označava vrijeme dolaska autobusa (odnosno za koliko minuta od početnog trenutka dolazi 
        pojedini autobus), a y označava broj mjesta u tom autobusu. Autobusi će biti sortirani po 
        vremenu dolaska.

Izlazni podaci:

        U prvi i jedini redak potrebno je ispisati vrijeme odlaska posljednje grupe. Odnosno broj
        minuta koji će proći dok se ne isprazni cijeli kolodvor.

        Napomena: Rješenje će uvijek postojati, odnosno neće se dogoditi slučaj da nema dovoljno 
        autobusa za sve grupe.

                 Test primjer 1                    Test primjer 2                     Test primjer 3
         Ulaz                             Ulaz                              Ulaz
         3                                5                                 7
         2 5 1                            7 14 2 9 8                        12 3 7 14 15 16 2
         4                                7                                 8
         15 3                             12 9                              17 14
         20 3                             13 3                              24 9
         43 3                             15 3                              49 20
         73 4                             19 3                              103 30
                                          33 20                             140 7
                                          47 14                             172 16
                                          56 30                             180 23
                                                                            223 4

         Izlaz                            Izlaz                             Izlaz
         44                               48                                173

        Objašnjenje prvog test primjera: Prva grupa ulazi u cijeli prvi autobus. Dio druge grupe ulazi
        u drugi autobus i čeka ostatak grupe. Ostatak druge grupe ulazi u treći autobus u kojem ima 
        mjesta i za cijelu treću grupu, pa obje grupe odlaze zajedno.

 

 

program autobusi;var brojputnika,brojsjedala,minute:array[1..10000] of integer;    ukupno,j,i,brojgrupa,brojautobusa:integer;beginreadln(brojgrupa);  //upisuje koliko grupa čeka na kolodvoruukupno:=0;          //koliko ima sveukupno putnika u svim grupamafor i:=1 to brojgrupa do   begin   readln(brojputnika[i]);            //upisuje za svaku grupu koliko ima putnika   ukupno:=ukupno+brojputnika[i];    //zbraja koliko ima sveukupno putnika   end;readln(brojautobusa);                //upisuje broj autobusafor i:=1 to brojautobusa do   begin   readln(minute[i]);                //upisuje koliko minuta od početnog trenutka dolazi pojedini autobus   readln(brojsjedala[i]);           //upisuje koliko svaki autobus ima sjedala   end;i:=1;j:=1;repeatif brojputnika[i] = brojsjedala[j] then   begin   i:=i+1;   j:=j+1;;   end;if brojputnika[i] < brojsjedala[j] then   begin   brojputnika[i+1]:=brojputnika[i+1] -(brojsjedala[j]-brojputnika[i]);   i:=i+1;   j:=j+1;   end;if brojputnika[i] > brojsjedala[j] then   begin   brojputnika[i]:=brojputnika[i]-brojsjedala[j];   j:=j+1;   end;ukupno:=ukupno-brojputnika[i];until ukupno=0;                              //mislim da je tu greškawriteln(minute[j+1]);    //treba dodati 1 minutu jer posljednjem autobusu treba 1 minuta da se svi ukrcaju pa kreće 1 minutu poslije dolaskareadln;end.

Gimnazija Antuna Gustava Matoša
14 godina
neaktivan
offline
Re: Pascal: školski zadaci
Plahi kaže...

if (a=0) and (b=0) then.....

Hvala puno

15 godina
offline
Re: Pascal: školski zadaci
mbaksa kaže...
Plahi kaže...  

if (a=0) and (b=0) then.....


 

 

patch123 kaže...

 

Treba li išta dodati ispred if-a ?

Kad će ljudi već jednom naučiti da im cijela mudrost piše u opisu greške? Mogao si u poruci napisati i koju ti je grešku napisalo pa bi nam vjerojatno odmah sve bilo jasno.

 

Vjerojatno nije pokazao program grešku kad ga je izkompajlirao.

Gimnazija Antuna Gustava Matoša
16 godina
moderator
offline
Re: Pascal: školski zadaci
emerik kaže...
mbaksa kaže...
Plahi kaže...  

if (a=0) and (b=0) then.....


 

 

patch123 kaže...

 

Treba li išta dodati ispred if-a ?

Kad će ljudi već jednom naučiti da im cijela mudrost piše u opisu greške? Mogao si u poruci napisati i koju ti je grešku napisalo pa bi nam vjerojatno odmah sve bilo jasno.

 

Vjerojatno nije pokazao program grešku kad ga je izkompajlirao.

Pa to je sintaktička greška! Kompajleri za Pascal ne mogu kompajlirati program ako sadrži sintaktičke greške.

15 godina
offline
Re: Pascal: školski zadaci
Da,ali on kaže da mu ispiše 0,znači da ga je kompajlirao.
Gimnazija Antuna Gustava Matoša
16 godina
moderator
offline
Re: Pascal: školski zadaci
emerik kaže...
Da,ali on kaže da mu ispiše 0,znači da ga je kompajlirao.

Malo si neoprezno čitao njegove (patch123) poruke. Ni ispiše mu 0, niti je program kompajlirao. Valjda si zamijenio forumaše.

15 godina
offline
Re: Pascal: školski zadaci

Ja sam govorio o aPazinjanin

Gimnazija Antuna Gustava Matoša
15 godina
protjeran
offline
Pascal: školski zadaci

Ne ispiše mi nula nego ništa, prazan red :P

http://www.animehr.com
Moj PC  
0 0 hvala 0
16 godina
moderator
offline
Re: Pascal: školski zadaci
emerik kaže...

Ja sam govorio o aPazinjanin

A pogledaj koga i što si citirao!  {#}

15 godina
offline
Re: Pascal: školski zadaci

OK,onda moja greška,možete mi pomoći s problemom gore?

Gimnazija Antuna Gustava Matoša
16 godina
moderator
offline
Re: Pascal: školski zadaci

Na prvu kompilaciju ti mogu reći da si zeznuo nešto s indeksima. Naime, FPC mi baca Error 201 iliti Range check error. Za ostalo se ipak treba jače zadubiti u kod...

15 godina
neaktivan
offline
Pascal: školski zadaci

Pozdrav!

Imam jedan zadatak za rjesiti, a ne znam kako poceti i uopce rjesiti zadatak.

 

Dakle ovako;

 

----Treba napisati program u Pascalu koji učitava visinu svih učenika jednog razreda i računa prosječnu visinu učenika.

Također treba izračunati koliko učenika ima visinu veću od 175 cm.

Oba rezultata treba i ispisati. Treba voditi računa da je sve lijepo i pregledno.

 

Napravite tri programska rješenja ovog zadatka, tako da primjenite sve petlje (for, while i repeat), a

zadatak proširite tako da dođu do izražaja karakteristične osobine svake petlje. Ispred programa napišite svoj tekst zadatka. Program testirajte sa priozvoljnim podacima za sva tri programa paralelno.

 

Potrebno je napraviti i blok dijagram te testiranje u Wordu!

 

 

Pa ako netko ima vremena, bilo bi mi od velike pomoci, jer stvarno ne znam rjesavati ovakve zadatke, a blizu mene nema bas koji znaju programirati.

Hvala Vam unaprijed!

 

 

Intel Core i7,Zotac GeForce GTX 295 ,6 GB of RAM,WD Caviar Black 1TB
Moj PC  
0 0 hvala 0
15 godina
offline
Re: Pascal: školski zadaci

Evo ti program sa for petljom,drugo mi se neda.Ajde,daj sad sam dalje.

 

program forum;var x:array[1..100] of integer;    n,bv,i,s:integer;    pv:real;beginwriteln('Upisi broj ucenika');readln(n);writeln('Upisi visine ucenika');s:=0;for i:=1 to n dobeginreadln(x[i]);s:=s+x[i];end;pv:=s/n;bv:=0;for i:=1 to n do   if x[i] > 175 then bv:=bv+1;writeln('Prosječna visina učenika je ',pv:6:2,' ,a učenika viših od 175 cm ima ',bv);readln;end.

Gimnazija Antuna Gustava Matoša
13 godina
neaktivan
offline
Pascal: školski zadaci

Resenje Autobusi!

 

program autobusi;
  var brojputnika,brojsjedala,minute:array[1..10000] of integer;
     j,i,brojgrupa,brojautobusa:integer;
  begin
   readln(brojgrupa);            {upisuje koliko grupa ceka na kolodvoru}
   for i:=1 to brojgrupa do
     read(brojputnika[i]);
   readln(brojautobusa);     {upisuje broj autobusa}
   for i:=1 to brojautobusa do
     readln(minute[i],brojsjedala[i]); 
    {upisuje koliko minuta od pocetnog trenutka dolazi pojedini autobus i koliko svaki autobus ima sjedala}
   i:=1;j:=1;
   repeat
     if brojputnika[i]<=brojsjedala[j] then
       begin
         while (i<=brojgrupa)and (brojputnika[i]<=brojsjedala[j]) do
           begin
            dec(brojsjedala[j],brojputnika[i]);
            inc(i);
            if brojsjedala[j]=0 then break;
           end;
          if i<=brojgrupa then inc(j);
       end
     else
       begin
         while brojputnika[i]>brojsjedala[j] do
           begin
            dec(brojputnika[i],brojsjedala[j]);
            inc(j);
           end;
       end;
  until i>brojgrupa;
  writeln(minute[j]+1);
end.

 
1 0 hvala 1
13 godina
neaktivan
offline
Pascal: školski zadaci

Visina ucenika sa Repeat ...Until

 

program forum;
 var x:array[1..100] of integer;
     n,bv,i,s:integer;
     pv:real;
     begin
      writeln('Upisi broj ucenika');
      readln(n);
      writeln('Upisi visine ucenika');
      s:=0;
      i:=1;
      repeat
       readln(x[i]);
       s:=s+x[i];
       i:=i+1;
      until i>n;
      pv:=s/n;
      bv:=0;
      i:=1;
      repeat
       if x[i] > 175 then
                 bv:=bv+1;
       i:=i+1;
      until i>n;
      writeln('Prosjecna visina ucenika je ',pv:6:2,' ,a ucenika visih od 175 cm ima ',bv);
      readln;
end.

 
0 0 hvala 0
15 godina
offline
Re: Pascal: školski zadaci

E,što znači naredba dec?

Gimnazija Antuna Gustava Matoša
13 godina
neaktivan
offline
Re: Pascal: školski zadaci

Oduzmi drugi operand od prvog

Dec(a,b) je isto kao a:=a-b;

16 godina
moderator
offline
Re: Pascal: školski zadaci
flin kaže...

Oduzmi drugi operand od prvog

Dec(a,b) je isto kao a:=a-b;

Može se koristiti i bez drugog operanda - tad se podrazumijeva da je drugi operand 1.

 

Dakle, Dec(a) je isto što i Dec(a, 1). To je ekvivalentno u C-like jezicima operaciji a--. A Dec(a, b) je ekvivalentan a-=b; I sve to je analogno Inc(a) za uvećanje za 1 (iliti a++ u C-like jezicima), odnosno Inc(a, b) je ekvivalentno a+=b;

 

Dec - decrement - znači umanji.

Inc - increment - uvećaj.

15 godina
neaktivan
offline
Re: Pascal: školski zadaci
emerik kaže...

Evo ti program sa for petljom,drugo mi se neda.Ajde,daj sad sam dalje.

Aj please i ostale. Ne znam kako dalje... Jel tocno ovo sa repeat until od drugog forumasa?

I dva pitanja...

Što znaci x:array [1..100] of integer? Mozes li bez toga, to nismo jos radili.

I ovo readln (x[i]); isto tako. Moze li i bez toga?

 

 

Intel Core i7,Zotac GeForce GTX 295 ,6 GB of RAM,WD Caviar Black 1TB
Poruka je uređivana zadnji put uto 1.3.2011 17:01 (DmL).
15 godina
offline
Re: Pascal: školski zadaci

To su nizovi brojeva.

Gimnazija Antuna Gustava Matoša
14 godina
neaktivan
offline
Re: Pascal: školski zadaci
DmL kaže...
emerik kaže...

Evo ti program sa for petljom,drugo mi se neda.Ajde,daj sad sam dalje.

Aj please i ostale. Ne znam kako dalje... Jel tocno ovo sa repeat until od drugog forumasa?

I dva pitanja...

Što znaci x:array [1..100] of integer? Mozes li bez toga, to nismo jos radili.

I ovo readln (x[i]); isto tako. Moze li i bez toga?

 

 

x:array[1..100] of integer

znači da možeš učitati niz koji sadrži 100 brojeva,

a readln(x[i]) znači da čita upisane brojeve i dodjeljuje im indekse.

 

npr:

for i:=1 to 10 do

 readln(x[i])

 

znači da ćeš ti upisati 10 brojeva i tih 10 brojeva će poprimiti indekse od 1 do 10.

 

Ako ti nije jasno, javi mi se na pp, pa ću ti detaljnije objasniti. {#}

Prodajem razne iPhone...za informacije, obratite mi se na pp.
16 godina
moderator
offline
Re: Pascal: školski zadaci
DmL kaže...
Što znaci x:array [1..100] of integer? Mozes li bez toga, to nismo jos radili.

I ovo readln (x[i]); isto tako. Moze li i bez toga?

Može. Nigdje ne piše da se treba koristiti polje. Polja zapravo ni ne trebaju. Znači, petlja ti može izgledati i ovako nekako:

 

for i := 1 to n dobegin  ReadLn(VisinaTrenutnogUcenika);  VisinaSvihUcenika := VisinaSvihUcenika + VisinaTrenutnogUcenika;  if VisinaTrenutnogUcenika > 175 then BrojUcenikaVisihOd175cm := BrojUcenikaVisihOd175cm + 1;end;

 

Ili, ljepše zapisano korištenjem funkcije Inc:

for i := 1 to n dobegin  ReadLn(VisinaTrenutnogUcenika);  Inc(VisinaSvihUcenika, VisinaTrenutnogUcenika);  if VisinaTrenutnogUcenika > 175 then Inc(BrojUcenikaVisihOd175cm);end;

15 godina
neaktivan
offline
Pascal: školski zadaci

Evo napravio sam to tvojem, ali bez (x[i]) i array.

Samo ne izačunava mi broj ucenika vecih od 175 kako treba.

 

program dimilcia;

var

     broj_uc,visi_od_175,i:integer;

     prosjecna_vis,visina_uc,suma:real;

begin

writeln('Upisi broj ucenika');

readln(broj_uc);

writeln('Upisite visine ucenika');

suma:=0;

for i:=1 to broj_uc do

begin

readln(visina_uc);

suma:=suma+visina_uc;

end;

prosjecna_vis:=suma/broj_uc;

visi_od_175:=0;

for i:=1 to broj_uc do

  if visina_uc > 175 then

  visi_od_175:=visi_od_175+1;

  writeln('Prosjecna visina ucenika je ',prosjecna_vis:6:2,', a ucenika visih od 175 cm ima ',visi_od_175);

 readln;

  end.

 

Intel Core i7,Zotac GeForce GTX 295 ,6 GB of RAM,WD Caviar Black 1TB
Moj PC  
0 0 hvala 0
Nova poruka
E-mail:
Lozinka:
 
vrh stranice