Nowe posty

Autor Wątek: AWK i iloczyn bitowy  (Przeczytany 9170 razy)

Raymac

  • Gość
AWK i iloczyn bitowy
« dnia: 2005-10-30, 15:36:53 »
Zainstalowałem sobe gcc w wersji 3.4.4 na Mandrake 10.0. Kiedy chcę skompilować jakiś program z parametrem -lm, wyskakuje mi coś takiego:
[raymac@localhost Programy]$ g++ -O2 -static Text.cpp -lm
/usr/bin/ld: cannot find -lm

a jak napiszę samo g++ -lm, to coś takiego:
[raymac@localhost Programy]$ g++ -lm
/usr/lib/crt1.o(.text+0x18): In function `_start\\':
../sysdeps/i386/elf/start.S:98: undefined reference to `main\\'
collect2: ld returned 1 exit status

Pytanie, dlaczego/do czego jest ten parametr -lm ? - jeżeli dobrze zrozumiałem, to w manie do gcc pisze, że -lm to inaczej lib[i nazwa jakiejś biblioteki] - zainstalowałem wszystkie RPM\\'y z 1 płyty Mandraka, które miały w mazwie libmcośtam, ale dalej jest to samo. Please help.

jk33

  • Gość
AWK i iloczyn bitowy
« Odpowiedź #1 dnia: 2005-10-30, 17:27:35 »
2005-10-30 15:36:53 Raymac napisał:

> Zainstalowałem sobe gcc w wersji 3.4.4 na Mandrake 10.0. Kiedy chcę skompilować jakiś program z
 > parametrem -lm, wyskakuje mi coś takiego:
 > [raymac@localhost Programy]$ g++ -O2 -static Text.cpp -lm
 > /usr/bin/ld: cannot find -lm

-lm dolacza do programu biblioteke matematyczna
(funkcje pow, sqrt, itp.)
Mozliwe, ze w mandrake biblioteka ta jest
polaczona z innymi bibliotekami standardowaymi
i nie jest potrzebny -lm.

 >
 > a jak napiszę samo g++ -lm, to coś takiego:
 > [raymac@localhost Programy]$ g++ -lm
 > /usr/lib/crt1.o(.text+0x18): In function `_start\\':
 > ../sysdeps/i386/elf/start.S:98: undefined reference to `main\\'
 > collect2: ld returned 1 exit status
 >
\\"undefined reference to main\\"
Z tego wynika, ze w Twoim programie nie
ma funkcji main(), ktora jest podstawowa
funkcja programu w C/C++.

pozdrawiam

Raymac

  • Gość
AWK i iloczyn bitowy
« Odpowiedź #2 dnia: 2005-10-31, 11:38:09 »
Ok, dzięki za pomoc, bez static wszystko działa -> math to biblioteka shared.

Denton

  • Gość
AWK i iloczyn bitowy
« Odpowiedź #3 dnia: 2005-10-30, 14:36:18 »
Czy ktos wie czy da sie wogole policzyc iloczyn bitowy w awk bo z tego co ja widze to awk chyba nie ma takiej mozliwosci ? a jesli rzeczywiscie nie ma to czy ktos ma madry sposob zeby go zastapic?

greg000

  • Gość
AWK i iloczyn bitowy
« Odpowiedź #4 dnia: 2005-10-30, 19:57:45 »
Chodzi ci o "&&" ?

Denton

  • Gość
AWK i iloczyn bitowy
« Odpowiedź #5 dnia: 2005-10-31, 12:54:25 »
Nie o  && to jest iloczyn logiczny a iloczyn bitowy przynajmniej w C jest taki & .

greg000

  • Gość
AWK i iloczyn bitowy
« Odpowiedź #6 dnia: 2005-10-31, 18:37:55 »
Az tak dobrze awk nie znam, ale podaj przyklad co chcesz zrobic, ewentualnie co ci nie dziala .


Denton

  • Gość
AWK i iloczyn bitowy
« Odpowiedź #7 dnia: 2005-11-01, 10:54:09 »
Musze zamienic liczbe dziesietna na binarna ,gdzie  poszczegolne bity zostana wpisane do tablicy.

Denton

  • Gość
AWK i iloczyn bitowy
« Odpowiedź #8 dnia: 2005-11-01, 11:42:26 »
Narazie wysmarowalem skrypcik ale nie dziala na razie za bardzo a konkretnie nie dziala odwolanie do poprzedniego elementu tablicy czyli tab[$i--] , jakby awk nie widzial tych minusow i nie zmniejsza i


function zamiana(d) {
tab[1] = int($0);

for (i=2 ; i<=1000 ; i++){
tab[$i] = int(tab[$i--] / 2);
print "tab[$i]="tab[$i];
if((tab[$i--] - 2*tab[$i])!=0){
t[$i] = 1}
else{
t[$i] = 0}

print t[$i];
if(tab[$i]==0){break};
}
}
{
zamiana($0);
}

jezior

  • Gość
AWK i iloczyn bitowy
« Odpowiedź #9 dnia: 2005-11-01, 11:42:46 »
2005-11-01 10:54:09 Denton napisał:

> Musze zamienic liczbe dziesietna na binarna ,gdzie  poszczegolne bity zostana wpisane do
 > tablicy.

A nie wystarczy zapytac google?

http://www.gnu.org/software/gawk/manual/gawk.html#Bitwise-Functions

Denton

  • Gość
AWK i iloczyn bitowy
« Odpowiedź #10 dnia: 2005-11-01, 12:05:05 »
nie wiem czemu jesli uzyje compl(4) zamiast dostac 1 0 0  dostaje bzdury

Denton

  • Gość
AWK i iloczyn bitowy
« Odpowiedź #11 dnia: 2005-11-01, 12:20:53 »
pytanie o compl(4) juz nie aktualne

Denton

  • Gość
AWK i iloczyn bitowy
« Odpowiedź #12 dnia: 2005-11-01, 12:32:53 »
Dzieki za pomoc, to powinno mi wystarczyc

Denton

  • Gość
AWK i iloczyn bitowy
« Odpowiedź #13 dnia: 2005-11-01, 12:41:13 »
2005-11-01 11:42:26 Denton napisał:

> Narazie wysmarowalem skrypcik ale nie dziala na razie za bardzo a konkretnie nie dziala
 > odwolanie do poprzedniego elementu tablicy czyli tab[$i--] , jakby awk nie widzial tych minusow
 > i nie zmniejsza i
 >
 >
 > function zamiana(d) {
 > tab[1] = int($0);
 >
 > for (i=2 ; i<=1000 ; i++){
 > tab[$i] = int(tab[$i--] / 2);
 > print "tab[$i]="tab[$i];
 > if((tab[$i--] - 2*tab[$i])!=0){
 > t[$i] = 1}
 > else{
 > t[$i] = 0}
 >
 > print t[$i];
 > if(tab[$i]==0){break};
 > }
 > }
 > {
 > zamiana($0);
 > }
 >
Jesli ktos zna odpowiedz na to pytanie to bylbym zobowiazany

greg000

  • Gość
AWK i iloczyn bitowy
« Odpowiedź #14 dnia: 2005-11-01, 14:21:41 »
Nie wiem dlaczego odwolujac sie do elementu tablicy uzywasz 'tab[$i]', a nie 'tab' (moze to wynika z pudowy skryptu i "i" tore jest w petli for to nie to samo "i" co jest w "tab"). Druga sprawa tab[i--] jest chyba zapisem niepoprawnym bo 'i--' powoduje  przyporzadkowanie a potem zmniejszenie o jeden (jak sie myle to niech mnie ktos poprawi).
Wiec jak juz to musialoby byc tab[--i], ale to tez jest bledem poniewaz 'i' jest wenwatrz petli i jest za kazdym razem zwiekszane co spowoduje nieprawidlowe dzialanie petli 'for '. Wiec aby za duzo nie zmieniac to chyba najprosciej bedzie zapisac 'tab[i-1]'

Pozdr