ďťż
 
Liczenie literek - string? ďťż
 
Liczenie literek - string?
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

Liczenie literek - string?



siec@o2.pl - 11-05-2007 12:37
Liczenie literek - string?
  Witam !
Otóż mam następujący problem: powiedzmy, ze wpisuje pewien wyraz z
klawiatury: ABSNDJSYSHR
i chce ,zeby program policzył ile tam jest literek.Dokładnie chodzi o
to ,ze mam wczytac pewien plik txt i sprawdzić
ile słów sie w nim powtarza(jedno slowo w jednym wierszu bez polskich
#).Aby to zrobi musze wiedzec z ilu znaków składa sie kazdy
wyraz ,innaczej nie rusze tego.

proszę o pomoc i z góry bardzo dziękuje





Solaris - 11-05-2007 12:37

  Dnia 23 Apr 2007 04:20:37 -0700, jakże pięknego
siec@o2.pl wystukał co zawarte poniżej:

:: Witam !
:: Otóż mam następujący problem: powiedzmy, ze wpisuje pewien wyrazz
:: klawiatury: ABSNDJSYSHR

len:=length('ABSNDJSYSHR');

--
Born to raise hell.
Linux registered user: 408584
Contact: GG#3802676, solaris#idns.pl
19:16:28 -!- Platyna Erroneous Nickname




Geo - 11-05-2007 12:37

  Aby to zrobi musze wiedzec z ilu znaków składa sie kazdy
> wyraz ,innaczej nie rusze tego.

I tak nie ruszysz, ale powodzenia... :)




Solaris - 11-05-2007 12:37

  Dnia 23 Apr 2007 04:20:37 -0700, jakże pięknego
siec@o2.pl wystukał co zawarte poniżej:

:: Witam !
:: Otóż mam następujący problem: powiedzmy, ze wpisuje pewien wyrazz
:: klawiatury: ABSNDJSYSHR
:: i chce ,zeby program policzył ile tam jest literek.Dokładnie chodzi o
:: to ,ze mam wczytac pewien plik txt i sprawdzić
:: ile słów sie w nim powtarza(jedno slowo w jednym wierszu bez polskich
:: #).Aby to zrobi musze wiedzec z ilu znaków składa sie kazdy
:: wyraz ,innaczej nie rusze tego.
::
:: proszę o pomoc i z góry bardzo dziękuje

Daj całą treść zadania, napiszę Ci rozwiązanie.

--
Born to raise hell.
Linux registered user: 408584
Contact: GG#3802676, solaris#idns.pl
19:16:28 -!- Platyna Erroneous Nickname





=?iso-8859-2?Q?=A3ukasz_'Maly'_Ostrowski?= - 11-05-2007 12:37

  Solaris wrote:
> Daj całą treść zadania, napiszę Ci rozwiązanie.

Prowokacja Solaris? Jak zwykle?:>:> ;)

--
Pozdrawiam,
Łukasz 'Maly' Ostrowski.
http://maly.nemo.pl/




Solaris - 11-05-2007 12:37

  Dnia Mon, 23 Apr 2007 17:34:37 +0200, jakże pięknego
Łukasz 'Maly' Ostrowski <maly@USUNnemo.pl> wystukał co zawarte poniżej:

:: Solaris wrote:
:: > Daj całą treść zadania, napiszę Ci rozwiązanie.
::
:: Prowokacja Solaris? Jak zwykle?:>:> ;)

Hehe, a jak myślisz? ;) Dostanie taki kod o jaki prosi ^_^

--
Born to raise hell.
Linux registered user: 408584
Contact: GG#3802676, solaris#idns.pl
19:16:28 -!- Platyna Erroneous Nickname




Magda S - 05-09-2007 00:22

  Solaris pisze:
> Dnia Mon, 23 Apr 2007 17:34:37 +0200, jakże pięknego
> Łukasz 'Maly' Ostrowski <maly@USUNnemo.pl> wystukał co zawarte poniżej:
>
> :: Solaris wrote:
> :: > Daj całą treść zadania, napiszę Ci rozwiązanie.
> ::
> :: Prowokacja Solaris? Jak zwykle?:>:> ;)
>
> Hehe, a jak myślisz? ;) Dostanie taki kod o jaki prosi ^_^
>
Function IleLiter(S:String):integer;
var
ls: integer;
begin
ls := length(S);
if (ls = 0)
then
IleLiter := 0
else if (ls=1) then
begin
if S[1] in Letters
then
IleLiter := 1
else
IleLiter := 0
end
else
IleLiter := IleLiter(S[1]) + IleLiter(Copy(S, 2, ls-1));
end;

and (S[1] in Letters))




Krzysztof Tabaczynski - 05-09-2007 00:22

 
Użytkownik "Magda S" <sowamagda@vp.pl> napisał w wiadomości
news:fbk2jo$rko$1@news.onet.pl...
> Solaris pisze:
>> Dnia Mon, 23 Apr 2007 17:34:37 +0200, jakże pięknego
>> Łukasz 'Maly' Ostrowski <maly@USUNnemo.pl> wystukał co zawarte poniżej:
>>
>> :: Solaris wrote:
>> :: > Daj całą treść zadania, napiszę Ci rozwiązanie.
>> :: :: Prowokacja Solaris? Jak zwykle?:>:> ;)
>>
>> Hehe, a jak myślisz? ;) Dostanie taki kod o jaki prosi ^_^
>>
> Function IleLiter(S:String):integer;
> var
> ls: integer;
> begin
> ls := length(S);
> if (ls = 0)
> then
> IleLiter := 0
> else if (ls=1) then
> begin
> if S[1] in Letters
> then
> IleLiter := 1
> else
> IleLiter := 0
> end
> else
> IleLiter := IleLiter(S[1]) + IleLiter(Copy(S, 2, ls-1));
> end;

To chyba nie jest takie dobre...

function IloscLiter (S: string): integer;
const
Litery: set of char = ['A'..'Z', 'a'..'z'];
var
I, L, LicznikLiter: integer;
begin
LicznikLiter := 0;
L := lenght (S);
if L > 0
then for I := 1 to L do
if S[i] in Litery
then LicznikLiter := LicznikLiter + 1;
IloscLiter := LicznikLiter;
end; (* IloscLiter *)

Pozdrowienia. Krzysztof z Tychów.




Magda S - 06-09-2007 00:05

  Krzysztof Tabaczynski pisze:
>
> Użytkownik "Magda S" <sowamagda@vp.pl> napisał w wiadomości
> news:fbk2jo$rko$1@news.onet.pl...
>> Solaris pisze:
>>> Dnia Mon, 23 Apr 2007 17:34:37 +0200, jakże pięknego
>>> Łukasz 'Maly' Ostrowski <maly@USUNnemo.pl> wystukał co zawarte poniżej:
>>>
>>> :: Solaris wrote:
>>> :: > Daj całą treść zadania, napiszę Ci rozwiązanie.
>>> :: :: Prowokacja Solaris? Jak zwykle?:>:> ;)
>>>
>>> Hehe, a jak myślisz? ;) Dostanie taki kod o jaki prosi ^_^
>>>
>> Function IleLiter(S:String):integer;
>> var
>> ls: integer;
>> begin
>> ls := length(S);
>> if (ls = 0)
>> then
>> IleLiter := 0
>> else if (ls=1) then
>> begin
>> if S[1] in Letters
>> then
>> IleLiter := 1
>> else
>> IleLiter := 0
>> end
>> else
>> IleLiter := IleLiter(S[1]) + IleLiter(Copy(S, 2, ls-1));
>> end;
>
> To chyba nie jest takie dobre...

Nie poznał się człowiek na żartach.

Czy ktoś potrafi to zaprogramować jeszcze gorzej? Tu już jest nieźle,
zagnieżdzenie rekursji proporcjonalne do długości stringa. W sam raz dla
początkującego, któremu prowadzący każe "zamienić wersję rekurencyjną na
iteracyjną, z uwzględnieniem reguł eliminowania tail recursion" (bo
rekurencja końcowa jest tu istotnie). To brzmi znacznie groźniej niż
liczenie literek w tekście - i o to mi chodziło.

Pomijając taki drobiazg: "co to jest Letters?" - zapyta się prowadzący.

>
> function IloscLiter (S: string): integer;
> const
> Litery: set of char = ['A'..'Z', 'a'..'z'];
> var
> I, L, LicznikLiter: integer;
> begin
> LicznikLiter := 0;
> L := lenght (S);
> if L > 0
> then for I := 1 to L do
> if S[i] in Litery
> then LicznikLiter := LicznikLiter + 1;
> IloscLiter := LicznikLiter;
> end; (* IloscLiter *)

Pomijając literówki: Warunek if (L>0) jest zbędny. Poza tym zapomniałeś
o polskich literach. No i można było użyć Inc().

Zamiast

Litery: set of char = ['A'..'Z', 'a'..'z'];

można było napisać wprost

Litery = ['A'..'Z', 'a'..'z'];

W Turbo Pascalu to trochę mniejsze obciążenie dla i tak skąpego segmentu
danych.

("Co to jest segment danych i w jakim sensie jest on 'skąpy'?" - może
się zapytać prowadzący).

P.S.

1. Niby taki prosty problem, a ile ciekawostek...

2. Trochę mi żal człowieka, bo wychodzi na to, że wyciągnęłam go z z
niezbyt głębokiej wody (topił się) i wrzucam do gnojówki. Chyba już
więcej nie poprosi o gotowca.




=?iso-8859-2?Q?=A3ukasz_'Maly'_Ostrowski?= - 06-09-2007 00:05

  Krzysztof Tabaczynski wrote:
> To chyba nie jest takie dobre...

Toż Magda użyła Solaris-style(R) żeby
zmieszać lenia z błotem ;).

> function IloscLiter (S: string): integer;
> const
> Litery: set of char = ['A'..'Z', 'a'..'z'];
> var
> I, L, LicznikLiter: integer;
> begin
> LicznikLiter := 0;
> L := lenght (S);
> if L > 0
> then for I := 1 to L do
> if S[i] in Litery
> then LicznikLiter := LicznikLiter + 1;
> IloscLiter := LicznikLiter;
> end; (* IloscLiter *)

Gwoli ścisłości:
"if (L>0) then"
jest nadmierne, jeżeli pętla będzie od 1 do 0 to
w pętle wogole nie wejdzie prog. ;).

--
Pozdrawiam,
Łukasz 'Maly' Ostrowski.
http://maly.nemo.pl/




Krzysztof Tabaczynski - 06-09-2007 00:05

 
Użytkownik "Magda S" <sowamagda@vp.pl> napisał w wiadomości
news:fbm79m$5lv$1@news.onet.pl...
> Krzysztof Tabaczynski pisze:
>>
>> Użytkownik "Magda S" <sowamagda@vp.pl> napisał w wiadomości
>> news:fbk2jo$rko$1@news.onet.pl...
>>> Solaris pisze:
>>>> Dnia Mon, 23 Apr 2007 17:34:37 +0200, jakże pięknego
>>>> Łukasz 'Maly' Ostrowski <maly@USUNnemo.pl> wystukał co zawarte poniżej:
>>>>
>>>> :: Solaris wrote:
>>>> :: > Daj całą treść zadania, napiszę Ci rozwiązanie.
>>>> :: :: Prowokacja Solaris? Jak zwykle?:>:> ;)
>>>>
>>>> Hehe, a jak myślisz? ;) Dostanie taki kod o jaki prosi ^_^
>>>>
>>> Function IleLiter(S:String):integer;
>>> var
>>> ls: integer;
>>> begin
>>> ls := length(S);
>>> if (ls = 0)
>>> then
>>> IleLiter := 0
>>> else if (ls=1) then
>>> begin
>>> if S[1] in Letters
>>> then
>>> IleLiter := 1
>>> else
>>> IleLiter := 0
>>> end
>>> else
>>> IleLiter := IleLiter(S[1]) + IleLiter(Copy(S, 2, ls-1));
>>> end;
>>
>> To chyba nie jest takie dobre...
>
> Nie poznał się człowiek na żartach.
>
> Czy ktoś potrafi to zaprogramować jeszcze gorzej? Tu już jest nieźle,
> zagnieżdzenie rekursji proporcjonalne do długości stringa. W sam raz dla
> początkującego, któremu prowadzący każe "zamienić wersję rekurencyjną na
> iteracyjną, z uwzględnieniem reguł eliminowania tail recursion" (bo
> rekurencja końcowa jest tu istotnie). To brzmi znacznie groźniej niż
> liczenie literek w tekście - i o to mi chodziło.
>
> Pomijając taki drobiazg: "co to jest Letters?" - zapyta się prowadzący.
>
>
>
>
>
>>
>> function IloscLiter (S: string): integer;
>> const
>> Litery: set of char = ['A'..'Z', 'a'..'z'];
>> var
>> I, L, LicznikLiter: integer;
>> begin
>> LicznikLiter := 0;
>> L := lenght (S);
>> if L > 0
>> then for I := 1 to L do
>> if S[i] in Litery
>> then LicznikLiter := LicznikLiter + 1;
>> IloscLiter := LicznikLiter;
>> end; (* IloscLiter *)
>
> Pomijając literówki:

Jakie literówki?

> Warunek if (L>0) jest zbędny.

A jeśli "lenght" jest źle zaimplementowany?

> Poza tym zapomniałeś o polskich literach.

Nie zapomniałem. Nie było mowy o "polskich literach".

> No i można było użyć Inc().

Może go nie być w dostępnym dialekcie pascala.
O ile wiem, to teraz "I := I +1" jest teraz automagicznie
zamieniane na inc (I).

>
> Zamiast
>
> Litery: set of char = ['A'..'Z', 'a'..'z'];
>
> można było napisać wprost
>
> Litery = ['A'..'Z', 'a'..'z'];

No fakt...
Ale wolałem tak jawnie...

>
> W Turbo Pascalu to trochę mniejsze obciążenie dla i tak skąpego segmentu
> danych.
>
> ("Co to jest segment danych i w jakim sensie jest on 'skąpy'?" - może się
> zapytać prowadzący).

No właśnie? Też bym spytał...
Ostatecznie każda procedura ma 64kB segmentu danych.
A, może źle wiem...

>
>
> P.S.
>
> 1. Niby taki prosty problem, a ile ciekawostek...
>
> 2. Trochę mi żal człowieka, bo wychodzi na to, że wyciągnęłam go z z
> niezbyt głębokiej wody (topił się) i wrzucam do gnojówki. Chyba już więcej
> nie poprosi o gotowca.

A mnie chodziło o wyeliminowanie zupełnie zbędnej rekurencji...

Pozdrowienia. Krzysztof z Tychów.




Krzysztof Tabaczynski - 06-09-2007 00:05

 
Użytkownik "Magda S" <sowamagda@vp.pl> napisał w wiadomości
news:fbm79m$5lv$1@news.onet.pl...

> 2. Trochę mi żal człowieka, bo wychodzi na to, że wyciągnęłam go z z
> niezbyt głębokiej wody (topił się) i wrzucam do gnojówki. Chyba już więcej
> nie poprosi o gotowca.

Proszenie o gotowca wcale nie jest takim
dużym błędem przy pisaniu programów.
Wiele lat pracowałem właśnie w takim trybie.
Pisałem szkielet programu i najważniejsze
procedury prosząc kilku młodszych kolegów
właśnie o "gotowce". Ważna jest tylko precyzyjna
definicja owego "gotowca".

Pozdrowienia. Krzysztof z Tychów.




Solaris - 06-09-2007 00:05

  Dnia Wed, 5 Sep 2007 15:07:38 +0200, jakże pięknego
Łukasz 'Maly' Ostrowski <maly@USUNnemo.pl> wystukał co zawarte poniżej:

:: Krzysztof Tabaczynski wrote:
:: > To chyba nie jest takie dobre...
::
:: Toż Magda użyła Solaris-style(R) żeby
:: zmieszać lenia z błotem ;).

:D
Ale ja bym go zagiął jeszcze bardziej kodem (:
W miare wolnego czasu coś mu sklikam.

Ew. można to do FAQ dorzucić, nieprawdaż Mały-Metal(R)?

--
Born to raise hell.
Linux registered user: 408584
Contact: GG#3802676, solaris#idns.pl
19:16:28 -!- Platyna Erroneous Nickname




=?iso-8859-2?Q?=A3ukasz_'Maly'_Ostrowski?= - 06-09-2007 00:05

  Solaris wrote:
>> Toż Magda użyła Solaris-style(R) żeby
>> zmieszać lenia z błotem ;).

> Ale ja bym go zagiął jeszcze bardziej kodem (:
> W miare wolnego czasu coś mu sklikam.
>
> Ew. można to do FAQ dorzucić, nieprawdaż Mały-Metal(R)?

YA RLY, Metal? No Wai! <i-obrazek-sowy> ;).

--
Pozdrawiam,
Łukasz 'Maly' Ostrowski.
http://maly.nemo.pl/




Solaris - 06-09-2007 00:05

  Dnia Wed, 5 Sep 2007 17:17:01 +0200, jakże pięknego
Łukasz 'Maly' Ostrowski <maly@USUNnemo.pl> wystukał co zawarte poniżej:

:: Solaris wrote:
:: >> Toż Magda użyła Solaris-style(R) żeby
:: >> zmieszać lenia z błotem ;).
::
:: > Ale ja bym go zagiął jeszcze bardziej kodem (:
:: > W miare wolnego czasu coś mu sklikam.
:: >
:: > Ew. można to do FAQ dorzucić, nieprawdaż Mały-Metal(R)?
::
::
:: YA RLY, Metal? No Wai! <i-obrazek-sowy> ;).

AVE Satan! :D

--
Born to raise hell.
Linux registered user: 408584
Contact: GG#3802676, solaris#idns.pl
19:16:28 -!- Platyna Erroneous Nickname




Magda S - 06-09-2007 00:05

  >>> function IloscLiter (S: string): integer;
>>> const
>>> Litery: set of char = ['A'..'Z', 'a'..'z'];
>>> var
>>> I, L, LicznikLiter: integer;
>>> begin
>>> LicznikLiter := 0;
>>> L := lenght (S);
>>> if L > 0
>>> then for I := 1 to L do
>>> if S[i] in Litery
>>> then LicznikLiter := LicznikLiter + 1;
>>> IloscLiter := LicznikLiter;
>>> end; (* IloscLiter *)
>>
>> Pomijając literówki:
>
> Jakie literówki?

lenght. Funkcja zwracająca długość łańcucha to Length().

>
>> Warunek if (L>0) jest zbędny.
>
> A jeśli "lenght" jest źle zaimplementowany?

Jeśli L <= 0, to pętla for i := 1 to L nie wykona się ani razu,
niezaleznie od tego, skąd wzięła się wartość L. I dlatego if L > 0 jest
zbędne. Niezależnie od tego, co oznacza "lenght"

>
>> Poza tym zapomniałeś o polskich literach.
>
> Nie zapomniałem. Nie było mowy o "polskich literach".

Była mowa o "literach". Jesteśmy w Polsce, dyskusja toczy się po polsku.

>
>> No i można było użyć Inc().
>
> Może go nie być w dostępnym dialekcie pascala.
> O ile wiem, to teraz "I := I +1" jest teraz automagicznie
> zamieniane na inc (I).

Może nie być zamieniane w danym dialekcie Pascala

>
>>
>> Zamiast
>>
>> Litery: set of char = ['A'..'Z', 'a'..'z'];
>>
>> można było napisać wprost
>>
>> Litery = ['A'..'Z', 'a'..'z'];
>
> No fakt...
> Ale wolałem tak jawnie...
>
>>
>> W Turbo Pascalu to trochę mniejsze obciążenie dla i tak skąpego
>> segmentu danych.
>>
>> ("Co to jest segment danych i w jakim sensie jest on 'skąpy'?" - może
>> się zapytać prowadzący).
>
> No właśnie? Też bym spytał...
> Ostatecznie każda procedura ma 64kB segmentu danych.
> A, może źle wiem...

Że co? Zobacz, jaki jest model pamięci w Turbo Pascalu. Wszystkie
zmienne globalne, stałe typowane, tablice VMT, a także (niektórzy nie
wiedzą!) stałe tekstowe (łańcuchy) zastępujące parametry formalne typu
PChar lądują w tym skąpym segmencie 64K. Tu chodzi o to, żeby nie
tworzyć stałej typowanej. Stałe typu set przechowywane są w kodzie, a
segmentów kodu aplikacja może mieć wiele.

> A mnie chodziło o wyeliminowanie zupełnie zbędnej rekurencji...

Ona w założeniu nie miała być "zbędna", tylko KURIOZALNA. Notabene
klasyczny przykład tego, jak NIE należy stosować rekurencji.
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [postgresql] kilka =?ISO-8859-2?Q?rekord=F3w_subquery_jako_?==?ISO-8859-2?Q?string?= String line; if (line=="cos"){...}....problem [Oracle] =?ISO-8859-2?Q?=A3=B1czenie_wierszy_z_zapytania_?==?ISO-8859-2?Q?w_jeden_string?= Variable type (position <number>) in EXECUTE STATEMENT '<string>' INTO does not match returned column type Problem z funkcja mysql_real_escape_string() na bazie mysql [psql] Funkcja =?ISO-8859-2?Q?=B3=B1cz=B1ca_stringi?= Sql Serv 2000 - String z lista parametrem funkcji ? [pl/sql] usuwanie znaku nowej lini ze stringa Firebird 1.5, Invalid argument in EXECUTION STATEMENT - cannot convert to string [oracle] jak wyciągnąć jeden znak ze stringa/zmiennej?
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • dirtyboys.xlx.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com