[C++] modul liczb

Inkognito
Użytkownik
Użytkownik
Posty: 218
Rejestracja: 24 lis 2009, o 10:55
Płeć: Mężczyzna
Lokalizacja: Wilno
Podziękował: 27 razy

[C++] modul liczb

Post autor: Inkognito »

Chcem zapytac, czy jest jaka funkcja w c++ zeby liczylaby modul liczb
np.: jezeli a=-5 to wyda 5, jezeli a=5 to i wyda 5;
czy cos takiego bez ifu nie uda sie zrobic?
chlorofil
Użytkownik
Użytkownik
Posty: 548
Rejestracja: 16 cze 2010, o 18:30
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 29 razy
Pomógł: 96 razy

[C++] modul liczb

Post autor: chlorofil »

abs(...), fabs(), itp.
Inkognito
Użytkownik
Użytkownik
Posty: 218
Rejestracja: 24 lis 2009, o 10:55
Płeć: Mężczyzna
Lokalizacja: Wilno
Podziękował: 27 razy

[C++] modul liczb

Post autor: Inkognito »

dzieki,
jak rozumiem roznicy miedzy nimi zadnej?
chlorofil
Użytkownik
Użytkownik
Posty: 548
Rejestracja: 16 cze 2010, o 18:30
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 29 razy
Pomógł: 96 razy

[C++] modul liczb

Post autor: chlorofil »

Jest różnica. abs() przyjmuje inta, a fabs() double'a.
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++] modul liczb

Post autor: Althorion »

Zawsze można też:

Kod: Zaznacz cały

a > 0 ? a : -a
Xitami

[C++] modul liczb

Post autor: Xitami »

funkcja abs() w języku C/C++ (bez if)

Kod: Zaznacz cały

int abs(int O00)<%return(O00<<!000)*(O00>>037)+O00/*OOO++ - 012*/ +" else return "&000;%>
a może makro

Kod: Zaznacz cały

#define ABSI(x) (((x) & ~(((int)(x))>>31)) - ((x) & (((int)(x))>>31)))
adambak
Użytkownik
Użytkownik
Posty: 1272
Rejestracja: 8 sty 2011, o 18:18
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 295 razy
Pomógł: 115 razy

[C++] modul liczb

Post autor: adambak »

Xitami, czemu w swoich przykładowych kodach często używasz takich dziwnych nazw zmiennych? imo jest nieczytelne i można dostać oczopląsu.. ale proszę nie zrozum mnie źle, po prostu pytam z ciekawości, czy takie nazwy są używane przez Ciebie z jakiegoś konkretnego powodu
Xitami

[C++] modul liczb

Post autor: Xitami »

pewnie, że zamiast

Kod: Zaznacz cały

int abs(int O00)<%return(O00<<!000)*(O00>>037)+O00/*OOO++ - 012*/ +" else return "&000;%>
mogłem napisać

Kod: Zaznacz cały

int abs(int n){
        return 2*n*(n>>31)+n;}
co jest absolutnie równoważne
ale tak jest mniej zabawnie i widać, że funkcja ma wadę,
ślubuję, że tu pierwszy raz udziwniałem by ukryć wadę mojego pomysłu
makro wziąłem z książki

jeszcze jeden pomysł : sqrt(n*n)
chlorofil
Użytkownik
Użytkownik
Posty: 548
Rejestracja: 16 cze 2010, o 18:30
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 29 razy
Pomógł: 96 razy

[C++] modul liczb

Post autor: chlorofil »

Pomysł kompletnie nietrafiony. Liczyć pierwiastek tylko po to, żeby wyznaczyć wartość bezwzględną? Widać żeś matematyk, a nie programista ;P
adambak
Użytkownik
Użytkownik
Posty: 1272
Rejestracja: 8 sty 2011, o 18:18
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 295 razy
Pomógł: 115 razy

[C++] modul liczb

Post autor: adambak »

Xitami tylko podał różne metody zrealizowania tego zadania (jak zwykle kilka).. myślę, że to nie stanowi podstawy do wydawania osądów czy jest matematykiem czy programistą z resztą ja go kojarzę jako właśnie dobrego programistę
Xitami

[C++] modul liczb

Post autor: Xitami »

Dziękuję Adasiu

Istnieją takie liczby których modułu nie da się policzyć bez pierwiastka.
A OP w końcu nie powiedział o jakie liczby chodzi.
chlorofil
Użytkownik
Użytkownik
Posty: 548
Rejestracja: 16 cze 2010, o 18:30
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 29 razy
Pomógł: 96 razy

[C++] modul liczb

Post autor: chlorofil »

Xitami pisze:Istnieją takie liczby których modułu nie da się policzyć bez pierwiastka.
Np. ?
Xitami

[C++] modul liczb

Post autor: Xitami »

nie wiem jak bez pierwiastka zabrać się do zesoplonych
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++] modul liczb

Post autor: Afish »

Althorion pisze:Zawsze można też:

Kod: Zaznacz cały

a > 0 ? a : -a
Przy czym ten kod nie zawsze zadziała :) Oczywiście mam tu na myśli przypadek INT_MIN.
chlorofil
Użytkownik
Użytkownik
Posty: 548
Rejestracja: 16 cze 2010, o 18:30
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 29 razy
Pomógł: 96 razy

[C++] modul liczb

Post autor: chlorofil »

Oczywiście. To jest słuszna uwaga. Dlatego polecam zastosowanie funkcji bibliotecznych.
ODPOWIEDZ