Mnożenie za pomocą dodawania

0

Witam mam mały problem z programem. Muszę wykonać mnożenie 2 liczb rzeczywistych (np. 10.22 i 10.1) bez użycia operacji mnożenia i bez użycia tablic. Na razie zrobiłem tak, że zamieniłem te dwie liczby na całkowite 10.22 na 1022 czyli pozbyłem się miejsc po przecinku i w dodatkowej zmiennej zapisałem liczbę miejsc po przecinku. Wymnożyłem za pomocą pętli te dwie liczby no i teraz mam problem jak zapisać to z tymi miejscami po przecinku. Bo wyszła mi spora liczba jak na razie.

0

ale nie można dzielić i mnożyć tylko dodawać i odejmować tak to już dawno bym to zrobił

0

Zamienić na stringa, dodać przecinek i zamienić na floata (czy co tam jeszcze)?

0

Możesz używać przesunięć? Jaka jest reprezentacja tych liczb? Dziesiętna, binarna?

0

Jeżeli zabronione jest tylko mnożenie, dzielenie i tablice, to można tak a*b=exp(log(a)+log(b)).

0

a nie można zrobić tego za pomocą samego dodawania i odejmowania

Mój program aktualnie wygląda tak:

void main()
{
float s,a,b,a1,b1,z;
int i;
cin >> a;
cin >> b;
s=0;
a1=0;
b1=0;
z=0;
do
{
for (i=1;i=10;i++)
{
a1=a1+a; // mnożę liczbę rzeczywistą razy 10 aby uzyskać liczbę całkowitą
z=z+1; // z to liczba miejsc po przecinku
} while (a1 % 1 = 0); // sprawdzam czy a1 jest liczbą całkowitą
for (i=1;i=10;i++)
{
b1=b1+b; // mnożę liczbę rzeczywistą razy 10 aby uzyskać liczbę całkowitą
z=z+1; // z to liczba miejsc po przecinku
} while (b1 % 1 = 0); // sprawdzam czy b1 jest liczbą całkowitą
for (i=1;i=a1;i++)
{
s=s+b1;  //obliczam sumę (np. miałem na początku 1.2 * 1.2 to suma wynosi teraz 144 i nie wiem w tym momencie jak zrobić żeby zrobiło się 1.4, zmienna z jest równa 2 czyli liczbie po przecinku jaka powinna teraz być
}  

1 użytkowników online, w tym zalogowanych: 0, gości: 1