• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Konwertowanie ułamków ósemkowych na dziesiętne

Object Storage Arubacloud
0 głosów
400 wizyt
pytanie zadane 16 listopada 2017 w C i C++ przez Crispo Nowicjusz (120 p.)
Witam wszystkich. Mam pewien problem. Mam napisać program który konwertuje ułamki ósemkowe na dziesiętne. Wiem jaka jest analogia działania programu. Po wpisaniu np. 0.75(8) powinienem przeliczyć 7 * 1/8 + 5 * 1/64. Jeśli jest więcej liczb po kropce to analogicznie idą większe minusowe potęgi 8. 8 do -1 to 1/8, 8 do -2 to 1/64. Jeśli nie ma czegoś takiego jak potęgi minusowe to czy może być wykonane to w ten sposób, że program biorąc np. 7 mnoży ją * (1/n) gdzie n to następna potęga 8? Czy wtedy mogą wyjść jakieś złe wyniki? Drugie pytanie to w jaki sposób mam rozdzielać sobie np. 7 i 5 żeby program osobno je sobie przeliczył? Czytałem coś o get i getline w c++, ale nie do końca rozumiem działanie. Czy ta metoda jest w stanie rozdzielić te cyfry i zapisać je w tablicy po czym osobno je przemnożyć, a wyniki dodać? Czy myślę dobrze czy sobie utrudniam? Proszę o podpowiedzi. Dziękuje :)

1 odpowiedź

0 głosów
odpowiedź 16 listopada 2017 przez obl Maniak (51,280 p.)

Jeżeli masz liczbę np 1.75(8), i przyjmuję podstawę systemu r=8 to przeliczenie może wyglądać tak:

1 * r ^ 0 + 7 * r ^ -1 + 5 * r ^ -2 = 1,953125(10)

przynajmniej ja tak to widzę. Ważne jest abyś ustalił położenie separatora dziesiętnego bo to względem niego ustalać musisz potęgi bo podejrzewam, że dane będziesz wczytywał w postaci tekstu.

komentarz 16 listopada 2017 przez Crispo Nowicjusz (120 p.)
Okej rozumiem. Teraz jeszcze pytanie. Czy jeśli ustawię sobie tablice i wprowadzę do niej liczbę 0.75 przez scanf to w tablicy zapiszą się osobno cyfry 0, 7, 5? I jak z takiej tablicy wywołać dane cyfry np. te po kropce żeby przeprowadzić na nich operacje?
komentarz 17 listopada 2017 przez obl Maniak (51,280 p.)

Jeżeli będziesz miał ciąg znaków to będzie on tablicą składającą się z char-ów. Np.:

char text = "0.75";

for(int i = 0; i < strlen(text); i++){
    std::cout << text[i] << "\n";
}

wyświetli ci:

0
.
7
5

 

Podobne pytania

0 głosów
3 odpowiedzi 1,467 wizyt
pytanie zadane 26 maja 2020 w C i C++ przez Ola_00 Nowicjusz (210 p.)
0 głosów
2 odpowiedzi 968 wizyt
pytanie zadane 12 września 2017 w Matematyka, fizyka, logika przez maksbu23 Użytkownik (730 p.)
0 głosów
0 odpowiedzi 698 wizyt

92,632 zapytań

141,502 odpowiedzi

319,883 komentarzy

62,015 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...