Форум программистов, компьютерный форум CyberForum.ru

длинная арифметика. Умножение большого числа на малое - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сортировка строк в классе http://www.cyberforum.ru/cpp-beginners/thread965784.html
Есть готовая программа. Нужно результаты выбить в алфавитном порядке. #include <iostream> using namespace std; struct warehouse { char *name; int number, prise, date; };
C++ Отличить целое от числа с плавающей точкой в 32-разрядном регистре Есть следующий union: union { int i; float f; } i_f; Как можно определить, какие данные в настоящий момент находятся в union (целое число или с плавающей точкой), если известно, что целое может быть только в диапазоне -32768..32767 (т.е. по сути short)? http://www.cyberforum.ru/cpp-beginners/thread965783.html
Создание таблиц в С++ C++
Здравствуйте . Столкнулся с таблицами- просмотрел всё , что только можно , но так и не понял , как создать таблицу и заполнить её значениями ? Помогите , пожалуйста , если знаете . Может на примере хоть каком-то) Заранее огромное спасибо .
много памяти жрет игра на OpenGL C++
много памяти жрет игра на OpenGL...через диспетчер смотрю аж 15 метров...там же ничего особого нету...или так и должно быть??? #include <GL\glut.h> #include <cmath> int stick_left=-100, stick_right=100, stick_speed=5; int ball_left=0, ball_right=0, ball_tmp_l=4, ball_tmp_r=3; void ball(float a) { ball_left-=ball_tmp_l;
C++ Сравнение значений полученных по сети http://www.cyberforum.ru/cpp-beginners/thread965729.html
Прошу помощи объяснить как правильно принимать сообщение из функции recv в цикле ? char buf="GooD";char mass; retVal = recv(clientSock, mas, mas, 0); if(strcmp(buf,mas)!=0){cout<<"Не равны"<<endl;} else {cout<<"Равны"<<endl;}//Но сравнение не происходит , всегда "Не равны" ,в чем ошибка ?
C++ Напишите программу, которая находит следующее и предыдущее число для заданного N Тема следующая. Есть задачка: Напишите программу, которая находит следующее и предыдущее число для заданного N. Входные данные. Входной поток содержит целое число N по модулю не больше 10 в степени 30. Выходные данные. В выходной поток выводим текст по образцу. Слова и числа разделяются только одним пробелом, в начале и в конце текста пропусков нет. примеры Входные данные ... подробнее

Показать сообщение отдельно
Bulat123
0 / 0 / 0
Регистрация: 19.04.2013
Сообщений: 53

длинная арифметика. Умножение большого числа на малое - C++

30.09.2013, 18:04. Просмотров 622. Ответов 2
Метки (Все метки)

Столкнулся с небольшой проблемой: при умножении большого числа (примерно 9 знаков) на небольшое выводит непонятно что, но с малыми числами программа работает корректно. Прошу не тыкать носом в книжку с алгоритмами, похожие темы на форуме или на примеры решенных задач этого типа. Помогите с этим кодом, пожалуйста.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
#include <cstring>
using std::cin;
using std::cout;
using std::endl;
 
int main() 
{
    char str[256];
    cout << "Enter the big number, please." << endl;
    cin.getline(str,256,'\n');
    int i = 0, size = strlen(str) - 1;
    while(i <= size) {
        if (!isdigit(str[i]))
            throw std::runtime_error("There is a letter in the number.");
        ++i;
    }
    for (int i = 0; i <= size; ++i)
        str[i] -= 48;
    cout << "Enter the small number, please." << endl;
    int num;
    cin >> num;
    int mult[256] = {0};
    int temp = 0, n = 0, newSize = 0; i = 0;
    int* pNewSize = &newSize;
    for (int i = 0; i <= size; ++i) {
        int newNum = str[size - i] * num;
        for (size_t k = 0; k != i; ++k)
            newNum *= 10;
        n = 0;
        while (newNum != 0) {
            temp = newNum % 10;
            mult[n] += temp;
            if (mult[n] > 9) {
                mult[n+1] += mult[n] / 10;
                mult[n] = mult[n] % 10;
            }
            *pNewSize = (*pNewSize > n) ? *pNewSize : n;
            ++n;
            newNum = newNum / 10;
        }
    }
    for (int i = newSize; i >= 0; --i) {
        cout << mult[i];
    }
    system("pause");
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru