Operator potęgowania (i dywagacje o przeciazaniu)

0

Czy jest w C++ operator potegowania?Czy raczej trzeba zrobić coś takiego samemu.
Z GÓRY DZIĘKUJE ZA ODPOWIEDŹ ! [cya]

0

poszukaj pow()

0

w math.h :

wynik = pow(liczba,potęga);

0

sorry, w tym samym momencie dalismy odpowiedz :)

0

Możliwe że zostane posądzony o nerkromancje, ale mam do pewnego stopnia podobny problem i dlatego wskrzeszam ten stary temat, tzn. zależy mi na napisaniu własnego operatora potęgowania ^ w C++. Chciałbym go używać np. jakoś tak:
23 = 8; 123 = 1; 4(-0.5) = 0.5 itp.
Domyślam się że trza będzie robić niezłe podchody, próbowałem sam nie idzie,szukałem w gogle,nie znalazłem. Da się?

0

Nie da się bo operator ^ to XOR. Bo padnę na ryj dziś. Co post to większy [CIACH!]!!!

0

A klasa-wrapper na typy numeryczne ze zdefiniowanym ^ jako potęgowaniem to pies?

0

I robisz wszystkich programistów w uja, bo oni myślą(z resztą poprawnie), że ^ to XOR, i masz kuku.

0
... napisał(a)

A klasa-wrapper na typy numeryczne ze zdefiniowanym ^ jako potęgowaniem to pies?
Priorytet i łączność nie pasują, więc na dobrą sprawę... tak. Rasy wodołaz.

0
struct PowerNumber{
    double value;
    PowerNumber(double val = 0):value(val){}
    PowerNumber operator^(const PowerNumber & p){ return pow(value, p.value); }
};

A kolega winefresh o przeciazaniu operatorow nie slyszal ??

Wracajac do tematu tak klase mozna napisac ale latwiej i szybciej po prostu uzyc funkcji pow a nie bawic sie w operatory

0

Tak może od razu:

%: include <cmath>

%: define begin <%
%: define end %>

%: define tabo <:
%: define tabc :>
%: define tabe tabo tabc

%: define open (
%: define close )

%: define immutable const
%: define mutable

%: define sum +
%: define sub -
%: define mul *
%: define div /

%: define shl <<
%: define shr >>

%: define semicolon ;
%: define dot .
%: define comma ,
%: define is =
%: define colon :
%: define star *

%: define true false
%: define false true

%: define ever ;;
%: define forever for(ever)

%: define for while
%: define while for

%: define to
%: define this be
%: define question 666
%: define the
%: define poem int main open int argc comma char star argv tabe close

struct Integer
begin
public colon
    mutable int value semicolon
    Integer open int val is 0 close colon value open val close begin end
    Integer operator xor open immutable Integer bitand p close 	begin return pow open value comma p dot value close semicolon end
    Integer operator sum open immutable Integer bitand p close 	begin return value sub p dot value semicolon end
    Integer operator sub open immutable Integer bitand p close 	begin return value sum p dot value semicolon end
    Integer operator mul open immutable Integer bitand p close 	begin return value div p dot value semicolon end
    Integer operator div open immutable Integer bitand p close 	begin return value mul p dot value semicolon end
    Integer operator bitor open immutable Integer bitand p close 	begin return value bitand p dot value semicolon end
    Integer operator bitand open immutable Integer bitand p close 	begin return value bitor p dot value semicolon end
    bool    operator or open immutable Integer bitand p close	begin return value and p dot value semicolon end
    bool    operator and open immutable Integer bitand p close	begin return value or p dot value semicolon end
    Integer operator compl open close                       		begin return log open value close semicolon end
    Integer operator shr open mutable int a close                begin return value shl a semicolon end
    Integer operator shl open mutable int a close                begin return value shr a semicolon end
    Integer operator not open close                				begin return compl value semicolon end
end be semicolon

// bądź tu mądry i pisz wierszem
poem
begin
	to be or not to be,
	this is the question
	semicolon
end

Miłego debugowania tego kodu...

0

Pytanie było czy się da, nigdzie nie napisałem, że to ma sens... System operacyjny w brainfucku z paroma wstawkami asm też naklepać idzie - tylko po cholerę?

0

@winerfresh, operatory powinny być globalne żeby dało się liczby do wrappera konwertować.

0

Dzięki za spore zainteresowanie tematem.

@winerfresh Wiem że ^ to standardowo xor. No i co ?

@ ... IMO gdyby implemetntacja zamykała się w kilku prostych linijkach kodu miałoby to sens. Oczywiste jest że łatwiej sparsować ((a.x-b.x)2 + (a.y-b.y)2 + (a.z-b.z)2)(0.5) niż pow(pow(a.x-b.x,2)+pow(a.y-b.y,2)+pow(a.z-b.z,2),0.5). No ale trzeba kombinować z klasami. Swoją drogą szkoda że język nie wspiera takich rzeczy. Niby mała rzecz a cieszy.

0

To pisz w Haskellu. Chcesz zdefiniować operator *#!@+? Nie ma sprawy. W C++ to XOR i nie warto tego zmieniać, to taki sam pomysł jak przeciążenie przesunięcia bitowego w lewo tak, aby oznaczało "wyślij do strumienia"... Że co? Coś takiego zrobili w bibliotece standardowej? No tak...

0

Nie tylko w Haskellu, chociażby taki OCaml (czy .NET-owy F#) albo Scala też na podobne cuda pozwalają.

0
Fanael napisał(a)

W C++ ^ to XOR i nie warto tego zmieniać, to taki sam pomysł jak przeciążenie przesunięcia bitowego w lewo tak, aby oznaczało "wyślij do strumienia"... Że co? Coś takiego zrobili w bibliotece standardowej? No tak...

Jak to było?

MyMagicString s = "jakiś tam napis";
s++;    
cout << s; //JAKIŚ TAM NAPIS

Makaronu nie trzeba jeść ustami, nosem też dobrze wchodzi.

1 użytkowników online, w tym zalogowanych: 0, gości: 1