Odpowiedź :
#include <iostream>
using namespace std;
int ile_cyfr(int x)
{
int i = 0;
while (x != 0)
{
i++;
x /= 10;
}
return i;
}
int potega(int x, int y)
{
if (y == 0)
{
return 1;
}
int wynik=1;
for (int i = 0; i < y; i++)
{
wynik *= x;
}
return wynik;
}
int bin_na_dec(int x)
{
bool znak = 1;
if (x < 0)
{
x *= -1;
znak = 0;
}
int wynik = 0;
int liczba_cyfr = ile_cyfr(x);
for (int i = 0; i < liczba_cyfr; i++)
{
if (x % 10 == 1)
{
wynik += potega(2, i);
}
x /= 10;
}
if (!znak)
{
return wynik * -1;
}
return wynik;
}
int dec_na_bin(int x)
{
bool znak = 1;
if (x < 0)
{
x *= -1;
znak = 0;
}
int wynik = 0;
int i = 0;
while (x != 0)
{
if (x % 2 == 1)
{
wynik += potega(10, i);
}
i++;
x /= 2;
}
if (!znak)
{
return wynik * -1;
}
return wynik;
}
int main()
{
int x, a, b;
cout << "Witaj, jakie wartosci bedziesz wprowadzac? (Wpisz 1 jesli binarne lub 2 jesli dziesietne) ";
cin >> x;
if (x != 1 and x != 2)
{
cout << "Nie rozumiem, wpisz 1 lub 2";
return 0;
}
cout << "Wprowadz pierwsza wartosc: ";
cin >> a;
cout << "Wprowadz druga wartosc: ";
cin >> b;
if (b == 0)
{
cout << "b nie moze byc zerem, bo nie dzieli sie przez 0";
return 0;
}
if (x == 1)
{
a = bin_na_dec(a);
b = bin_na_dec(b);
cout << "Suma: " << a + b << endl;
cout << "Roznica: " << a - b << endl;
cout << "Iloczyn: " << a * b << endl;
cout << "Iloraz: " << a / b << endl;
}
if (x == 2)
{
cout << "Suma: " << dec_na_bin(a + b) << endl;
cout << "Roznica: " << dec_na_bin(a - b) << endl;
cout << "Iloczyn: " << dec_na_bin(a * b) << endl;
cout << "Iloraz: " << dec_na_bin(a / b) << endl;
}
}