Konwersja liczby na pojedyncze cyfry i odwrotnie
Ostatnio zmodyfikowano 2016-07-16 20:16
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: #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; }
|
|
Monika90 |
» 2016-07-16 17:46:05 suma = 0; for( auto cyfra: tablica ) { suma *= 10; suma += cyfra; }
Tak jest prościej. |
|
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. :) |
|
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 for( const auto & element: wektor ) { std::cout << element << '\n'; }
|
|
« 1 » |