Oryginalna strona colobot.cba.pl umarła, gdy cba.pl przestało oferować darmowy hosting. To jest statyczny mirror, pobrany w 2018. ~krzys_h
 Polski Portal COLOBOTa - COLOBOT Polish Portal
Forum - Polski Portal COLOBOTa
Strona głównaStrona główna UżytkownicyUżytkownicy GrupyGrupy StatystykiStatystyki


Poprzedni temat «» Następny temat
NumberCalc
Autor Wiadomość
Simbax 
Mod


Twoja ulubiona misja: Wszystkie na Krystalii
Pomógł: 6 razy
Wiek: 22
Dołączył: 07 Sie 2009
Posty: 473
Skąd: z Leszna
Wysłany: 12-12-2010, 13:03   NumberCalc

Proszę, żeby później nie było, że nic nie robię "tylko gram" daje tutaj malutki programik w C++. Robiłem go dosyć dawno, ale na oko działa chyba dobrze. Przed chwilą dodałem tylko w kilku miejscach "czyszczenie ekranu".
Co on robi? Przelicza między różnymi systemami liczbowymi (dwójkowym, dziesiętnym itd.). W założeniu miał pokazywać liczbę w każdym systemie, ale skończyłem na dwójkowym i dalej mi się nie chciało już robić :lol: Zresztą i tak się do niczego nie przyda, zrobiłem go jako sprawdzenie tego, co już umiem (czyli praktycznie nic :lol: ).
Proszę nie komentować, wiem że ma dużo błędów...

Zainspirowany do zrobienia go zostałem dzięki pewnemu zadaniu z matematyki.

Źródło:
Kod:
#include <iostream>
#include <conio.h>
#include <string>
#include <sstream>

using namespace std;

int Poteguj(int nPodstawa, int nWykladnik)
{
    int nWynik = nPodstawa;
    for (int i = 2; i <= nWykladnik; ++i)
    {
        nWynik = nWynik*nPodstawa;
    }
    return nWynik;
}

string int2str(int i)
{
    stringstream ss;
    string temp;
    ss << i;
    ss >> temp;
    return temp;
}

int str2int(string str)
{
    stringstream ss;
    int temp;
    ss << str;
    ss >> temp;
    return temp;
}

string Przeliczz(int nWybor, string strLiczba)
{
    switch (nWybor)
    {
    case 1 :
        {
            stringstream convert(strLiczba);
            int nLiczba;
            convert >> nLiczba;
            int nX;
            string Binary[10];

            for (int i = 9; i > 0; i--)
            {
                nX = nLiczba % 2;
                if (nX == 0) Binary[i] = "0";
                if (nX != 0) Binary[i] = "1";
                nLiczba = nLiczba/2;
            }
            string nWynik = "";
            for (int i = 0; i < 10; i++)
            {
                nWynik += Binary[i];
            }
            return nWynik;
            break;
        }
    case 2 :
        {
            if (strLiczba.length() > 10 || strLiczba.length() < 1) return "1";
            int nLiczbaCyfr = strLiczba.length();

            int nWynik = 0;
            int nY;
            int nX = nLiczbaCyfr-1;

            for (int i = 0; i <= nLiczbaCyfr; ++i)
            {
                string strX(strLiczba, i, 1);
                if (strX == "1") nY = Poteguj(2,nX);
                if (strX == "0") nY = 0;
                nWynik = nY + nWynik;
                nX = nX-1;
            }
            return int2str(nWynik);

            break;
        }
    }
}

int main()
{
    cout << "<--- NumberCalc --->" << endl;
    cout << "Autor: Simbax" << endl;
    cout << endl;
    getchar();
    int nChoise = -1;
    system("cls");

    glowna:
    while (true)
    {
    cout << "W jakim systemie cyfrowym chcesz podac liczbe?" << endl;
    cout << " 1. Dziesietnym" << endl;
    cout << " 2. Dwojkowym" << endl;
    cout << " 0. Wyjscie" << endl;
    cout << "Twoj wybor (liczba 0-2): ";
    cin >> nChoise;
    if (nChoise == 0) break;

    if (nChoise < 0 || nChoise > 2)
    {
        cout << endl << endl << "Musisz podac liczbe z zakresu 0-2.";
        getch();
        system("cls");
        goto glowna;
    }
    cout << endl << endl;
    cout << "Podaj ta liczbe: ";
    string strA;
    cin >> strA;
    cout << endl << endl;
    cout << strA << " = ";
    cout <<    Przeliczz(nChoise, strA);
    getch();
    system("cls");
    }

    return 0;
}


NumberCalc.zip
A oto to "cudo"
Pobierz Plik ściągnięto 23 raz(y) 85,91 KB

_________________
http://projektsimbax.blogspot.com/ <- Taki sobie blog
 
     
Wyświetl posty z ostatnich:   

Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Polski Portal COLOBOTa © 2008 - 2012