Zadanie z programowania, c++

0

Czy ktoś dałby radę pomóc?
Napisz program, który obliczy wynik mnożenia dwóch liczb n-cyfrowych.
n - ilość cyfr <20,30>.

1

A co już zrobiłeś?
Musisz zaimplemetować sobie duże liczby całkowite

2

Trzeba sobie przypomnieć (3 klasa?) mnożenie pisemne - na kartce. I zaimplementować.

0

@KamilAdam:
#include <iostream>
using namespace std;
int main()
{
unsigned long long i, j;
cout << "Podaj pierwszą liczbe: ";
cin >> i;
cout << "Podaj druga liczbe: ";
cin >> j;

cout << "Wynik mnozenia: " << i*j;
return 0;

}

1

Jest bardzo mało prawdopodobne, że u Ciebie unsigned long long jest wystarczająco długi, by móc wykonać tę operację. Potrzebowałbyś \left\lceil \log_2 \left( 10^{30} \cdot 10^{30} \right) \right\rceil = 200 bitowych zmiennych do tego, a najpewniej masz 64-bitowe.

Musisz więc, tak jak Ci pisali wcześniej, zrobić odpowiednik mnożenia pisemnego — rozbić liczbę na cyfry (niekoniecznie w systemie dziesiętnym, w systemie 2^{64} - 1 będzie nawet lepiej) i mnożyć tak, jak Cię uczyli w podstawówce.

1

Do 2 tablic string/char (co jest tu do użycia w C?).
Odwrócić obie tablice
Nowa wynikowa tablica = suma długości wejściowych +1 rozmiar większej liczby
Do wynikowej tablicy w pętli, kolejno od idx=0 wstawiamy
przeniesienie z poprzedniej iteracji (na start = 0) plus mnożenie dwóch pozycji [idx] i policzenie przeniesienia (wykorzysta je następna iteracja)
Aż dojdziemy do ostatniej po prawej pozycji z większej liczby
Koniec pętli
Do ostatniej komórki tablicy wynikowej wpisujemy aktualne przeniesienie
Powtarzamy pętlę z następną cyfrą
do tablicy wynikowej na pozycje +1 większe dodajemy przebieg wewnętrznej pętli
koniec zewnętrznej pętli
Odwracamy tablicę wynikową.

Wersja trochę trudniejsza? bez 2 x odwracanie tablic - ale to "algorytm z 3. klasy" zatem uprosciłem 2 x odwracając żeby się w indeksach nie pomylić

Tablicę do string, bo zakładam, że dane będą tak dobrane, żeby w long się "nie zmieściły"

PS
Proponuję na początek zrobić dla siebie dodawanie.
I tak się przyda w mnożeniu.

Zadanie nie jest trudne ale wymaga przyłożenia się i przemyślenia co pętle robią.
Na pewno trudniejsze od rysowania choinek.

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