🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.perl
11 messages
11 total messages Started by gtbike Fri, 25 Dec 2009 08:33
przypisanie wartosci jedenj tablicy do drugiej
#51725
Author: gtbike
Date: Fri, 25 Dec 2009 08:33
10 lines
1127 bytes
Witam
Mam 2 tablice tab1 i tab2, 
tab1 zawiera dane takie jak:
numer_pracownika,Nazwisko Imie, KOD
Mam druga tablice tab2:
ktora zawiera dane takie jak:
numer_pracownika,Nazwisko Imie, koszta

i tutaj moje pytanie w jaki sposob pobrac KOD z tab1 i przypisac go
odpowiedniemu pracownikowi z  tablicy tab2 ?
Re: przypisanie wartosci jedenj tablicy do drugiej
#51726
Author: Adam Osuchowski
Date: Fri, 25 Dec 2009 10:16
15 lines
1429 bytes
gtbike@o2.pl wrote:
> Witam
> Mam 2 tablice tab1 i tab2, 
> tab1 zawiera dane takie jak:
> numer_pracownika,Nazwisko Imie, KOD
> Mam druga tablice tab2:
> ktora zawiera dane takie jak:
> numer_pracownika,Nazwisko Imie, koszta
> 
> i tutaj moje pytanie w jaki sposob pobrac KOD z tab1 i przypisac go
> odpowiedniemu pracownikowi z  tablicy tab2 ?

A w jaki sposób masz to zapisane w tych tablicach? To są zwykłe tablice
czy hasze? Tutaj by się prosiło o zastosowanie haszy, ale w tablicach
też to można trzymać, tylko później gorzej z operowaniem na tych danych.
Re: przypisanie wartosci jedenj tablicy do drugiej
#51727
Author: gtbike
Date: Fri, 25 Dec 2009 10:26
29 lines
1939 bytes
On Fri, 25 Dec 2009 10:16:31 +0000 (UTC), Adam Osuchowski
<someone@somewhere.com> wrote:

>gtbike@o2.pl wrote:
>> Witam
>> Mam 2 tablice tab1 i tab2, 
>> tab1 zawiera dane takie jak:
>> numer_pracownika,Nazwisko Imie, KOD
>> Mam druga tablice tab2:
>> ktora zawiera dane takie jak:
>> numer_pracownika,Nazwisko Imie, koszta
>> 
>> i tutaj moje pytanie w jaki sposob pobrac KOD z tab1 i przypisac go
>> odpowiedniemu pracownikowi z  tablicy tab2 ?
>
>A w jaki sposób masz to zapisane w tych tablicach? To są zwykłe tablice
>czy hasze? Tutaj by się prosiło o zastosowanie haszy, ale w tablicach
>też to można trzymać, tylko później gorzej z operowaniem na tych danych.
Dane pobieram z plikow tekstowych
W pliku tekstowym zapisane jest w postaci
numer pracownika nazwisko,Imie KOD

i 

numer pracownika nazwisko,Imie koszta

w tablicy wyglada to tak ze pierwszy element to numer pracownika,
drugi Nazwisko Imie itd. Faktycznie jest to ciezkie do obrabiania a
jak by to zapisac w postaci haszy?
Re: przypisanie wartosci jedenj tablicy do drugiej
#51728
Author: gtbike
Date: Fri, 25 Dec 2009 10:34
34 lines
2229 bytes
On Fri, 25 Dec 2009 11:26:25 +0100, gtbike@o2.pl wrote:

>On Fri, 25 Dec 2009 10:16:31 +0000 (UTC), Adam Osuchowski
><someone@somewhere.com> wrote:
>
>>gtbike@o2.pl wrote:
>>> Witam
>>> Mam 2 tablice tab1 i tab2, 
>>> tab1 zawiera dane takie jak:
>>> numer_pracownika,Nazwisko Imie, KOD
>>> Mam druga tablice tab2:
>>> ktora zawiera dane takie jak:
>>> numer_pracownika,Nazwisko Imie, koszta
>>> 
>>> i tutaj moje pytanie w jaki sposob pobrac KOD z tab1 i przypisac go
>>> odpowiedniemu pracownikowi z  tablicy tab2 ?
>>
>>A w jaki sposób masz to zapisane w tych tablicach? To są zwykłe tablice
>>czy hasze? Tutaj by się prosiło o zastosowanie haszy, ale w tablicach
>>też to można trzymać, tylko później gorzej z operowaniem na tych danych.
>Dane pobieram z plikow tekstowych
>W pliku tekstowym zapisane jest w postaci
>numer pracownika nazwisko,Imie KOD
>
>i 
>
>numer pracownika nazwisko,Imie koszta
>
>w tablicy wyglada to tak ze pierwszy element to numer pracownika,
>drugi Nazwisko Imie itd. Faktycznie jest to ciezkie do obrabiania a
>jak by to zapisac w postaci haszy?
OK juz wiem jak wczytac caly plik do hasha sprobuje cos z tym zrobic ,
poczytam tez wiecej w jakis manualach ale mila by byla jeszcze jakas
podpowiedz :)
Re: przypisanie wartosci jedenj tablicy do drugiej
#51729
Author: Adam Osuchowski
Date: Fri, 25 Dec 2009 12:47
38 lines
1858 bytes
gtbike@o2.pl wrote:
> Dane pobieram z plikow tekstowych
> W pliku tekstowym zapisane jest w postaci
> numer pracownika nazwisko,Imie KOD
> 
> i 
> 
> numer pracownika nazwisko,Imie koszta
> 
> w tablicy wyglada to tak ze pierwszy element to numer pracownika,
> drugi Nazwisko Imie itd. Faktycznie jest to ciezkie do obrabiania a
> jak by to zapisac w postaci haszy?

Jak mniemam, numer pracownika jest unikalny, może więc on być kluczem
w haszu. W Twoim przypadku, wczytywanie mogłoby wyglądać następująco:

#v+
my %tab1;
while (<>)
{
  chomp;
  my ($numer, $nazwisko, $kod) = split / /;
  $tab1{$numer} = { nazwisko => $nazwisko, kod => $kod };
}
#v-

Dla drugiej tablicy będzie analogicznie, choć możesz przy wczytywaniu
drugiego zstawu danych, od razu uzupełniać pierwszą tablicę i nie robić
niepotrzebnie dwóch:

#v+
while (<>)
{
  chomp;
  my ($numer, undef, $koszta) = split / /;
  $tab1{$numer}->{koszta} = $koszta;
}
#v-
Re: przypisanie wartosci jedenj tablicy do drugiej
#51730
Author: gtbike
Date: Wed, 30 Dec 2009 03:23
57 lines
2665 bytes
On Fri, 25 Dec 2009 12:47:11 +0000 (UTC), Adam Osuchowski
<someone@somewhere.com> wrote:

>gtbike@o2.pl wrote:
>> Dane pobieram z plikow tekstowych
>> W pliku tekstowym zapisane jest w postaci
>> numer pracownika nazwisko,Imie KOD
>> 
>> i 
>> 
>> numer pracownika nazwisko,Imie koszta
>> 
>> w tablicy wyglada to tak ze pierwszy element to numer pracownika,
>> drugi Nazwisko Imie itd. Faktycznie jest to ciezkie do obrabiania a
>> jak by to zapisac w postaci haszy?
>
>Jak mniemam, numer pracownika jest unikalny, może więc on być kluczem
>w haszu. W Twoim przypadku, wczytywanie mogłoby wyglądać następująco:
>
>#v+
>my %tab1;
>while (<>)
>{
>  chomp;
>  my ($numer, $nazwisko, $kod) = split / /;
>  $tab1{$numer} = { nazwisko => $nazwisko, kod => $kod };
>}
>#v-
>
>Dla drugiej tablicy będzie analogicznie, choć możesz przy wczytywaniu
>drugiego zstawu danych, od razu uzupełniać pierwszą tablicę i nie robić
>niepotrzebnie dwóch:
>
>#v+
>while (<>)
>{
>  chomp;
>  my ($numer, undef, $koszta) = split / /;
>  $tab1{$numer}->{koszta} = $koszta;
>}
>#v-
Dzieki za podpowiedz z hashami :), mam jeszcze pytanie gdy probuje
wyswietlic wartosc hasha to wyswietla mi nastepujace linie

numer: 110024750, kod: HASH(0x2f67214).
numer: 123004849, kod: HASH(0x2f67534).
numer: 110003376, kod: HASH(0x2f66b34).
numer: 110025070, kod: HASH(0x2f6134c).
numer: 110025925, kod: HASH(0x2f67584).
numer: 110024562, kod: HASH(0x2f67624).
numer: 123000996, kod: HASH(0x2f6143c).

a taki kod zastosowalem

while( my ($numer, $kod) = each %tab1 ) {
        print "numer: $numer, kod: $kod.\n";
    }
Re: przypisanie wartosci jedenj tablicy do drugiej
#51731
Author: Szymon Sokół
Date: Wed, 30 Dec 2009 11:11
43 lines
2668 bytes
On Wed, 30 Dec 2009 04:23:25 +0100, gtbike@o2.pl wrote:

> On Fri, 25 Dec 2009 12:47:11 +0000 (UTC), Adam Osuchowski
> <someone@somewhere.com> wrote:

>>#v+
>>my %tab1;
>>while (<>)
>>{
>>  chomp;
>>  my ($numer, $nazwisko, $kod) = split / /;
>>  $tab1{$numer} = { nazwisko => $nazwisko, kod => $kod };
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>>}
>>#v-


> while( my ($numer, $kod) = each %tab1 ) {
>         print "numer: $numer, kod: $kod.\n";
>     }

No i tak się kończy korzystanie z gotowca, którego się nie rozumie. 
Elementami hasha %tab1 są - patrz linia, którą podkreśliłem - referencje do
hashy. A nie same kody. Więc "each %tab1" zwraca pary złożone z klucza
(którym jest numer) i - tadam! - referencji do hasha, który zawiera pola
"kod" i "nazwisko". Powinieneś był zrobić coś w stylu:

while( my ($numer, $wartosc) = each %tab1 ) {
        my $kod = $wartosc->{kod};
        print "numer: $numer, kod: $kod.\n";
}

lub alternatywnie:

foreach my $numer (keys %tab1) {
   printf "numer: %s, kod: %s.\n", $numer, $tab1{$numer}{$kod};
}

-- 
Szymon Sokół (SS316-RIPE) -- Network Manager                                 B
Computer Center, AGH - University of Science and Technology, Cracow, Poland  O
http://home.agh.edu.pl/szymon/ PGP key id: RSA: 0x2ABE016B, DSS: 0xF9289982  F
Free speech includes the right not to listen, if not interested -- Heinlein  H
Re: przypisanie wartosci jedenj tablicy do drugiej
#51732
Author: gtbike
Date: Wed, 30 Dec 2009 18:23
43 lines
2498 bytes
On Wed, 30 Dec 2009 12:11:16 +0100, Szymon Sokół
<szymon@bastard.operator.from.hell.pl> wrote:

>On Wed, 30 Dec 2009 04:23:25 +0100, gtbike@o2.pl wrote:
>
>> On Fri, 25 Dec 2009 12:47:11 +0000 (UTC), Adam Osuchowski
>> <someone@somewhere.com> wrote:
>
>>>#v+
>>>my %tab1;
>>>while (<>)
>>>{
>>>  chomp;
>>>  my ($numer, $nazwisko, $kod) = split / /;
>>>  $tab1{$numer} = { nazwisko => $nazwisko, kod => $kod };
>    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>>>}
>>>#v-
>
>
>> while( my ($numer, $kod) = each %tab1 ) {
>>         print "numer: $numer, kod: $kod.\n";
>>     }
>
>No i tak się kończy korzystanie z gotowca, którego się nie rozumie. 
>Elementami hasha %tab1 są - patrz linia, którą podkreśliłem - referencje do
>hashy. A nie same kody. Więc "each %tab1" zwraca pary złożone z klucza
>(którym jest numer) i - tadam! - referencji do hasha, który zawiera pola
>"kod" i "nazwisko". Powinieneś był zrobić coś w stylu:
>
>while( my ($numer, $wartosc) = each %tab1 ) {
>        my $kod = $wartosc->{kod};
>        print "numer: $numer, kod: $kod.\n";
>}
>
>lub alternatywnie:
>
>foreach my $numer (keys %tab1) {
>   printf "numer: %s, kod: %s.\n", $numer, $tab1{$numer}{$kod};
>}
Dokladnie nie zrozumialem tego przykladu ktorego znalazlem w necie,
dzieki za pomoc, teraz juz wiem jak to sie robi, poczytam manuale bez
tego sie nie obejdzie.
Re: przypisanie wartosci jedenj tablicy do drugiej
#51733
Author: Michal
Date: Wed, 06 Jan 2010 19:28
22 lines
1653 bytes
gtbike@o2.pl wrote:

> Witam
> Mam 2 tablice tab1 i tab2, 
> tab1 zawiera dane takie jak:
> numer_pracownika,Nazwisko Imie, KOD
> Mam druga tablice tab2:
> ktora zawiera dane takie jak:
> numer_pracownika,Nazwisko Imie, koszta
> 
> i tutaj moje pytanie w jaki sposob pobrac KOD z tab1 i przypisac go
> odpowiedniemu pracownikowi z  tablicy tab2 ?

Mam jeszcze jedno pytanie bo nie potrafie poradzic sobie z problemem
mecze go juz od paru dni. A mianowicie majac juz tablice z numerem
pracownika,nazwisko imie kod koszta, potrzebuje policzyc sume kosztow
dla odpowiednich kodow, kody sie powtarzaja. Myslalem nad tym aby takie
same wartosci kodow z kosztami wrzucac do osobnej tablicy i wtedy
sumowac, tylko KODy moga byc zawsze inne i tutaj zaczely sie dla mnie
schody.

-- 
Re: przypisanie wartosci jedenj tablicy do drugiej
#51734
Author: Szymon Sokół
Date: Wed, 06 Jan 2010 19:45
18 lines
2049 bytes
On Wed, 6 Jan 2010 19:28:43 +0000 (UTC), Michal wrote:

> Mam jeszcze jedno pytanie bo nie potrafie poradzic sobie z problemem
> mecze go juz od paru dni. A mianowicie majac juz tablice z numerem
> pracownika,nazwisko imie kod koszta, potrzebuje policzyc sume kosztow
> dla odpowiednich kodow, kody sie powtarzaja. Myslalem nad tym aby takie
> same wartosci kodow z kosztami wrzucac do osobnej tablicy i wtedy
> sumowac, tylko KODy moga byc zawsze inne i tutaj zaczely sie dla mnie
> schody.

Użyj osobnego hasha, powiedzmy %suma, indeksowanego kodami - tak że
$suma{$kod} będzie zawierać sumę kosztów dla kodu $kod.

-- 
Szymon Sokół (SS316-RIPE) -- Network Manager                                 B
Computer Center, AGH - University of Science and Technology, Cracow, Poland  O
http://home.agh.edu.pl/szymon/ PGP key id: RSA: 0x2ABE016B, DSS: 0xF9289982  F
Free speech includes the right not to listen, if not interested -- Heinlein  H
Re: przypisanie wartosci jedenj tablicy do drugiej
#51735
Author: Michal
Date: Tue, 12 Jan 2010 17:26
21 lines
1924 bytes
Szymon Sokół wrote:

> On Wed, 6 Jan 2010 19:28:43 +0000 (UTC), Michal wrote:
> 
> > Mam jeszcze jedno pytanie bo nie potrafie poradzic sobie z problemem
> > mecze go juz od paru dni. A mianowicie majac juz tablice z numerem
> > pracownika,nazwisko imie kod koszta, potrzebuje policzyc sume
> > kosztow dla odpowiednich kodow, kody sie powtarzaja. Myslalem nad
> > tym aby takie same wartosci kodow z kosztami wrzucac do osobnej
> > tablicy i wtedy sumowac, tylko KODy moga byc zawsze inne i tutaj
> > zaczely sie dla mnie schody.
> 
> Użyj osobnego hasha, powiedzmy %suma, indeksowanego kodami - tak że
> $suma{$kod} będzie zawierać sumę kosztów dla kodu $kod.

Dzieki tak tez zrobilem i liczy tak jak chcialem. Mam za to kolejne
pytanie. Czasami koszta sa 0 lub puste pole i gdy robie warunek rozne
od 0 lub " " to nie wyklucza mi tych pustych hashy. Jak zrobic warunek
na rozne od zera lub pusta wartosc "kosztow"?

-- 
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