Mnożenie dwóch długich liczb
Ostatnio zmodyfikowano 2012-01-01 22:23
orion Temat założony przez niniejszego użytkownika |
Mnożenie dwóch długich liczb » 2012-01-01 21:38:49 Witam, Mam problem z takim zadaniem: Napisz program, który mnoży dwie długie liczby naturalne pamiętane jako tablice cyfr. Napisałem coś takiego: #include<stdio.h>
#define ROZMIAR 10000 main() { int j, l, k, i, n; int t1, t2; int A[ ROZMIAR ]; int B[ ROZMIAR ]; int C[ ROZMIAR ]; int D[ ROZMIAR ]; for( j = 0; j < l; j++ ) { for( i = 0; j < k; i++ ) { D[ i ] = A[ i ] * B[ j ]; for( i = j; i < k + j; i++ ) { C[ i ] = C[ i ] + D[ i - j ]; for( i = 0; i < n; i++ ) { t1 = C[ i ] % 10; t2 = C[ i ] / 10; C[ i ] = t1; C[ i ] = C[ i + 1 ] + t2; } } } } return 0; } Ogólnie korzystałem za algorytmu na mnożenie pod kreską. Nie wiem jak wprowadzić do programu te dwie liczby i jak je zapisać jako tablice. Proszę o wyrozumiałość bo nauka przychodzi mi naprawdę ciężko i mimo że staram się jak mogę to efekty są marne. Z góry dzięki za wszelką pomoc. |
|
pekfos |
» 2012-01-01 21:41:20 cyfra to znak więc char. |
|
orion Temat założony przez niniejszego użytkownika |
» 2012-01-01 21:44:06 Tylko jak zapisać tą podaną liczbe w tablicy. Mógłby ktoś to pokazać na jakimś przykładzie?
|
|
pekfos |
» 2012-01-01 21:50:26 czytuj każdy znak po kolei. Inaczej tak dużej liczby nie wczytasz. Mniejszą można podzielić przez dzielenie całkowite i modulo. |
|
orion Temat założony przez niniejszego użytkownika |
» 2012-01-01 22:01:17 Nie wiem czy to jest poprawne i ma jakikolwiek sens. printf("Podaj x:"); scanf("%s",A); printf("Podaj y:"); scanf("%s",B);
Teraz mam problem jak zapisać ograniczenia dla tablic. Tzn mnożąc liczby 120*52 tablica A jest długości k=3 a B l=2, wykorzystuje to dla ewentualnego wyniku zapisanego w tablicy C której długość może wynieść k+l+1=n.
|
|
malan |
» 2012-01-01 22:19:52 Kod zaprezentowany przez Ciebie nie da takiego rezultatu jakiego oczekujesz. Przykład wyczytywania danych do tablicy masz tutaj: Tablice jednowymiarowe. Teraz mam problem jak zapisać ograniczenia dla tablic. |
Zainteresuj się może Kontener tablicy (std::vector). Poza tym - liczby nie muszą być tych samych rozmiarów (chyba, że możesz tak założyć). Algorytm? Kartka, długopis i jedziesz :) /edit: Tak w ogóle, to do tego zadania łatwiej Ci chyba będzie skorzystać z std::string. Nie będziesz musiał się męczyć z dzieleniem liczby na poszczególne cyfry itd. |
|
orion Temat założony przez niniejszego użytkownika |
» 2012-01-01 22:23:10 Algorytm pisałem właśnie na kartce i jestem pewien jego działania. Teraz mam problem napisaniem programu. Spróbuje to przestudiować, dzięki za pomoc.
edit
A dało by rado pokazać to na jakimś przykładzie? Bardzo by mi to pomogło. |
|
« 1 » |