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

Wypisanie danej od tyłu w programie do zamiany z systemu dziesiętnego na dowolny

Ostatnio zmodyfikowano 2017-06-12 20:51
Autor Wiadomość
sebek265
Temat założony przez niniejszego użytkownika
Wypisanie danej od tyłu w programie do zamiany z systemu dziesiętnego na dowolny
» 2017-06-10 10:33:08
Witam.Chciałbym zrobić program zamieniający z systemu dziesiętnego na dowolny, jednak niezbyt rozumiem jak mogę zapisać daną wypisaną przez komputer.
C/C++
#include <iostream>

using namespace std;

int main()
{
   
    int liczba, system;
    cout << "Podaj liczbe:" << endl;
    cin >> liczba;
    cout << "Podaj system:" << endl;
    cin >> system;
    cout << "Wynik:";
    if( liczba == 0 )
    {
        cout << "0";
    }
    else
    {
        int wynik, reszta;
        while( liczba != 0 )
        {
            reszta = liczba % system;
            liczba = liczba / system;
            cout << reszta;
        }
       
    }
   
}
Chciałbym aby reszta była zapisana od tyłu.
P-162316
maly7
» 2017-06-10 12:00:36
Możesz użyć stringa i wstawiać liczbę na jego początku. Dopiero na końcu go wypisać.
P-162319
sebek265
Temat założony przez niniejszego użytkownika
» 2017-06-12 15:30:47
Mógłbym jakąś większą podpowiedź? Co powinienem zamienić na stringa albo gdzie go dodać, bo na razie nic mi to nie mówi.
P-162418
mateczek
» 2017-06-12 16:12:44
C/C++
#include <iostream>
using namespace std;
int main() {
    int liczba = 9, system = 2;
    string str_liczba = "";
    while( liczba ) {
        str_liczba.insert( str_liczba.begin(), liczba % system + '0' ); //wstaw cyfrę na początek stringa
        liczba = liczba / system;
    }
    cout << str_liczba << endl;
}
P-162422
sebek265
Temat założony przez niniejszego użytkownika
» 2017-06-12 17:16:39
C/C++
#include <iostream>
using namespace std;
int main()
{
    int liczba, system;
    string sliczba = "";
    cout << "Podaj liczbe:" << endl;
    cin >> liczba;
    cout << "Podaj system:" << endl;
    cin >> system;
    while( liczba != 0 )
    {
        if( liczba % system <= 9 )
        {
            sliczba.insert( sliczba.begin(), liczba % system + '0' );
            liczba = liczba / system;
        }
        else
        {
            sliczba.insert( sliczba.begin(), liczba % system + 7 + '0' );
            liczba = liczba / system;
        }
    }
    cout << sliczba << endl;
}
Tak wygląda mój skończony program, jest w nim coś jeszcze do poprawy? Póki co jak testowałem to wszystko wychodzi książkowo.
Naprawdę dziękuje za pomoc :).
P-162432
mokrowski
» 2017-06-12 20:51:38
Coś można poprawić..

C/C++
#include <iostream>
#include <limits>
#include <string>

using namespace std;

auto readUnsigned( const std::string & message )
{
    unsigned data;
   
    for(;; )
    {
        std::cout << message;
        if( std::cin >> data ) break;
       
        std::cerr << "Wprowadziłeś nieprawidłową liczbę."
        "Spróbuj jeszcze raz.\n";
        std::cin.clear();
        std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
    }
   
    return data;
}

auto calculateValue( unsigned value, unsigned base )
{
    std::string data;
   
    unsigned mod;
   
    while( value )
    {
        mod = value % base;
        data.insert( data.begin(), mod +( mod <= 9 ? '0'
            : 7 + '0' ) );
        value /= base;
    }
   
    return data;
}

int main()
{
    auto value = readUnsigned( "Podaj liczbę: " );
    auto base = readUnsigned( "Podaj system: " );
   
    std::string data;
   
    data = calculateValue( value, base );
   
    std::cout << data << std::endl;
}
P-162455
« 1 »
  Strona 1 z 1