Sa se scrie un program c++ care simulează în memoria Ram operațiile de adunare sau de scădere a doua numere pozitive. cele doua numere și rezultatul vor ocupa 8 poziții. O varianta de rezolvare a acestei teme este de a implementa algoritmul de adunare respectiv scădere manuală. ( cu alte cuvinte, exact cum se face adunarea/scăderea pe foaie cu numerele puse unul sub altul). operația care va fi efectuată ca fi aleasa de către utilizator. Va rog frumos sa ma ajutați dacă aveți vreo idee de rezolvare!
Răspunsuri la întrebare
Răspuns:
#include <stdio.h>
#include <iostream>
#include <string>
using namespace std;
int main()
{
long x, y;
int a[10],b[10], n, m, i, j, k = 0, r = 0, sum[20];
cout<<"Introduceti primul numar in baza 10: ";
cin>>n;
for(i=0; n>0; i++)
{
a[i]=n%2;
n= n/2;
}
cout<<"Introduceti al doilea numar in baza 10: ";
cin>>m;
for(j=0; m>0; j++)
{
b[j]=m%2;
m= m/2;
}
// Conversie primul numar in string ce tine valoarea binara
string alpha = "";
for(i=i-1 ;i>=0 ;i--)
{
alpha = alpha + to_string(a[i]);
}
// Conversie al doilea numar in string ce tine valoarea binara
string omega = "";
for(j=j-1 ;j>=0 ;j--)
{
omega = omega + to_string(b[j]);
}
///Start Suma
/// Conversie in long din string pentru cele 2 numere binare
x = stol(alpha, nullptr, 10);
y = stol(omega, nullptr, 10);
//Afisare numere binare
cout <<"Primul numar in baza 2 este " <<alpha << endl;
cout <<"Al doilea numar in baza 2 este "<< omega << endl;
while (x != 0 || y != 0)
{
sum[k++] = (x % 10 + y % 10 + r) % 2;
r = (x % 10 + y % 10 + r) / 2;
x = x / 10;
y = y / 10;
}
if (r != 0)
sum[k++] = r;
--k;
cout << "Suma celor doua numere in baza 2 este: ";
while (k >= 0)
cout << sum[k--];
cout << ". ";
return 0;
}
Explicație:
Se citesc 2 numere in baza 10 de la tastatura. Se face conversie in baza 2, valorile obtinute adaugand-use pe rand intr-un vector. Se citesc valorile obtinute din vector si se adauga intr-un string (alpha, omega).
Mai departe, se face conversie din string in long pentru a face suma numerelor binare. Se afiseaza valoarea numerelor binare.
Se face suma, se afiseaza suma