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

Длинная арифметика. Деление столбцом - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Создать строку, которая будет содержать набор символов содержащихся в файле http://www.cyberforum.ru/cpp-beginners/thread1000100.html
Открыть файл, имя которого задается с клавиатуры. Создать строку, которая будет содержать набор символов содержащихся в файле (каждый символ должен входить в строку по одному разу). Записать полученную строку в другой файл.
C++ Ошибка в коде (взаимно обратные числа) Определить в одномерном числовом массиве A, из n элементов число соседств из взаимно обратных чисел. #include <stdio.h> #include <iostream> void main() { setlocale(LC_ALL, "Russian"); int n,i,flag; printf("Введите число элементов массива: "); scanf("%d",&n); http://www.cyberforum.ru/cpp-beginners/thread1000098.html
C++ Программа слетает
Здравствуйте, взял код из книги, но при выполнении программа слетает после вода слова и нажатия Enter #include <iostream> #include <cstring> using namespace std; char *keyword = { "for", "for(init; cond; inc)", "if", "if(cond) ... else ...", "switch", "switch(var) { case-list }",
C++ Подскажите как правильно сделать
Помогите пожалуйста нужно отсортировать четные элементы массива а не четные оставить на своих местах. Например ввожу 14 52 6 8 4 ---— 1 и 5 не четные они стоят на месте а четные сортируются вот что выходит --— 1 2 5 4 4 6 8. Вот код но он сортирует все элементы массива #include <iostream> #include <stdlib.h> #include <conio.h> int form (int a) { int n;
C++ Невозможно преобразовать "overloaded-function" в "LPDSENUMCALLBACKW" http://www.cyberforum.ru/cpp-beginners/thread1000067.html
Всем привет. Решил изучить библиотеку DirectSound. Попробовал пример с сайта microsoft, а именно, узнать список подключенных устройств для записи. Собственно код на VS2010 c++. BOOL CALLBACK DSEnumProc(LPGUID lpGUID, LPCTSTR lpszDesc, LPCTSTR lpszDrvName, LPVOID lpContext ) { HWND hCombo = (HWND)lpContext; LPGUID lpTemp = NULL; ...
C++ Выделить часть текста между словами, вводимыми с клавиатуры Вот сообственно задание: Выделить часть текста между словами, вводимыми с клавиатуры. Подскажите пожулуйста ход решения или какими функциями воспользоваться? http://i.***********/i9/2cb372b578a48770657849e1af162a51/1383759855/83398/643145/2221.jpg вот у чему смог дойти ну и код: #include <iostream> #include <string.h> подробнее

Показать сообщение отдельно
FloraWinx
 Аватар для FloraWinx
4 / 4 / 1
Регистрация: 05.10.2013
Сообщений: 122
06.11.2013, 22:29     Длинная арифметика. Деление столбцом
Всем доброго времени суток, занимаюсь реализацией длинной арифметики, а именно с помощью string , перегрузила операторы (-,*,+) успешно все работает. вот с делением беда.
Вроде и придумала алгоритм но все равно как то сильно громоздко и очень много кода.
к примеру если есть два числа ( длинных) если делитель больше делимого то результат 0 или если делимое и делитель равны между собой, это я сделала. вот проблема уже именно с самым делением, была идея поначалу брать хвост делимого равен делителю проверять если хвост делимого меньше длины делителя то увеличивать на единицу, и потом в цикле умножать делитель до того момента пока он не будет больше делимого, и вычитать то есть подставлять, но это как то слишком тяжело.
вот мой код и то что я сделала дальше не хватает мозгов прошу люди помогите


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
69
70
71
72
73
74
75
76
  
#include "StdAfx.h"
#include "verylong.h"
#include <ios>
 
 
 
string operator/ (const string num1, const string num2) {
verylong TEMP; 
TEMP.input(num1, num2); // считуем строку
int tmp_str_len;  
int count;
string holder;
string  temp;
string tmp_string;
bool acces = false;
string result;
 
int diferent;
int res;
char temp_st , temp_num2;
 
 
if (TEMP.number2[0] == '0' && TEMP.length2 ==1) {  // тут мы проверяем если делитель ноль то конец!
   string error="Divizion NULL : (!";
   return error;}
 
 
 
if(TEMP.length2 >= TEMP.length1){    // тут мы выдаем ноль если делитель больше делимого
    if(TEMP.length1==TEMP.length2){
        for(int i=TEMP.length1-1;i>0;i--){
            if(int(TEMP.number1[i])!=int(TEMP.number2[i])){
                if(int(TEMP.number1[i]<TEMP.number2[i])){
                    acces=false;
                    result="0";}
                else  { if (int(TEMP.number1[i]>int(TEMP.number2[0]))){
                    i=-1;}}}}}
    else {
        result ="0";
            acces=false;
            ;
    }}
        
 
    
    
 
    if(TEMP.length1>=TEMP.length2){
        if(TEMP.length1>TEMP.length2){
            diferent=(TEMP.length1-TEMP.length2);
            for(int i=0; i<TEMP.length2;i++){
                tmp_string.push_back(TEMP.number1[i]);}
            tmp_str_len=tmp_string.length();
            temp_st = tmp_string[0];
            temp_num2 = TEMP.number2[0];
            if(int(temp_st)<temp_num2){
                tmp_string.clear();
                tmp_str_len=0;
                for(int i=0;i<(TEMP.length1-diferent)+1;i++)
                { tmp_string.push_back(TEMP.number1[i]);}}
            else
            {
                if(int(temp_st)>int(temp_num2))
                {
                    while(tmp_string>=holder){
                        holder= tmp_string*to_string(count);
                        count++;
                        
 
                    }
                
 
                }
 
            }
Если надо могу выложить остальные файлы проекта.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 22:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru