Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Stránky: 1
Ahoj, jak mám udělat logaritmus proměnné v Cécku, log(n) skončí chybou, napadlo mě udělat switch, kde bych pro každé n definoval log s číslem a ne proměnnou, ale to mi přijde značně neefektivní.
Jak to udělat efektivně a správně.
Díky moc
Offline
Pro výpočet přirozeného logaritmu funguje "log(x)" (výpočet dekadického logaritmu je "log10(x)" ).
Chybou může být, že neimportuješ matematickou knihovnu <math.h> nebo že třeba nedeklaruješ danou proměnou nebo tam máš jinou syntaktickou chyba... ? Zkus zkontrolovat překlepy... případně tu vypiš chybové hlášení, co ti to píše.
Logaritmus ale jinak v Céčku určitě spočítat pomocí proměnné jde ;-)
Offline

Ahoj,
log (n), definovaný v math.h ti počítá přirozený logaritmus, na to pozor. Jakou chybou to končí?? chyba při překladu (například nemáš includnutý math.h)? pak dej číslo chyby (nebo se rovnou podívej na google).
A nebo, pokud ti to hází nesmyslné výsledky, tak možná jsi opomněl, že funkce ti spočítá přirozený logaritmus.
Potřebuješ-li binární, dekadický, nebo jakýkoli jiný, použij vzorce
Logaritmus základu (tedy ten jmenovatel) si rovnou převypočti (do nějaké konstanty), a pak to děl rovnou konstantou, ať nevoláš docela pomalou funkci log zbytečně
EDIT: kolega mně předběhl, log10(x) v tom math.h mně nenapadla :)
Offline
↑ cStP:
Knihovnu <math.h> importovanou mám, program jsem několikrát kontroval a překlepy jsem nenašel, ale teď mě napadlo jestii problém není v tomto:
mám pole hodnot (např. {10, 20, 50, .....}) a cyklem for přiřazuji do proměnné n postupně hodnoty uložené v poli (např, n = pole[i]) a potom pracuji s n a když chci provést log(n) tak při kompilaci GCCčkem mi to vyhodí následující chybu
logaritmus.c:(.text+0x6b): undefined reference to `log'
nemůže to být tím, že jsou hodnoty v poli? podle mě by mělo být jedno, kde jsou uloženy, ale v Céčku teprve začínám, tak nevím
Offline

To vypadá na špatně nastavený linker, našel jsem kolem toho tohle:
Odkaz, konkrétně:
Note that the problem appears to be a linkage error,
the compilation of the C++ code appearing to be successful.
You need to specify a library (maybe xosd.a or .o ?) to be
linked with your compiled file to have a complete application.
As this is an implementation-specific question, best would
be to post it in a forum dedicated to xosd or to your
platform/compiler (gcc).
EDIT: odkud proměnné bereš by nemělo rozhodovat, pokud je správného typu (těžko budeš logaritmovat ukazatel, nebo pole charů, že)
Offline
↑ frank_horrigan:
proměnná n vždy nabývá celočíselných hodnot
nevím čím to může být :(
Offline

Zkus schválně jiný kompilátor a linker, ten by ti to měl přeložit bez problémů....
jinak určitě, viz ten článek, mrkni se na fórum kolem GCC, tam by určitě mělo být řečeno, co s tím - je to docela běžná chyba... funkci, kterou voláš, tak nemůže linker najít, a říká, že není definovaná....
nebo zkus k tomu přilinkovat math.o, math.lib, apod. kde by ta funkce měla být
Offline
↑ frank_horrigan:
to mi právě bylo nejvíc divné, že fci. log nezná
Díky moc
Offline
Stránky: 1