.
Alky: Witam,
mógłby mi ktoś powiedzieć, czy w języku C++ jest komenda/funckja zamieniająca liczbę z systemu
decymalnego na czwórkowy/dwójkowy ?
Myślę generalnie o systemach pozycyjnych będących wielokrotnością 2.
Kiedyś miałem coś zrobić na szesnastkowym i pamiętam, że używałem zwyczajnie
cout<<hex<<a;
teraz znowu potrzebuję zamian z czwórkowego i ósemkowego ( zadanie które potencjalni mogłoby
się pojawić na maturze, a napisanie funkcji zamieniającej na dane systemy zabrałoby mi pare
minut , czego wolałbym jednak uniknąć, jeśli środowisko ma wbudowaną taką opcję.
cout<<oct<<a;
więc 16−kowy i 8−kowy z głowy, ale zostaje binarny i czwórkowy, a do tych udało mi się dojść .
Jakaś podpowiedź ?
18 kwi 21:31
Alky: Zjadło kawałek + poprawka ( "a do tych NIE udało mi się dojść <tak jak np do ósemkowego
prógując wstawiać jakieś skróty nazw tych systemów>)
18 kwi 21:33
Adamm: dwójkowy na pewno istnieje, chociaż nie pamiętam dokładnie jak to się robiło
18 kwi 21:33
18 kwi 21:35
g: Ze zmiennej typu int łatwo wydobyć pojedyncze bity, albo grupy bitów, czyli cyfry przy
podstawie 2n. Na przykład: układ szesnastkowy, cyfra trzecia (o wadze 256)
cyfra = (liczba >> 2*4) & 0xF;
18 kwi 21:38
Metis: Internet kipi od takich informacji. Wpisz swój problem po ang. dec to ... c++
18 kwi 21:39
Alky: g wiem jak działają systemy...
Szukałem też trochę, ale srednio się doszukałem. Potem jeszcze trochę z tym powalczę.
Jeśli chodzi o te zamiany co wcześniej mówiłem (..<<hex/oct<<a; ) to chyba nie można w ten
sposób potraktować 2 i 4 .
Znalazłem też funkcję setbase(), ale i ona nie działa dla 2 i 4. Dla 8 i 16 jest ok, ale dla
tych dwóch jeszcze sobie poszukam. Najwyżej po prostu napiszę sobie tą funkcje i strace te 10
min.
Myślałem, że może zwyczajnie binarny i czwórkowy jakoś inaczej się zapisuje, ale da się go
zrobić tak jak tamte 2 pozostałe, ale chyba nie.
Dzięki za pomoc tak czy inaczej. Poszukam jeszcze czegoś na stackoverflow i głębiej sięwczytam
w komentarze przy tym co wysłał @Adamm .
18 kwi 21:55
behroror: dobra,.... zamień
0101010101010101 na czwórkowy..
18 kwi 22:29
Alky: No widze... wyzwanie, hm ? 15−latkom w gimnazjum też dawałeś takie wymagające zadania ?
Przypadkiem miałem okazje nauczyć się potęgować, mnożyć i dodawać. Tak wyszło. Chyba nie muszę
Ci niczego udowadniać... Pozdrawiam
18 kwi 23:02
Adamm: Alky, myślę że nawet
5−latki by sobie z tym poradziły
18 kwi 23:05
Alky: Też o tym pomyślałem pisząc o 15−latkach ^^
18 kwi 23:09
behroror: ale do czego ja to pisałem
? otóż łatwo zauważyć, że można grupować te 0 i 1 po 4 bity, i
napisanie tego algorytmu to kilka linijek, jeśli chcesz iść na piechotę zamiast korzystać z
gotowców, to też nie jest jakieś wyzwanie
18 kwi 23:16
Adamm: behroror, myślę że każdy to zauważył już przy pierwszym podejściu
18 kwi 23:17
behroror: tzn. myślałem, że ten temat powstał by pomóc się uporać z pewnym problemem algorytmicznym,
najwidoczniej już wszystko się rozwiązało
18 kwi 23:18
Alky to kurew elo : NIE KURWA ŚMIETNIKI JEBANE
18 kwi 23:26
Alky: Przepraszam za kolege on nie chciał
18 kwi 23:27
Alky: Pisałem już w pierwszym poście w tym temacie, że to nie jest kwestia trudności związanych z
zamianą, tylko ewentualna możliwość spotkania zadania ( na maturze) w którym będę musiał
wykorzystać zamianę na inne systemy. Tam na cały program mam 50 min i nie chce tracic czasu.
Choci o najszybszą metodę, i pytałem czy mogę to ująć w jednej linijce tak jak 8−kowy i
16−kowy
18 kwi 23:27
Alky: Jestem gejem i korzystam z tego forum tylko dlatego ,ze kręcą mnie panowie matematycy i lubie
trójkąty
18 kwi 23:28
Alky: No ładnie
Dzieje się
18 kwi 23:28
behroror: Alky, jak ja pisałem mature z informatyki, to miałem ograniczony zasób funkcji z których mogłem
korzystać, więc część funkcji musiałem napisać samemu.
18 kwi 23:29
Alky: Ej ziomki dajecie , podawajcie rozmiary penisów ja ułoże algorytm i poruchamy
18 kwi 23:29
Alky: A pisałeś rok temu, tak ?
18 kwi 23:29
Alky: Δ
18 kwi 23:30
behroror: ja jeszcze pisałem tę 'starą' mature
18 kwi 23:30
Alky: Wnioskuje po poście który widziałem dot. liczb zespolonych.
Musze przyznać, że nic mi o tym nie wiadomo (odnośnie ograniczonego zasobu funkcji). Może się
doinformuje. Myślałem, że "wszsytkie chwyty dozwolone"
18 kwi 23:31
Alky: Ah. No dobrze. Mniejsza. Sprawdze to sobie. Dzięki za informacje
18 kwi 23:32
Alky:
ej chłopaki obliczcie mi prosze pole tego czerwonego trójkąta
18 kwi 23:32
behroror: jestem na 3cim roku neurobiologii i pomyślałem, że warto się kształcić dalej, więc wybrałem
informatykę, i tak sobie powoli matmę przerabiam
18 kwi 23:33
Alky: α≠β Ω ⇒ π
18 kwi 23:36
Alky: sory nie tutaj
18 kwi 23:36
Alky: No informatyka z dzisiejszymi zapatrywaniami na przyszłość w tej dziedzinie na pewno się opłaci
18 kwi 23:36
Alky: Pozdrawiam swoje alter ego
18 kwi 23:37
Alky: Ostatecznie wygląda to chyba tak jak pisał behroror i rzeczywiście napisałem sobie dwie
funkcje zamieniające dowolne wyrażenie z dowolnego systemu na dziesiątkowy i drugą−z
dziesiątkowgo na dowolny. Niby chwile zajmuje, ale w sumie jak juz się to ma to reszta jest
kwestią użycia tych funkcji i jakiegoś prostego znajdywania konkretnych wartości, sortowanie
etc.
20 kwi 00:48
Mariusz:
Spróbuj tego
iomanip setbase
20 kwi 11:58
behroror: nie może
20 kwi 12:04
Alky: Próbowałem już z setbase(), ale działa tylko dla systemów 8, 10 i 16. Poza tym może się okazać
tak jak mówi behroror, że nie mogę tego użyć.
20 kwi 15:48
Mariusz:
To pozostaje jedynie napisać własną funkcję
20 kwi 18:19
Alky: string z
systemu
dziesietnego(int liczba, int system)
{
int znak=1;
int reszta;
char znak
ascii;
string s="";
if(liczba<0)
{
znak=−1;
liczba=−liczba;
}
if(liczba==0)
return "0";
while(liczba>0)
{
reszta=liczba%system;
liczba=liczba/system;
znak
ascii=48+reszta;
s=znak
ascii+s;
}
if(znak<0)
return '−'+s;
return s;
}
int na
system
dziesiatkowy(string liczba1)
{
int znak=1;
int dl
liczby1;
int liczba
wdziesiatkowym;
dl
liczby1=liczba1.size();
if(liczba1[0]=='−')
{
znak=−1;
for(int i=0;i<dl
liczby1;i++)
liczba1[i]=liczba1[i+1];
}
if(liczba1=="0")
return '0';
for(int potega=0
l
liczby1−1>=0
l
liczby1−−,potega++)
{
liczba
wdziesiatkowym=liczba
wdziesiatkowym+pow(liczba1[dl
liczby1−1], potega);
}
if(znak<0)
return '−'+liczba
wdziesiatkowym;
return liczba
wdziesiatkowym;
}
wczoraj przed snem zrobiłem 2 funckje zamieniające z dziesiątkowego na inne systemy i z innych
na dziesiątkowy, ale muszę go jeszcze poprawić, bo coś chyba jeszcze tam kuleje. Próbowałem
odpalić na jakiechś danych i wypluło błędne wyniki. Jak dziś wieczorem wrócę do domu to
zobaczę co mu dolega
20 kwi 18:39