🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.funkcyjne
5 messages
5 total messages Started by ppp Mon, 21 May 2007 15:06
Dlaczego to nie dziala?
#581
Author: ppp
Date: Mon, 21 May 2007 15:06
31 lines
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?
#582
Author: Tomasz bla Fortu
Date: Tue, 22 May 2007 01:27
51 lines
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?
#583
Author: ppp
Date: Tue, 22 May 2007 07:02
46 lines
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?
#584
Author: Tomasz bla Fortu
Date: Tue, 22 May 2007 19:37
60 lines
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?
#585
Author: ppp
Date: Thu, 24 May 2007 23:39
1 lines
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