Pascal: školski zadaci

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

Ma za sve se traže znakovi(ma eno u kodu što sam postavio na forum imaš šta se sve traži) osim za suglasnike(tu se podrazumijevaju samo slova naravno). Znači jednostavno je problem u zadatku i datoteci. Jer kod je ispravan.

Molit ću lijepo - kako točno glasi zadatak?

13 godina
offline
Pascal: školski zadaci

Evogac, ma program mi sad bez problema radi to nije problem.

 

grupa B

ZADATAK za ocjenu - Rad sa tekstualnim datotekama (za 3R. mat.gimnazije)

Napisi program koji cita tekstualnu datoteku dattekb.txt

i ispisati slijece podatke u izlaznu datoteku pod nazivom izlazb:

a) broj redaka u ulaznoj tekstualnoj datoteci dattekb.txt

b) broj suglasnika u ulaznoj tekstualnoj datoteci dattekb.txt

c) broj razmaka (space znak) u ulaznoj tekstualnoj datoteci dattekb.txt

d) broj redaka koji imaju neparni broj znakova u retku ulazne datoteke dattekb.txt

e) ukupan broj znakova u ulaznoj datoteci dattekb.txt (u znakove ulaze i razmaci)

 

Edit: Ma ja sam siguran da on ne zna za te ascii kodove jer bi inače rekao gdje smo pogriješili, ali sve ćemo saznati za koji dan. Objasniti ću mu i pitati za te znakove iz proširene ascii tablice i pokazati mu preko pascala i notepada gdje je došlo do greške.

 

Sve u svemu Hvala

Poruka je uređivana zadnji put čet 19.4.2012 23:23 (fighterZu).
Moj PC  
0 0 hvala 0
16 godina
moderator
online
Re: Pascal: školski zadaci

Postoji i jednostavan način na koji to možeš riješiti - obrišeš ta prva tri žblj znaka. {#} Svakako kaži profesoru, otvori datoteku hex. editorom i pokaži mu screenshot.

 

Stvar je u tome da tvoj problem nema veze s programiranjem kao takvim, nego s preciznosti zadavanja zadatka.

13 godina
offline
Pascal: školski zadaci

Da mogao sam obrisati ta tri znaka, ali problem sam uočio kasnije jer smo zadatak rješavali na satu i nismo baš imali vremena. A nismo nikada radili uvjete za te ascii pa ni kad smo vježbali. Nisu ni bili potrebni jer nismo radili sa takvim datotekama. Samo eto kako su se ta tri znaka pojavila u datoteci. Da li ima veze sa tim preko čega je ubacivao sadržaj ili je taj zadatak odnekud kopirao tko će znati ili je došlo do neke greške.

Poruka je uređivana zadnji put čet 19.4.2012 23:33 (fighterZu).
Moj PC  
0 0 hvala 0
16 godina
moderator
online
Re: Pascal: školski zadaci
fighterZu kaže...

Da mogao sam obrisati ta tri znaka, ali problem sam uočio kasnije jer smo zadatak rješavali na satu i nismo baš imali vremena. A nismo nikada radili uvjete za te ascii.

A gle - profesor je zeznuo stvar. Ili je morao prihvatiti vaša rješenja koja su ubrajala sve znakove (jer i oni žblj znakovi su znakovi), ili je morao reći da u obzir dolaze samo određeni znakovi (i precizirati koji - oni koji se vide u Notepadu baš i nije preciziranje - mogao je reći slova, brojevi, razmak, interpunkcijski znakovi ili pak ASCII vrijednosti manje od 128 ili štoveć).

13 godina
offline
Pascal: školski zadaci

Što se tiče prošlog zadatka sve je rješeno, i na kraju je sve odlično ispalo, a drugačije nije ni moglo.

 

A sad da krenem na nešto drugo:

Ovako radim na vecem programu, tj.bazi podataka ucenika. Javlja mi se stalno jedan iritantan problem. Kad otvorim novu datoteku(tj.novi razred) i upišem nove podatke - učenike(ime,prezime,prosjek ocjena) nikada ne želi prikazati zadnji slog, prilikom izvršavanja drugih procedura. Ali kad ponovo pokrenem program (izašem iz programskog okruženja i ponovo uđem) broj slogova se uredno prikazuje.

 

Edit: a trebao bih pomoc i oko ove procedure i mislim da je ona glavni problem jer se javlja u svim ostalim(znaci treba prilikom svakog dodavnja sloga, pregleda, itd... otvoriti postojeću datoteku/razred i kasnije raditi s njom). Odnosno npr. želim dodati slog i ''U koji razred želite dodati novog učenika'' i sad ta procedura i kasnije klasika sa dodavanjem slogova na kraj datoeke, i spomenuo sam da imam problema več ranije sa prikazom zadnje sloga. Da li je kod ispravan ili bi trebao nešto mijenjati.

procedure postojecaDatoteka(var razred:slogovi);

var

  imedat:string[50];

  otvori:boolean;

begin

   repeat

   write('Ime razreda koji želite otvoriti? ');

   readln(imedat);

   assign(razred,imedat);

{$I-}

   reset(razred);

{$I+}

   otvori:=(IOresult=0);

   if not otvori then

     writeln('Razred sa imenom ',imedat,' ne postoji')

     else

     writeln('Razred sa imenom ',imedat,' je otvoren')

   until otvori;

end;

Poruka je uređivana zadnji put čet 3.5.2012 0:54 (fighterZu).
Moj PC  
0 0 hvala 0
16 godina
moderator
online
Re: Pascal: školski zadaci

Otvaraš li istu datoteku više puta?

Zatvaraš li svaku otvorenu datoteku? Sigurno? Koristiš li istu varijablu (razred) ponovno, čak i ako nisi zatvorio prethodno assignanu i otvorenu datoteku?

13 godina
offline
Pascal: školski zadaci

Da, u pravu si.

Recimo kod dodavanja novih slogova na kraj sam stavio zatvaranje datoteke ''razred'' i sad radi uredno.

 

Zašto mi u devpascalu ne želi otvoriti postojecu datoteku, tj.kaze da ne postoji, a turbo hoce. Vjerovatno je problem u lokacijama. Ili možda ne. Jer kad pokrenem neki drugi pascal program otvara normalno.

Poruka je uređivana zadnji put čet 3.5.2012 1:16 (fighterZu).
Moj PC  
0 0 hvala 0
16 godina
moderator
online
Re: Pascal: školski zadaci
fighterZu kaže...

Da, u pravu si-

Recimo kod dodavanja novih slogova na kraj sam stavio zatvaranje datoteke ''razred'' i sad radi uredno radi.

 

Zašto mi u devpascalu ne želi otvoriti postojecu datoteku, tj.kaze da ne postoji, a turbo hoce. Vjerovatno je problem u lokacijama. Ili možda ne.

Valjda im je različit radni direktorij. Koristi pune putanje do datoteka ili prije otvaranja datoteka provjeri/promijeni radni direktorij na željeni (nemoj me pitati kako - guglaj).

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

Valjda im je različit radni direktorij. Koristi pune putanje do datoteka ili prije otvaranja datoteka provjeri/promijeni radni direktorij na željeni (nemoj me pitati kako - guglaj).

Ma ni ne trebam te pitati(a nisam ni toliko glup da guglam, razumijem se u korištenje softwera) Samo sam sada malo više prionio programiranju. No nema veze sa time, sa lokacijamam itd. Sve je do ovih zatvaranja datoteka, mora se dobro paziti kao što si rekao. Ova procedura postojecaDatoteka je jedina kojoj ne treba close(što je logično) dok kod ovih ostali ako rade sa datotekom najsigurnije ju je pred kraj zatvoriti. Onda radi sa oba programa.

Uostalom hvala na ovom upozorenju sa zatvaranjem, ubuduće ću više paziti na to. Ova procedura postojeće datoteke je malo poremetila program.

Poruka je uređivana zadnji put čet 3.5.2012 1:20 (fighterZu).
16 godina
moderator
online
Re: Pascal: školski zadaci
fighterZu kaže...
mbaksa kaže...

Valjda im je različit radni direktorij. Koristi pune putanje do datoteka ili prije otvaranja datoteka provjeri/promijeni radni direktorij na željeni (nemoj me pitati kako - guglaj).

Ma ni ne trebam te pitati(a nisam ni toliko glup da guglam, razumijem se u korištenje softwera)

OK, problem uzrokovan nezatvaranjem otvorenih datoteka si riješio. No, nisam siguran da si shvatio ovo drugo što ti govorim. Svaki program ima svoj "radni" (aktivni) direktorij - obično je to direktorij u kojem se nalazi .exe datoteka, ali ne mora biti. To može ovisiti o operacijskom sustavu, o shortcutu, o IDE-u iz kojeg ga kompajliraš/pokrećeš. Ako ne specificiraš punu putanju do datoteke tvoj program će otvarati datoteku u radnom direktoriju. Kad sam pričao o guglanju, zapravo sam ti govorio da postoji (ili bi trebala postojati) funkcija kojom se može promijeniti radni direktorij, pa onda umjesto korištenja punih putanja moraš se samo pobrinuti da ti je dobar radni direktorij.

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

OK, problem uzrokovan nezatvaranjem otvorenih datoteka si riješio. No, nisam siguran da si shvatio ovo drugo što ti govorim. Svaki program ima svoj "radni" (aktivni) direktorij - obično je to direktorij u kojem se nalazi .exe datoteka, ali ne mora biti. To može ovisiti o operacijskom sustavu, o shortcutu, o IDE-u iz kojeg ga kompajliraš/pokrećeš. Ako ne specificiraš punu putanju do datoteke tvoj program će otvarati datoteku u radnom direktoriju. Kad sam pričao o guglanju, zapravo sam ti govorio da postoji (ili bi trebala postojati) funkcija kojom se može promijeniti radni direktorij, pa onda umjesto korištenja punih putanja moraš se samo pobrinuti da ti je dobar radni direktorij.

Jasno mi je o čemu pričaš. Naravno, to sam i provjerio kod devpascala, kod mene je radni direktorij tamo gdje se nalazi i sam devpascal, tj njegov .exe. Odatle se i otvaraju datoteke. I naravno da to nekada zna ovisiti i nekim drugom stvarima poput samog OS-a,IDE... Imao sam takvih situacija još prije sa programima druge vrste. No problem trenutno nije bio ''putanjske'' naravi nego ove u samom kodu.

Poruka je uređivana zadnji put pet 4.5.2012 22:08 (fighterZu).
11 godina
neaktivan
offline
Pascal: školski zadaci

Zadatak: U program se upisuju brojevi sve dok se ne napiše 0. Zatim program ispisuje najveci 'dobri' broj(ako postoji takav) među brojevima koji su upisani.Npr 531 je dobar jer je 1>0,3>1 i 5>(3+1). Nisu mi potrebna druga rjesenja jer ih vec znam samo me zanima zasto ovaj program ne radi. Prilikom kompiliranja ne izbacuje gresku ali nakon upisivanje bilo kojeg broja nakon 1-2 min se sam ugasi. function broj se koristi za stepenovanje određenog broja određenom exponentom dok function check provjerava da li je broj dobar tako sto uzme svaku cifru pojedinacno(koristeno repeat...until) i uporedi je sa zbirom onih poslije nje(koristeno for loop).

 

program dobar3;

var

  a,answer,highest:integer;

 

 

function broj (broj1 , exp : integer) : integer;

   var

   zlj:integer;

   begin

   broj:=broj1;

   zlj:=1;

   repeat

   broj:=broj*broj1;

   zlj:=zlj+1;

   until zlj=exp;

   end;

 

function check(x:integer):integer;

var

  y,r,c,d:integer;

begin

y:=2;

r:=0;

check:=0;

repeat

c:=0;

for d:=1 to y-1 do

begin

c:=c + (((x mod broj(10,d)) - (x mod broj(10,(d-1))) div (broj(10,(d-1)))))

end;

if (((x mod broj(10,y)) - (x mod broj(10,(y-1))) div (broj(10,(y-1))))) < c then

begin

r:=r+1;

end;

y:=y+1;

until x mod broj(10,y)=x;

if r=0 then

begin

check:=x;

end;

end;

 

begin

   highest:=0;

   repeat

   readln(a);

   answer:=check(a);

   if answer > highest then

   begin

   highest:=answer;

   end;

   until a=0;

   writeln(highest);

   readln;

end.

 
0 0 hvala 0
12 godina
neaktivan
offline
Pascal: školski zadaci

Ajmo može li ko pomoći da nađem grešku : http://www.bug.hr/forum/topic/programiranje/determinanta/163658.aspx

Dafuq I just read?
Moj PC  
0 0 hvala 0
11 godina
neaktivan
offline
Re: Pascal: školski zadaci
tomaspeverell kaže...

Zadatak: U program se upisuju brojevi sve dok se ne napiše 0. Zatim program ispisuje najveci 'dobri' broj(ako postoji takav) među brojevima koji su upisani.Npr 531 je dobar jer je 1>0,3>1 i 5>(3+1). Nisu mi potrebna druga rjesenja jer ih vec znam samo me zanima zasto ovaj program ne radi. Prilikom kompiliranja ne izbacuje gresku ali nakon upisivanje bilo kojeg broja nakon 1-2 min se sam ugasi. function broj se koristi za stepenovanje određenog broja određenom exponentom dok function check provjerava da li je broj dobar tako sto uzme svaku cifru pojedinacno(koristeno repeat...until) i uporedi je sa zbirom onih poslije nje(koristeno for loop).

 

Program ti se ruši zbog funkcije broj koja bi trebala vratiti "broj1 na exp potenciju" - algoritam ne radi kad je eksponent 0 ili 1.

 

Prepiši Pogledaj funkciju power na ovom postu

12 godina
neaktivan
offline
Pascal: školski zadaci

Pozdrav!

Treba mi hitno pomoc.

Paskal - 2 razred srednje


-Unijeti petocifren cijeli broj. Ispisati njegovu srednju cifru. 

 

Unaprijed hvala!

 
0 0 hvala 0
16 godina
moderator
online
Re: Pascal: školski zadaci

12[3]45

 

Prvo provjeriš ima li broj peteroznamenkasti. Zatim ga cjelobrojno podijeliš sa 100 i dobiš 123. Modaš s 10 i dobiješ 3. Srednji broj. It's that simple.

13 godina
offline
Pascal: školski zadaci

Pitanje, imamo zadatak koji treba riješiti preko pokazivaca. Recimo trebamo unijeti nekih 5 elemenata i izracunati prosjek. Da li je u tim situacijama dopusteno koristiti petlje, staticke varijable, itd. Pokazivacka varijabla bi mi bio samo element(ocjena,visina...). Imao bih brojac koji bi zbrajao pokazivacke varijable(recimo zb:=zb+p^) tijekom petlje i na kraju u ispisu bi ostavio prosjek(zb/n). Da li takav nacin rjesavanja sa pokazivcima ispravan? Da li ove ispisne varijable(zb, n) isto moraju biti prikazane preko pokazivaca?

Poruka je uređivana zadnji put sri 7.11.2012 16:27 (fighterZu).
Moj PC  
0 0 hvala 0
13 godina
offline
Pascal: školski zadaci

Evo da se nadovežem na prošli post.

Recimo ovaj program sa visinama učenika. Je li uredu to napraviti ovako.

 

program visina;

var p:^real;

   zb:real;

   n,i:integer;

begin

zb:=0;

writeln('Koliko visina ucenika zelite ucitati? ');

readln(n);

for i:=1 to n do begin

writeln('Unesi visinu ',i,'. ucenika u metrima ');

new(p);

readln(p^);

zb:=zb+p^;

end;

writeln('Prosjecna visina ucenika iznosi ',(zb/n):4:2);

dispose(p);

readln;

end.

Poruka je uređivana zadnji put sri 7.11.2012 18:41 (fighterZu).
Moj PC  
0 0 hvala 0
16 godina
moderator
online
Re: Pascal: školski zadaci
fighterZu kaže...

Evo da se nadovežem na prošli post.

Recimo ovaj program sa visinama učenika. Je li uredu to napraviti ovako.

NIKAD nije u redu to tako napraviti. Uvuci redove onog što je na hijerarhijski nižoj razini jer se ovako ne vidi što je unutar, a što izvan petlje. Također, curi ti memorija. Pet puta rezerviraš memoriju za p (napraviš pet instanci p), a oslobiš samo jednu, zadnju kreiranu! Dakle, dolazi ti do curenja memorije.

 

Nadalje, ispitaj u koju svrhu bi se trebali koristiti pokazivači. Ovo što si napravio u kodu se nikad tako ne radi, jer je besmisleno. Pokazivači se tipično koriste za vezane liste. I za još neke druge stvari. Međutim ti u tom programu koristiš pokazivač za ono za što si mogao upotrijebiti i običnu varijablu - i tad ne bi imao curenja memorije.

13 godina
offline
Pascal: školski zadaci

Problem je što baš moram napraviti program koristeći pokazivače. A ovaj mi zadatak nema nikakog smisla. Jedino da to napravim u obliku nekake vezane liste.

Recimo poput ovoga sličnoga zadatka kojeg sam još radio prije(zapravo je na istu foru, samo prosjek ocjena)

 

program ocjene;

type pokazivac=^ucenik;

  ucenik=record

   ocj:integer;

   sljedeci:pokazivac;

end;

var poc,trn:pokazivac;

   n,i,zb:integer;

 

begin

poc:=nil;

new(trn);

   for i:=1 to 5 do begin

        writeln('Unesi ',i,'. ocjenu: ');

        readln(n);

        trn^.ocj:=n;

        zb:=zb+trn^.ocj;

        trn^.sljedeci:=poc;

        poc:=trn;

   end;

 

writeln('Prosjecna ocjena je ',(zb/5):4:2);

dispose(trn);

readln;

end.

Poruka je uređivana zadnji put čet 8.11.2012 0:20 (fighterZu).
Moj PC  
0 0 hvala 0
16 godina
moderator
online
Re: Pascal: školski zadaci

To što si napravio NIJE vezana lista - to uopće nije lista! Lista je kad se pomoću pokazivača unutar instance objekta (sljedeci) seliš s jednog na drugi objekt. Ti si instancirao jedan objekt i ne seliš se nikamo.

 

http://pascal-programming.info/articles/linkedlists.php

http://www.daniweb.com/software-development/pascal-and-delphi/threads/105876/linked-list-in-pascal

13 godina
neaktivan
offline
Pascal: školski zadaci

Jel bi mogao neko napisat program za vođenje videoteke (Upis, posuđivanje filmova, vraćanje filmova) tako da sve zapisuje u txt file.

Već sam vidio jedno rješenja u ovoj temi, ali ne radi.

Bio bi veoma zahvalan {#}

A rifle is like a human. The stock is the skeleton, the scope is the eyes, the action is the brain, and the barrel is the heart. But you, the man behind the rifle, you are the soul.
Moj PC  
0 0 hvala 0
12 godina
neaktivan
offline
Re: Pascal: školski zadaci

Napisati ne, sigurno. Zapitaj se što znaš iz Pascala?, da li znaš raditi sa tekstualnim datotekama, znaš li raditi sa funkcijama, na kraju krajeva osnovni upis/ispis?

Evo ti link za rad sa txt datotekama u Pascalu:
http://www.pascal-programming.info/lesson9.php

Pređi nekoliko zadataka sa txt datotekama i onda se baci na svoj zadatak - program za vođenje datoteke.

12 godina
neaktivan
offline
Pascal: školski zadaci

Pozdrav ljudi. 

Trebam pomoć hitno :D

Unijeti 14 ocjena, program treba da ispiše uspjeh na osnovu izračunatog prosjeka. (ako je prosjek manji od 1.5 ispisuje nedovoljan (1), itd..)

Ako se od 14 ocjena bar jednom unese 1, ispisuje nedovoljan (1) bez obzira na prosjek.


Trebam koristiti array. 

 

Hvala unaprijed.

Poruka je uređivana zadnji put sub 15.12.2012 11:28 (nanc9).
 
0 0 hvala 0
12 godina
neaktivan
offline
Re: Pascal: školski zadaci

To je preteško za nas... Jedino da ti nešto napraviš pa ćemo mi pokušati dovršiti.

Kada lajavci laju onda završe ovako: http://i471.photobucket.com/albums/rr77/toropreto/2012-07-0813_30_07.gif
12 godina
neaktivan
offline
Re: Pascal: školski zadaci

 program uspjeh;

 

var ocjena:array [1..14] of integer;

i,SumaOcjena:integer;

prosjek:real;

 

begin

SumaOcjena:=0;

writeln ('Unesite 14 ocjena');

 

     for i:=1 to 14 do

     readln (ocjena[i]);

 

     for i:=1 to 14 do

     SumaOcjena:=SumaOcjena+ocjena[i];

     prosjek:=SumaOcjena/14;

 

if ocjena[i]=1 then writeln ('Nedovoljan (1)') else

 

begin

 

  if  (prosjek>=1.5) and (prosjek<2.5) then writeln ('Dovoljan (2)');

  if  (prosjek>=2.5) and (prosjek<3.5) then writeln ('Dobar (3)');

  if  (prosjek>=3.5) and (prosjek<4.5) then writeln ('Vrlo dobar (4)');

  if  (prosjek>=4.5) and (prosjek<=5) then writeln ('Odlican (5)')

end;

readln

end.

 

Gdje grijesim? :D

12 godina
neaktivan
offline
Re: Pascal: školski zadaci

Nisam vješt u Pascalu, gotovo da nemam pojma, tako da što se sintaksičkih grešaka tiče ne mogu ti pomoći, ali mislim da je stvar u drugoj for petlji, gdje izračunavaš sumu ocjena.
U toj petlji ostavi samo

SumaOcjena:=SumaOcjena+ocjena[i];
Nakon što se izvrti petlja, onda izračunaš prosjek, tj.
prosjek:=SumaOcjena/14;

Koliko znam u Pascalu intendancijom ubacivaš u petlju, pretpostavljam da je tako, onda bi i ovo

if ocjena[i]=1 then writeln ('Nedovoljan (1)') else

trebao ubaciti u petlju.

Možda griješim, ali probaj uraditi ovo što sam ti rekao, ili čekaj nekoga ko radi sa Pascalom.

11 godina
neaktivan
offline
Pascal: školski zadaci

Imam problem s ovim zadatkom, na razne načine sam ga pokušao napraviti, ali ne ide.. 

Treba napisati rekurzivni potprogram koji će za uneseni n (broj mjesta) i k (baza brojevnog sustava) ispisivati sve kombinacije od n brojeva u sustavu s k znamenki.

Znači treba biti riješen u obliku rekurzivnog potprograma, uz pomoć permutacija.

 

Evo i primjer, možda olakša
n=3
k=2

000
001
010
011

100
101
110
111

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

Evo malo pitanjce u vezi grafike u Pacalu, kod izgleda ovako:

 

program pravokutnik;

uses graph;

var gd,gm,x1,y1,x2,y2,c:smallint;

begin

randomize;

writeln('Pritisnite Enter za izvodjenje programa ');

readln;

detectgraph(gd,gm);

initgraph(gd,gm,' ');

line(0,0,getmaxx,getmaxy);

line(getmaxx div 2,0,getmaxx div 2,getmaxy);

line(0,getmaxy div 2,getmaxx,getmaxy div 2);

x1:=2*getmaxx div 3;

y1:=getmaxy div 5;

x2:=9*getmaxx div 10;

y2:=1*getmaxy div 3;

c:=random(getmaxcolor)+1);

setfillstyle(1,c);

bar(x1,y1,x2,y2);

settextstyle(0,0,4);

outtextxy(50,0,'Pravokutnik');

readln;

closegraph;

end.

 

Moram nacrtati u Pacalu sliku (slika1). Radio sam to preko omjera ekrana, znam da sam si zakomplicirao(omjere sam uzeo od oka), ali jedino tako sam se snašao jer ovaj pravokutnik mora biti u 2.kvadrantu, a u onom trokutu mora pisati Pravokutnik(pravokutnik ne smije prelaziti svoj kvadrant kao što ni tekst trokut). Može li se ovaj kod nekako urediti, odnosno pojednostaviti.

Poruka je uređivana zadnji put sri 19.12.2012 16:33 (fighterZu).
Moj PC  
0 0 hvala 0
Nova poruka
E-mail:
Lozinka:
 
vrh stranice