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

c++, zamiana pozycyjnych systemów liczbowych 2->10

VPS Starter Arubacloud
0 głosów
1,108 wizyt
pytanie zadane 27 sierpnia 2019 w C i C++ przez martin1724 Użytkownik (690 p.)
#include <iostream>
#include <string.h>
#include <math.h>
using namespace std;

int potega(int podstawa, int potega)
{
    int wynik = 1;
    for(int i=0;i<potega;i++)
    {
        wynik*=podstawa;
    }
    return wynik;
}
int main()
{
    string tekst;
    cout << "podaj liczbe: ";
    getline(cin,tekst);
    int dlugosc = tekst.size();
    double a = dlugosc - 1;
    int liczba=0;
    for(int i=0;i<tekst.size();i++)
    {
        liczba += (tekst[i] * potega(2,a));
        a--;
    }
    cout << "liczba wynosi w systemie dziesietnym: " << liczba;
    return 0;
}

Cześć, mógłby ktoś doradzić jak zamienic tego stringa na inta, tak żeby wynik wychodził dobry? I czy występują jeszcze jakieś błędy?

2 odpowiedzi

0 głosów
odpowiedź 27 sierpnia 2019 przez tangarr Mędrzec (155,140 p.)
tekst[i] zawiera znak ascii a nie cyfrę z zakresu 0-9
musisz przekonwertować znak ascii na odpowiadającą mu cyfrę.
tutaj tabela znaków ascii https://pl.wikipedia.org/wiki/ASCII#Tabela_kod%C3%B3w_ASCII
komentarz 27 sierpnia 2019 przez martin1724 Użytkownik (690 p.)
niekoniecznie mam pomysł żeby to zrobić, użyć jakieś konkretnej funkcji?
komentarz 27 sierpnia 2019 przez tangarr Mędrzec (155,140 p.)

Podpowiedź: Spójrz na tą tabelkę i pomyśl jak napisać funkcję wyciągającą liczbę odpowiadającą przekazanemu znakowi

int wyciągnij_cyfre(const char &znak) {
     //twój kod
}
znak wartość
0 48
1 49
2 50
3 51
4 52
5 53
6 54
7 55
8 56
9 57

 

0 głosów
odpowiedź 27 sierpnia 2019 przez tkz Nałogowiec (42,020 p.)
edycja 27 sierpnia 2019 przez tkz

https://en.cppreference.com/w/cpp/utility/from_chars

https://coliru.stacked-crooked.com/a/666166cbe386579d

Jest już gotowa funkcja do potęg. Chyba, że chciałeś sam napisać, to luz. 

Edit: 

https://coliru.stacked-crooked.com/a/ae913ad0e5db28de Zamienia binarny na decymalny. 

Podobne pytania

0 głosów
0 odpowiedzi 614 wizyt
0 głosów
0 odpowiedzi 294 wizyt
0 głosów
2 odpowiedzi 324 wizyt
pytanie zadane 30 maja 2016 w Offtop przez Nicolaus Dyskutant (9,740 p.)

93,020 zapytań

141,985 odpowiedzi

321,284 komentarzy

62,366 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

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...