Programowanie c++
bede bardzo wdzięczna za pomoc <3

Zamień dwie wprowadzone wartości binarne na dziesiętne i wykonaj działania mnożenia, dzielenia dodawania i odejmowania. I odwrotnie dziesiętne na binarne. Program ma być zrobiony na funkcjach.


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;

}

}