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

Умножение длинных чисел с фиксированной запятой - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Количество букв в слове, количество предложений, самое длинное слово в предложении http://www.cyberforum.ru/cpp-beginners/thread452764.html
Как написать прогу, которая бы указывала количество букв в слове, вводимое пользователем, количество предложений, самое длинное слово в предложении, упорядочивала бы слова по количеству букв по возрастанию и убыванию? Язык - С++)
C++ Метод Ньютона Привет всем! Найти 3 корня методом Ньютона: f(x)=tan(2.2082*x) - 3.2258*x. Вроде программу написала по алгоритму, но что то не так. Подскажите, что, пожалуйста!!!! #include <math.h> #include <iostream> #include <stdio.h> #define q 2.2082 #define w 3.2258 #define n 10 http://www.cyberforum.ru/cpp-beginners/thread452760.html
C++ Работа с шаблонами
Доброго вечера! Сейчас решаю задачку на использование шаблонов, и вот с чем столкнулся: при вводе значений в массив, выдает ошибку (она на скрине) Задача так выглядит: Для работы с двумерными массивами арифметических типов данных разработать шаблоны ввода и вывода массива, а также шаблон для решения основной задачи: Подсчитать среднее арифметическое элементов, ...
C++ Рекурсивное умножение матриц
С чего начать в первую очередь чтобы понять как реализовать рекурсивное умножение матриц? напишу обычную функцию для умножения матриц: const int n=1000; void mult (int x,int y,int z) { for (int i=0;i<n;i++) for (int j=0;j<n;j++) z=0;
C++ Обменять местами секторы матрицы http://www.cyberforum.ru/cpp-beginners/thread452753.html
Помогите решить задачу. Задано квадратную матрицу. Поменять элементы из одной закрашенной области на элементы в другую закрашенную область. Мне нужен, если можно, сам процесс обмена.... Вся программа есть.
C++ помогите составить программу с массивом программа запрашивает пользователя о вводе трёх наборов, каждый из которых состоит и пяти чисел типа double. эта программа должна выполнять: сохранить информацию в массиве 3 на 5, вычислить среднее значение для каждого набора из пяти значений, вычислить среднее значение для всех значений, определять наибольшее значение из 15 величин, и выдать отчет о результате. Язык С подробнее

Показать сообщение отдельно
MartinSeptim
0 / 0 / 0
Регистрация: 19.02.2012
Сообщений: 19
25.02.2012, 21:34     Умножение длинных чисел с фиксированной запятой
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include "StdAfx.h"
#include "conio.h"
#include <iostream>
#include <vector>
#include <iomanip>
#include <string>
#include <cstdlib>
#define BASE 10
#define LEN 1
using namespace std;
typedef std::vector <int> type;
 
void readlong (type &);
void mult (type &, type &, type &);
 
int main()
{
    type a, b, rez;
 
    std::cout << "First long number: "; 
    readlong (a); 
    std::cout << "Second long number: ";
    readlong (b);
 
    mult (a, b, rez); //использование умножения
 
    std::cout << rez.back ();
    for (int i = rez.size () - 1; i >= 0; i--)
        std::cout << rez[i];
 getch();
    return 0;
}
 
void readlong (type &vec)
{
    string str, str1;
    cin >> str;
    int len=str.length(); // длина основной строки
    int d, c;
    for(int i=0;i<len;i++)
        if(str[i]=='.') {d=i+1; c=len-d;}
    char buf[30];
   memset( buf, '\0', 30 );
   str.copy( buf, c );
 
    str1 = (const char*) buf; // конвертация буфера в строку
    str=str1;
    
   
 
    for (int i = str.size (); i > 0; i--)
        vec.push_back (atoi (str.substr (i - LEN, LEN).c_str()));
}
 
void mult (type &a, type &b, type &rez)
{ 
    rez.resize (a.size() + b.size());
    for (int i = 0; i < a.size(); ++i)
        for (int j = 0, carry = 0; j < b.size() || carry; ++j) //сarry вес разряда
        {
            long long cur = rez[i+j] + a[i] * (j < b.size() ? b[j] : 0) + carry;
            rez[i+j] = cur % BASE;
            carry = cur / BASE;
        }
 
    while (rez.size() > 1 && rez.back() == 0)
        rez.pop_back();
}
В этой программе почему-то с ошибкой считает конечное умножение. Помогите пожалуйста решить эту проблему
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 02:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru