Thread View: pl.comp.lang.funkcyjne
5 messages
5 total messages
Started by ppp
Mon, 21 May 2007 15:06
Dlaczego to nie dziala?
Author: ppp
Date: Mon, 21 May 2007 15:06
Date: Mon, 21 May 2007 15:06
31 lines
716 bytes
716 bytes
program ma zliczaæ ile razy w zadanym pliku wyst±pi³ dany wyraz. problem w tym, ¿e za bardzo nie chce dzia³aæ... let isspace ch = (ch =' ') || (ch ='\t') || (ch ='\n') || (ch ='\r') ;; let input_string channel = let s = ref "" and ch = ref (input_char channel) in begin while isspace (!ch) do ch := input_char channel done; while not (isspace (!ch)) do s := !s^(String.make 1 !ch); ch := input_char channel done; !s end ;; let zlicz (nazwa,wyraz) = let plik = open_in nazwa in begin let i = ref (1) in while true do let odczyt = input_string plik in i=i+1; done; end ;;
Re: Dlaczego to nie dziala?
Author: Tomasz bla Fortu
Date: Tue, 22 May 2007 01:27
Date: Tue, 22 May 2007 01:27
51 lines
1511 bytes
1511 bytes
--Sig_2Ar7iznSR65osQP3Bu+WaJc Content-Type: text/plain; charset=ISO-8859-2 Content-Transfer-Encoding: quoted-printable Dnia 21 May 2007 15:06:56 -0700 ppp <jimmie0@wp.pl> napisa³(a): > program ma zliczaæ ile razy w zadanym pliku wyst±pi³ dany wyraz. > problem w tym, ¿e za bardzo nie chce dzia³aæ... > > let isspace ch = (ch =' ') || (ch ='\t') || (ch ='\n') || (ch > ='\r') ;; > (ciach) > let zlicz (nazwa,wyraz) = > let plik = open_in nazwa > in > begin > let i = ref (1) in > while true do > let odczyt = input_string plik in > i=i+1; > done; > end >;; Funkcja "zlicz" pobiera nazwê wyrazu - ale nic z nim nie robi. Do tego "i=i+1" nie jest specjalnie legalnym wyra¿eniem, imho powinno byæ i:=!i + 1. Te¿ zamiast dziwnego "let zlicz (nazwa,wyraz)" da³bym raczej: let zlicz nazwa wyraz, po co tu krotka? Tak trochê imperatywnie pachnie. ;d A odpowiadaj±c na pytanie - program nie jest skoñczony, abstrahuj±c od tego co w/w kod mia³by robiæ lub robi. -- Tomasz bla Fortuna jid: bla(at)af.gliwice.pl pgp: 0x90746E79 @ pgp.mit.edu --Sig_2Ar7iznSR65osQP3Bu+WaJc Content-Type: application/pgp-signature; name=signature.asc Content-Disposition: attachment; filename=signature.asc -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.3 (GNU/Linux) iD8DBQFGUiriT6wvGJB0bnkRAq+nAKDPtlzTkwLrXNA6tcrrPX7SjmFqXgCcCJGn o/9swtYos006kmRMwWx5ZvA=Jh+K -----END PGP SIGNATURE----- --Sig_2Ar7iznSR65osQP3Bu+WaJc--
Re: Dlaczego to nie dziala?
Author: ppp
Date: Tue, 22 May 2007 07:02
Date: Tue, 22 May 2007 07:02
46 lines
1359 bytes
1359 bytes
On 22 Maj, 01:27, Tomasz bla Fortuna <b...@thera.be> wrote: > Dnia 21 May 2007 15:06:56 -0700 > ppp <jimm...@wp.pl> napisa³(a): > > > > > program ma zliczaæ ile razy w zadanym pliku wyst±pi³ dany wyraz. > > problem w tym, ¿e za bardzo nie chce dzia³aæ... > > > let isspace ch = (ch =' ') || (ch ='\t') || (ch ='\n') || (ch > > ='\r') ;; > > (ciach) > > let zlicz (nazwa,wyraz) = > > let plik = open_in nazwa > > in > > begin > > let i = ref (1) in > > while true do > > let odczyt = input_string plik in > > i=i+1; > > done; > > end > >;; > > Funkcja "zlicz" pobiera nazwê wyrazu - ale nic z nim nie robi. > Do tego "i=i+1" nie jest specjalnie legalnym wyra¿eniem, imho powinno > byæ i:=!i + 1. Te¿ zamiast dziwnego "let zlicz (nazwa,wyraz)" da³bym > raczej: let zlicz nazwa wyraz, po co tu krotka? Tak trochê imperatywnie > pachnie. ;d > > A odpowiadaj±c na pytanie - program nie jest skoñczony, abstrahuj±c od > tego co w/w kod mia³by robiæ lub robi. > > -- > Tomasz bla Fortuna > jid: bla(at)af.gliwice.pl > pgp: 0x90746E79 @ pgp.mit.edu > > signature.asc > 1KPobierz npisa³em wcze¶niej, ¿e ma zliczaæ wyst±pienia zadanego wyrazu w podanym pliku. no wiem ¿e trochê brakuje, ale nie mam pomys³u na to jako¶. czekam na ol¶nienie;)
Re: Dlaczego to nie dziala?
Author: Tomasz bla Fortu
Date: Tue, 22 May 2007 19:37
Date: Tue, 22 May 2007 19:37
60 lines
1669 bytes
1669 bytes
--Sig_m65m_kdA1q62_uu8PRchyk1 Content-Type: text/plain; charset=ISO-8859-2 Content-Transfer-Encoding: quoted-printable > > > program ma zliczaæ ile razy w zadanym pliku wyst±pi³ dany wyraz. > > > problem w tym, ¿e za bardzo nie chce dzia³aæ... > > npisa³em wcze¶niej, ¿e ma zliczaæ wyst±pienia zadanego wyrazu w > podanym pliku. no wiem ¿e trochê brakuje, ale nie mam pomys³u na to > jako¶. czekam na ol¶nienie;) Trzeba by³o napisaæ... ;p "Zróbcie za mnie moje zadanie domowe". (* Wczytuje wyraz *) let rec readWord channel s = match input_char channel with | ' ' | '\t' | '\n' | '\r' -> s | ch -> readWord channel (s ^ (Char.escaped ch)) ;; (* Zlicza wyrazy... *) let rec count input word cnt = try let current = readWord input "" in if current = word then count input word (cnt+1) else count input word cnt with End_of_file -> cnt ;; (* Wy¶wietla wynik, inicjalizuje plik... *) let main filename word = let file = open_in filename in Printf.printf "%d\n" (count file word 1) ;; main "counter.ml" "current";; Nie jestem z tego kodu do koñca zadowolony. Ale na zadanie domowe, masz zrozumieæ go. ;P Pozdrawiam. -- Tomasz bla Fortuna jid: bla(at)af.gliwice.pl pgp: 0x90746E79 @ pgp.mit.edu --Sig_m65m_kdA1q62_uu8PRchyk1 Content-Type: application/pgp-signature; name=signature.asc Content-Disposition: attachment; filename=signature.asc -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.3 (GNU/Linux) iD8DBQFGUyp0T6wvGJB0bnkRAjFYAKCQXt0bhX0CkWYSXQdZOq/5AXVJSgCgwU19 mjgRGD0dnk7scjCdI8B+wRQ=xy6S -----END PGP SIGNATURE----- --Sig_m65m_kdA1q62_uu8PRchyk1--
Re: Dlaczego to nie dziala?
Author: ppp
Date: Thu, 24 May 2007 23:39
Date: Thu, 24 May 2007 23:39
1 lines
53 bytes
53 bytes
Powiedzmy ¿e to zadanie domowe:) dziêki wielkie.
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads