Pascal: školski zadaci

poruka: 546
|
čitano: 194.569
|
moderatori: Lazarus Long, XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
17 godina
moderator
offline
Re: Pascal: školski zadaci
DmL kaže...

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

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

 

Nisi napravio po mojem. Bilo bi čudno da ti, ovako kako si napravio, "izračunava" broj učenika viših od 175 cm kako treba.

 

Kod pravilno indentiraj - uključujući i razmake s lijeve strane i vertikalne razmake.

 

DmL kaže...

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.

Reci sad - koliko ti to ima smisla? Koja je vrijednost varijable visina_uc tu gdje sam označio žutim markerom? UVIJEK je jednaka zadnjoj vrijednosti koju je korisnik unio kod unosa podataka. Znači, vrijednost koja je ostala iz prethodne petlje.

 

Shvaćaš što si napravio? Imaš dvije petlje, u prvoj unosiš podatke za svakog pojedinog učenika (ali ih ne spremaš), a u drugoj petlji za visinu "trenutnog učenika" uzimaš zadnju unesenu visinu učenika! Pa ti onda ispada ili da su svi učenici viši od 175 cm ili da nijedan nije viši. Je li tako? Ne moram ni kompajlirati tvoj program da vidim da to ne valja. Ja sam koristio jednu petlju. Ako hoćeš bez polja, onda moraš sve imati u jednoj petlji.

 

Poruka je uređivana zadnji put uto 1.3.2011 19:09 (mbaksa).
14 godina
neaktivan
offline
Re: Pascal: školski zadaci

Naravno da ne radi dobro kad sa naredbom if ispitujes samo jednu vrednost, visina_uc, nemas niz.

 Bez niza resenje izgleda ovako.

 

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; 

    visi_od_175:=0;
    for i:=1 to broj_uc do
     begin
        readln(visina_uc);
        suma:=suma+visina_uc;

       if visina_uc > 175 then
             visi_od_175:=visi_od_175+1;
     end;
    prosjecna_vis:=suma/broj_uc;
    writeln('Prosjecna visina ucenika je ',prosjecna_vis:6:2,', a ucenika visih od 175 cm ima ',visi_od_175);
    readln;
end.

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

Naravno da ne radi dobro kad sa naredbom if ispitujes samo jednu vrednost, visina_uc, nemas niz.

 Bez niza resenje izgleda ovako.

Već prije sam mu napisao kako treba izgledati petlja - trebao si ga ostaviti neka sam još malo pokuša ispravno primijeniti moj primjer, pa ako ne uspije, onda mu dati čitav kod. {#}

14 godina
neaktivan
offline
Pascal: školski zadaci

Za Mbaksa

 

Dobro objasnjeno, svaka cast!

 

Ja nisam tako strpljiv sa objasnjavanjem!

 

 

 
0 0 hvala 0
14 godina
neaktivan
offline
Re: Pascal: školski zadaci

Izvini Mbaksa, samo sam zeleo da pomognem! :) A i ne volim da se muce!

Pozz!

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

Izvini Mbaksa, samo sam zeleo da pomognem! :) A i ne volim da se muce!

Pozz!

Ma ne brini. Ja ga zapravo pokušavam navesti da sam zaključi ili barem shvati gdje je greška i da pokuša sam dokučiti kako riješiti problem. Tako će bolje naučiti nego da dobi rješenje na tacni.

16 godina
neaktivan
offline
Pascal: školski zadaci

Evo ga ovaj sa repeat, samo bez niza. Sto je tu krivo?

program dimilica;

var broj_uc,i,suma,visi_od_175,visina_uc:integer;

     prosjecna_vis:real;

 

begin

writeln('Upisite broj ucenika');

readln(broj_uc);

writeln('Upisite visine ucenika');

suma:=0;

i:=1;

     repeat

     readln(visina_uc);

     suma:=suma+visina_uc;

     i:=i+1;

     until i > broj_uc;

     prosjecna_vis:=suma/broj_uc;

     visi_od_175:=0;

     i:=1;

     repeat

     if visina_uc > 175 then

     visi_od_175:=visi_od_175+1;

     i:=i+1; 

     until i > broj_uc;

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

readln;

end.

 

Intel Core i7,Zotac GeForce GTX 295 ,6 GB of RAM,WD Caviar Black 1TB
Poruka je uređivana zadnji put sri 2.3.2011 18:52 (DmL).
Moj PC  
0 0 hvala 0
16 godina
offline
Re: Pascal: školski zadaci

Broj učenika koji su viši od 175 treba inicijalizirati izvan for petlje.Tebi svaki put kad dođe u for petlju,taj broj postane nula.

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

Broj učenika koji su viši od 175 treba inicijalizirati izvan for petlje.Tebi svaki put kad dođe u for petlju,taj broj postane nula.

Izvan repeat petlje?

Aj popravi pa postaj.

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

Krivo sam se izrazio,evo s drugim imenima varijabli.

 

program forum;var i,x,n,bv,s:integer;    pv:real;beginwriteln('Upisi broj ucenika');readln(n);writeln('Upisi visine ucenika');s:=0;bv:=0;i:=1;repeatreadln(x);s:=s+x;if x > 175 then bv:=bv+1;i:=i+1;until i > n;pv:=s/n;writeln('Prosjecna visina je ',pv:6:2,'a visih id 175 ima ',bv);readln;end.

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

I jos sa while mi treba, ako ti se da.

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

Sutra pišem kemiju pa malo učim,ako budem imal vremena stavim.

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

Ali,evo ti :D  Ubuduće radiš sam,prvi put ti pomažemo

 

program forum;var x,n,bv,i,s:integer;    pv:real;beginwriteln('Upisi broj ucenika');readln(n);writeln('Upisi visine ucenika');s:=0;bv:=0;i:=1;while i <= n dobeginreadln(x);s:=s+x;if x > 175 then bv:=bv+1;i:=i+1;end;pv:=s/n;writeln('Brosjecna visina je ',pv:6:2,' a ucenika visih od 175 ima ',bv);readln;end.

Gimnazija Antuna Gustava Matoša
Poruka je uređivana zadnji put sri 2.3.2011 19:25 (emerik).
16 godina
neaktivan
offline
Pascal: školski zadaci

Znaci ovako, napravio sam program sa tri petlje...

 

Piše i "zadatak proširite tako da dođu do izražaja karakteristične osobine svake petlje."

 

Dakle, evo jos jedanput zadatak u potpunosti:

 

 

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 izračunata rezultata treba i ispisati. Vodite računa da je sve lijepo i pregledno.

Napravite tri programska rješenja ovog zadatka, tako da primjenite sve petlje, 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.

 

 

Kako bih jos mogao prosiriti taj zadatak, a da "dođu do izražaja karakteristične osobine svake petlje."

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

Ne znam što je mislila pri tome,a i to su gluposti kaj vam onda govori.

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

I jos samo tri blok dijagrama za svaki program su mi ostala i to je to! moze li netko napraviti spomenute?

Intel Core i7,Zotac GeForce GTX 295 ,6 GB of RAM,WD Caviar Black 1TB
Moj PC  
0 0 hvala 0
17 godina
moderator
offline
Re: Pascal: školski zadaci
emerik kaže...

Ne znam što je mislila pri tome,a i to su gluposti kaj vam onda govori.

A nisu baš gluposti. Recimo, kod while ili repeat-until petlje do izražaja bi došle karakteristične osobine da se ne unosi broj učenika u razredu, nego da se unose podaci sve dok se ne unese recimo nula, što bi značilo da više nema učenika za koje treba unijeti podatke.

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

Ne znam što je mislila pri tome,a i to su gluposti kaj vam onda govori.

A nisu baš gluposti. Recimo, kod while ili repeat-until petlje do izražaja bi došle karakteristične osobine da se ne unosi broj učenika u razredu, nego da se unose podaci sve dok se ne unese recimo nula, što bi značilo da više nema učenika za koje treba unijeti podatke.

Kako bi onda glasio ovaj program sa tom karakterističnom osobinom?

 

 

 

program zadatak4_while;

uses crt;

var visina_uc, broj_uc, visi_od_175, i, suma: integer;

  prosjecna_vis: real;

begin

  clrscr;

  TextColor(Green);

  TextBackground(Black);

  writeln('Upisi broj ucenika');

  readln(broj_uc);

  writeln('Upisi visine ucenika');

  suma := 0;

  visi_od_175 := 0;

  i := 1;

  while i <= broj_uc do

  begin

   readln(visina_uc);

   suma := suma + visina_uc;

   if visina_uc > 175 then

    visi_od_175 := visi_od_175 + 1;

   i := i + 1;

  end;

  prosjecna_vis := suma / broj_uc;

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

  readln;

end.

 

I napravio sam blok dijagram, samo ne znma gdje idu strjelice u petlji na odgovore da i ne.

IPAK link na sliku...

 

Intel Core i7,Zotac GeForce GTX 295 ,6 GB of RAM,WD Caviar Black 1TB
Poruka je uređivana zadnji put pet 4.3.2011 15:21 (DmL).
17 godina
moderator
offline
Re: Pascal: školski zadaci
DmL kaže...

Kako bi onda glasio ovaj program sa tom karakterističnom osobinom?

Ovo što si napisao je praktički isto kao i for petlja. Petlja se treba vrtjeti dok je visina veća od 0.

 

 

ReadLn(Visina);

 

while Visina > 0 do

begin

  --- pribrajanje

  --- ako je Visina > 175 pribrajanje za takve

  ...

  ReadLn(Visina);

end.

16 godina
neaktivan
offline
Pascal: školski zadaci

1.Pogledaj jos ovaj blok-dijagram.

Dal' je on isti za otprije napisani while i repeat program?

http://www.mediafire.com/?8ny115fz568yuu0

 

2.I kako bi rjesio onaj problem, kada ja upisem broj ucenika: 4, ako upisem jednu visinu 0 on svejedno računa prosjek... To treba u if petlji ili??

 

3. Mozes li napisati kako da prosirim zadatke sa for, while i repeat petljom tako da dođu do izražaja karatkreristicne petlje?

Ovako pise: "zadatak proširite tako da dođu do izražaja karakteristične osobine svake petlje. Ispred programa napišite svoj tekst zadatka. "

 

Hvala ti na trudu! Moram do danas to predati.....

Intel Core i7,Zotac GeForce GTX 295 ,6 GB of RAM,WD Caviar Black 1TB
Poruka je uređivana zadnji put pet 4.3.2011 17:27 (DmL).
Moj PC  
0 0 hvala 0
17 godina
moderator
offline
Re: Pascal: školski zadaci

WHILE PETLJA

program drugi;uses crt;var     broj_uc, visina_uc: Integer;    visi_od_175, i, suma: Integer;    prosjecna_vis: real;begin    clrscr;    TextColor(Green);    TextBackground(Black);   
    writeln(‘Upisujte visine ucenika jednog razreda (0 za kraj):’);   
    suma := 0;    broj_uc := 0;    visi_od_175 := 0;   
    ReadLn(visina_uc);      
    while visina_uc > 0 do    begin       suma := suma + visina_uc;       if visina_uc > 175 then visi_od_175 := visi_od_175 + 1;       ReadLn(visina_uc);    end;   
    if broj_uc > 0 then    begin       prosjecna_vis := suma / broj_uc;       GoToXY(1,24);       writeln(‘-Prosjecna visina je ‘, prosjecna_vis: 6:2, ‘ a ucenika visih od 175 ima ‘, visi_od_175);       readln;    end     else WriteLn('Niste upisali visinu ni jednog ucenika'.);end.

17 godina
moderator
offline
Re: Pascal: školski zadaci

REPEAT PETLJA

program treci;uses crt;var     broj_uc,visina_uc: Integer;    i, visi_od_175, suma: integer;    prosjecna_vis: real;begin    clrscr;    TextColor(Green);    TextBackground(Black);    suma := 0;    visi_od_175 := 0;
    WriteLn(‘Upisujte visine ucenika jednog razreda (0 za kraj):’);   
    repeat             readln(visina_uc);      
       if (visina_uc) > 0 then       begin          broj_uc := broj_uc + 1;          suma := suma + visina_uc;         
          if visina_uc > 175 then    visi_od_175 := visi_od_175 + 1;       end;    until visina_uc = 0;
    prosjecna_vis := suma / broj_uc;    GoToXY(1,24);    writeln(‘-Prosjecna visina ucenika je ‘, prosjecna_vis: 6: 2, ‘ a ucenika visih od 175 ima ‘, visi_od_175);    readln;end.

 

 

Slična fora kao s while petljom. Uopće nisi obraćao pažnju na ono što sam ti napisao prije. Pazi - petlja for se koristi kad znaš koliko puta se ta petlja mora izvršiti - znači, ako prvo tražiš da se upiše broj učenika, onda znaš da se ta petlja mora izvršiti upravo toliki broj. Petlje repeat i while se koriste kad ne znaš koliko puta se petlja mora izvršiti - razlika između njih je da se kod while uvjet testira na na početku petlje, a kod repeat na kraju petlje (i u tome da istinita vrijednost omogućava ulazak u while petlju, dok istinita vrijednost u repeat petlji prekida izvođenje repeat petlje).

 

 

 

PS zašto dijagram toka ne crtaš u nekom vektorskom grafičkom program u ili u nekom specijaliziranom programu, kad je očito da se ne znaš služiti Wordom (a i lakše ti je to napraviti u specijalziranom programu)? Recimo ovim besplatnim: http://dia-installer.de/index.html.en

Poruka je uređivana zadnji put pet 4.3.2011 22:19 (mbaksa).
16 godina
offline
Re: Pascal: školski zadaci
mbaksa kaže...

 

ReadLn(Visina);

 

while Visina > 0 do

begin

  --- pribrajanje

  --- ako je Visina > 175 pribrajanje za takve

  ...

  ReadLn(Visina);

end.

 mala (možda korisna) primjedba, nije poželjno koristiti varijablu 'visina' u ovom slučaju kao kontrolu uvjeta petlje, već time jer naziv i funkcija služi za visinu koristimo za to (visinu).

Dodatni problem je što je poželjno inicijalizirati varijablu prije testiranja while.. ako je =null? ako je =0? .. progaram iscuri. jer..

mbaksa kaže...

.

 ..

 

Slična fora kao s while petljom. Uopće nisi obraćao pažnju na ono što sam ti napisao prije. Pazi - petlja for se koristi kad znaš koliko puta se ta petlja mora izvršiti - znači, ako prvo tražiš da se upiše broj učenika, onda znaš da se ta petlja mora izvršiti upravo toliki broj. Petlje repeat i while se koriste kad ne znaš koliko puta se petlja mora izvršiti - razlika između njih je da se kod while uvjet testira na na početku petlje, a kod repeat na kraju petlje (i u tome da istinita vrijednost omogućava ulazak u while petlju, dok istinita vrijednost u repeat petlji prekida izvođenje repeat petlje).

 upravo te razlike između for-next, do-loop, until ili while, uz mogućnost da bude testirana (kriterij) na vrhu (ulazu) ili na dnu (izlazu), kao i mogućnost da se kod unutar pelje nemora ni jednom izvršiti.

Treba definirati logično, npr ESC key varijablu (F1-help, F2...), nazvati je u skladu s dozvoljenim i upravo tako izlaziti, pogotovo što se takve stvari definiraju kroz konstante, kao i mogućnost da neka petlja bude pozivana kao procedura-funkcija, prosljeđivanjem parametara s raznih dijelova koda.

Treba ih učiti dok su mladi.. {#}

 

C64/TurboModul-OpenSourceProject.org.cn.部分作品为网上收集整理,供开源爱好者学习使用
Poruka je uređivana zadnji put pet 4.3.2011 22:27 (ihush).
17 godina
moderator
offline
Re: Pascal: školski zadaci
ihush kaže...
mbaksa kaže...

 

ReadLn(Visina);

 

while Visina > 0 do

begin

  --- pribrajanje

  --- ako je Visina > 175 pribrajanje za takve

  ...

  ReadLn(Visina);

end.

mala (možda korisna) primjedba, nije poželjno koristiti varijablu 'visina' u ovom slučaju kao kontrolu uvjeta petlje, već time jer naziv i funkcija služi za visinu koristimo za to (visinu).

S obzirom da ti je "konzolni unos" (upišeš vrijednost i stisneš Enter) praktički jedina mogućnost unosa vrijednosti bez nekog posebnog kompliciranja, onda ne da korištenje istog unosa za dvije stvari nije poželjno, nego je - poželjno. {#} Ako ne želiš komplicirati, naravno. Što će korisnik recimo iza svakog unosa broja trebati pisati 'd' za nastavak ili 'n' za prekid unosa? To je neučinkovito. Zamisli da moraš upisati 20 brojeva - osim unosa tih dvadeset brojeva, morat ćeš kucati 20 puta i na d/n.

 

One stvari koje si ti napisao (Treba definirati logično, npr ESC key varijablu (F1-help, F2...), nazvati je u skladu s dozvoljenim i upravo tako izlazit...) postoje samo u nekom idealnom svijetu. {#} Definitivno ne u Pascalu kao takvom. Napravi radi samoga sebe programčić koji će poštivati ovo o čemu govoriš, a da bude relativno jednostavan za shvatiti početniku - pa ćeš vidjeti u čemu je riječ. Ako dosad nisi radio u Pascalu ili nisi u njemu pokušao napraviti takve stvari, onda mi je jasan tvoj komentar - govoriš o tome kako bi trebalo biti (i u tome se slažem s tobom), a ne kako jest.

 

ihush kaže...
Dodatni problem je što je poželjno inicijalizirati varijablu prije testiranja while.. ako je =null? ako je =0? .. progaram iscuri. jer..

Recimo ovo je komentar koji mi govori da ti je Pascal veća ili manja nepoznanica. Pascal nije objektno/referencni jezik poput C#, Jave ili JavaScripta, tako da varijable UVIJEK imaju neku vrijednost - jedino pokazivač može pokazivati na null (tj. nil u Pascalu). A to znači da Integer može biti samo neki broj. Ujedno, za razliku od C/C++-a, Pascal automatski ima inicijalizirane varijable na nulu (znači, ako imašvar Visina: Integer; - ako toj varijabli ne dodijeliš vrijednost, njena vrijednost je 0).

 

Glede konkretne kritike - čak i kad Pascal ne bi varijable sam inicijalizirao na 0, kritika ti ne stoji. Naime, funkcija ReadLn te neće pustiti tako dugo dok ne upišeš neku vrijednost. Dakle, u primjeru:

 

ReadLn(Visina);

 

while Visina > 0 do

 

inicijaliziranje varijable Visina bilo bi besmisleno, jer će odmah nakon toga tu varijablu "inicijalizirati" korisnik, upisivanjem visine prvog učenika.

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

Recimo ovo je komentar koji mi govori da ti je Pascal veća ili manja nepoznanica.

{#}- uh, (nisam ni sumnjao), imaš pravo. Jedino je zabrinjavajuče što je tako očigledno. (više od 20god ga nevidjeh.. i to samo kao dodatak-loader zbog rezolucije i alociranja memorije). {#}

Ipak, zar nije testiranje na vrhu u ovom slučaju.. = nijedno izvršavanje? Tad preskače begin-end? ..

-pa ipak provjerom (jer si kronično u pravu), vidim i odgovor. Prije petlje imaš jedan ReadLn(Visina); -dok sam ja pratio i razmišljao samo o onom unutar petlje...

No naći ću već nešto gdje nisi 100% točan.{#}

C64/TurboModul-OpenSourceProject.org.cn.部分作品为网上收集整理,供开源爱好者学习使用
15 godina
protjeran
offline
Pascal: školski zadaci

Pozdrav ljudi!

Trebam aplikaciju za računanje relativne atomske mase (Ar) i mase atoma (ma).

S time da je jedan Dalton = 1.66.

Znači ako trebam relativnu masu dijeli se masa atoma sa daltonom.

Ako pak trebam relativnu atomsku masu množi se relativna atomska masa sa daltonom.

E sad, pošto mi Pascal nikad nije previše išao, a u C++ mi nejde dijeljenje zamolio bih vas da mi ovo ^ napravite.

Hvala!

Socijalizam, nacionalizam i antiimeperijalizam. To nam treba.
Moj PC  
0 0 hvala 0
16 godina
offline
Re: Pascal: školski zadaci

Dalton je 1.66 *10-27?

Gimnazija Antuna Gustava Matoša
15 godina
protjeran
offline
Re: Pascal: školski zadaci
emerik kaže...

Dalton je 1.66 *10-27?

Da, eto vidiš zašto ja nisam znao.

 

Socijalizam, nacionalizam i antiimeperijalizam. To nam treba.
16 godina
offline
Re: Pascal: školski zadaci

Ja bi ti napisao,ali ne znam kako se upisuju potencije.Al.možda nešto probam.za pola sata dobiješ.Daj jedan primjer da vidim da li dobijem dobar rezultat.E,se upisuje masa atoma u gramima ili kilogramima?

Gimnazija Antuna Gustava Matoša
Poruka je uređivana zadnji put čet 10.3.2011 18:10 (emerik).
16 godina
offline
Re: Pascal: školski zadaci

E,gore si nešto krivo napisao,pogledaj,nešto si pobrkao.EDIT:riješio sam,daj mail da ti pošaljem baš exe datoteku jer ti kod ništa ne znači.Kad ti piše E+027 npr. to ti znači nešto*1027

Gimnazija Antuna Gustava Matoša
Poruka je uređivana zadnji put čet 10.3.2011 18:30 (emerik).
Nova poruka
E-mail:
Lozinka:
 
vrh stranice