Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Konwersja liczby na pojedyncze cyfry i odwrotnie

Ostatnio zmodyfikowano 2016-07-16 20:16
Autor Wiadomość
Traveler
Temat założony przez niniejszego użytkownika
Konwersja liczby na pojedyncze cyfry i odwrotnie
» 2016-07-16 17:00:06
Witam. Stworzyłem program mający rozbić liczbę na pojedyncze cyfry, a następnie scalić je w liczbę, aby umożliwić wykonywanie na niej operacji matematycznych. Problem jest w tym, że scalenie liczby nie zawsze działa prawidłowo. Przy liczbach trzycyfrowych, oraz większych niż czterocyfrowe, liczba jest o 1 mniejsza. Oto kod:

C/C++
#include <iostream>
#include <vector>
#include <cmath>

using namespace std;

int main()
{
    string liczba;
    vector < int > tablica;
    cout << "Podaj liczbe: ";
    getline( cin, liczba );
    int suma = 0;
    int i = 0;
    int j = 0;
   
    for( int i = 0; i < liczba.length(); i++ )
    {
        tablica.push_back( static_cast < int >( liczba[ i ] ) );
        tablica[ i ] = tablica[ i ] - 48;
    }
   
    for( int i = 0; i < tablica.size(); i++ )
    {
        cout << "Cyfra " << i << ": " << tablica[ i ] << endl;
    }
   
    for( i = tablica.size() - 1, j = 0; i >= 0, j < tablica.size(); i--, j++ )
    {
        suma = suma +( tablica[ j ] * pow( 10, i ) );
    }
   
    cout << "Liczba: " << suma;
    return 0;
}
P-150027
Monika90
» 2016-07-16 17:46:05
C/C++
suma = 0;
for( auto cyfra: tablica )
{
    suma *= 10;
    suma += cyfra;
}
Tak jest prościej.
P-150031
Traveler
Temat założony przez niniejszego użytkownika
» 2016-07-16 18:02:46
Nie do końca rozumiem ten zapis. Prosiłbym o lekkie objaśnienie. :)
P-150032
Monika90
» 2016-07-16 20:16:18
To jest pętla for-each - robi coś każdym elementem kontenera.

Dla przykładu, w ten sposób można wydrukować zawartość wektora
C/C++
for( const auto & element: wektor )
{
    std::cout << element << '\n';
}
P-150038
« 1 »
  Strona 1 z 1