Mnożenie za pomocą dodawania

Odpowiedz Nowy wątek
2011-10-09 12:33
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.

jeśli pomnożyłeś 1022 razy 1010, to wystarczy podzielić przez 100*100 (10 000) - rafal__ 2011-10-09 12:50
A jaki masz zakres bo double ze swoim 10^308 badzo przekracza inta :) - topik92 2015-09-24 00:37

Pozostało 580 znaków

2011-10-09 14:18
0

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

Pozostało 580 znaków

2011-10-09 14:50
0

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


Pozostało 580 znaków

2011-10-09 14:57
0

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


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.

Pozostało 580 znaków

2011-10-09 15:17
bo
0

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

Pozostało 580 znaków

2011-10-09 15:31
marcinex1232
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ć
}  

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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