Wprowadzanie oraz iloczyn liczb stucyfrowych

0

Witam. Chcę napisać program, który wczytuje dwie liczby stucyfrowe, a później wypisuje ich iloczyn. Piszę w c++, a dopiero zaczynam i nie bardzo wiem jak się do tego zabrać, bo napisałem program tyle, że gdy wpisuje cyfrę np. 20-cyfrową to następna liczba oraz wynik iloczynu jest z kosmosu i nawet nie mogę wpisać 2 liczby. Proszę bardzo o pomoc :D Może jakieś podpowiedzi jak się do tego zabrać? Chyba źle to robiłem, bo program sam powinien wczytać te liczby.

2

Jeśli chodzi o konkretnie liczby stucyfrowe (czyli 200-cyfrowy iloczyn) to zainteresuj się Boost.MultiPrecision. Wystarczy dodać nagłówek i użyć odpowiednich typów i wszystko działa bez problemu.

1

A tak ogólniej, to jak byś to zrobił, gdybyś na kartce dostał takie dwie liczby do przemnożenia?

0
enedil napisał(a):

A tak ogólniej, to jak byś to zrobił, gdybyś na kartce dostał takie dwie liczby do przemnożenia?

Wydaje mi się, że jedyna opcja to mnożyć pisemnie

0
kq napisał(a):

Jeśli chodzi o konkretnie liczby stucyfrowe (czyli 200-cyfrowy iloczyn) to zainteresuj się Boost.MultiPrecision. Wystarczy dodać nagłówek i użyć odpowiednich typów i wszystko działa bez problemu.

Znalazłem też coś takiego jak "mpz_class", jestem w stanie na tym też zrobić?

1

Można użyć mpz_class (czyli zalinkowanego gmplib), ale też możesz spróbować to zrobić tak jak proponowałeś, przez mnożenie pisemne.

0

W temacie może pomóc ten projekt mojego autorstwa: https://github.com/andrzejlisek/ScriptSDCC
Nie chodzi o samą aplikacje, bo jest to interpreter rozkazów 8051 i Z180, tylko o to, że w przykładach jest kalkulator https://github.com/andrzejlisek/ScriptSDCC/tree/master/script_examples/Num i może pracować na liczbach kilkadziesiąt cyfr (ilość cyfr znana w momencie kompilacji, bo w pliku numdef.h jest zdefiniowana wielkość struktury). Najważniejsze algorytmy są w numcore.h i numbase.h, przy czym numbase.h implementuje podstawowe działania i wykorzystuje numcore.h.

Gotowe biblioteki do bardzo dużych liczb mają tę przewagę, że nie jest potrzebna wiedza o wielkości liczb w momencie kompilacji, ale z drugiej strony nie dają się zastosować na mikrokontrolerach. W moim przypadku operuje się na liczbach o stałej wielkości (w praktyce każda liczba jest tablicą elementów typu unsigned long, to też się ustawia w pliku numdef.h). Warto zauważyć, że łatwiej jest opracować algorytm na dwóch liczbach, które są tej samej wielkości (w sensie struktury danych, a nie wartości) niż na liczbach różnej wielkości.

Kod w wymienionych plikach jest tak przygotowany, że (przynajmniej teoretycznie) nie powinno być problemu z zastosowaniem go w dowolnej platformie, na którą jest kompilator języka C.

Główny plik kalkulatora to "numcalc.c" i tylko w tym pliku jest używane wejście i wyjście (pobieranie i wypisywanie informacji) i jest to jedyny plik, który trzeba przerobić, żeby uruchomić program w konsoli na PC.

Generalnie nie mam nic przeciwko, żebyś mój kod lub całą bibliotekę wykorzystał na swoje potrzeby.

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