[C] pierwiastki

Awatar użytkownika
waliant
Użytkownik
Użytkownik
Posty: 1801
Rejestracja: 9 gru 2010, o 22:16
Płeć: Mężczyzna
Lokalizacja: warszawa
Podziękował: 275 razy
Pomógł: 183 razy

[C] pierwiastki

Post autor: waliant »

witam, mam taki problem z wyliczaniem pierwiastkow w C, tak wychodzi:

Kod: Zaznacz cały

#include <stdio.h>
#include <math.h>
int main()
{
    double x;
    x=pow(27, 1.0/3.0);
    printf("%f
", x);
       
return 0;
}

natomiast ze zmienna nie kompiluje :

Kod: Zaznacz cały

#include <stdio.h>
#include <math.h>
int main()
{
    double x,y;
    y=27;
    x=pow(y, 1.0/3.0);
    printf("%f
", x);
       
return 0;
}
Proszę o pomoc dlaczego ze zmienna nie działa.
Awatar użytkownika
MichalPWr
Użytkownik
Użytkownik
Posty: 1625
Rejestracja: 29 wrz 2010, o 15:55
Płeć: Mężczyzna
Lokalizacja: Leszno
Podziękował: 7 razy
Pomógł: 387 razy

[C] pierwiastki

Post autor: MichalPWr »

U mnie na visual-u się kompiluje. Podejrzewam, że wystarczy wpisać

Kod: Zaznacz cały

27.0
i wszystko będzie ok.
Awatar użytkownika
Althorion
Użytkownik
Użytkownik
Posty: 4541
Rejestracja: 5 kwie 2009, o 18:54
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 9 razy
Pomógł: 662 razy

[C] pierwiastki

Post autor: Althorion »

Łatwiej Ci będzie pomóc, jeśli powiesz dokładnie pod czym kompilujesz i jakie komunikaty o błędach dostajesz.
Awatar użytkownika
waliant
Użytkownik
Użytkownik
Posty: 1801
Rejestracja: 9 gru 2010, o 22:16
Płeć: Mężczyzna
Lokalizacja: warszawa
Podziękował: 275 razy
Pomógł: 183 razy

[C] pierwiastki

Post autor: waliant »

niestety napisanie \(\displaystyle{ 27.0}\) nie pomaga. Kompiluję na Linuxie w terminalu, wyskakują takie błędy:
/tmp/ccPW2tcH.o: In function `main':
3.c:(.text+0x25): undefined reference to `pow'
collect2: ld returned 1 exit status
Awatar użytkownika
MichalPWr
Użytkownik
Użytkownik
Posty: 1625
Rejestracja: 29 wrz 2010, o 15:55
Płeć: Mężczyzna
Lokalizacja: Leszno
Podziękował: 7 razy
Pomógł: 387 razy

[C] pierwiastki

Post autor: MichalPWr »

Oto rozwiązanie problemu:

Kod: Zaznacz cały

gcc program.c -lm
Dołączając bibliotekę

Kod: Zaznacz cały

math.h
musisz dodać na końcu.
Jeśli już kompilujesz pod linux-em, co mnie bardzo cieszy, używaj najlepiej takiego polecenia

Kod: Zaznacz cały

gcc -Wall -pedantic program.c -lm
Wtedy wymagana jest najwyższa zgodność z językiem ANSI C.

gdzie

Kod: Zaznacz cały

program
to nazwa kodu źródłowego Twojego programu.
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[C] pierwiastki

Post autor: Afish »

MichalPWr pisze:Wtedy wymagana jest najwyższa zgodność z językiem ANSI C.
Za dokumentacją gcc:
Some users try to use '-pedantic' to check programs for strict ISO C conformance. They soon find that it does not do quite what they want: it finds some non-ISO practices, but not all - only those for which ISO C requires a diagnostic, and some others for which diagnostics have been added.

A feature to report any failure to conform to ISO C might be useful in some instances, but would require considerable additional work and would be quite different from '-pedantic'. The GNU team doesn't have plans to support such a feature in the near future.
ODPOWIEDZ