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

Длинная арифметика - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Организовать цикл http://www.cyberforum.ru/cpp-beginners/thread658132.html
Вот приболел, а на лабы нужно задание, сижу и не понимаю, что от меня хотят и как это делать. http://f1.s.qip.ru/G1CCNmsq.png Попытался написать что-то типо этого // test_101.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <stdio.h>
C++ Прервать работу програмы У меня вопрос , могу ли я как то прервать работу программы при невыполненни или выполнении условия? if ((defaultTemp > MaxTemp) or (MaxTemp <MinTemp)) std::cout<<"ERROR!!\n\n WRONG TEMPERATURE!!\n\n"; // прерывание программы else std::cout<<"Max temperature is "<<MaxTemp<<endl; http://www.cyberforum.ru/cpp-beginners/thread658118.html
Вывести вещественное число, равное делению первой переменной на вторую C++
Здравствуйте. Помогите пожалуйста с лабораторной... В языке С++ полный ноль, ничего не понимаю. Вот сами задания из лабы: 2. Опишите в программе две переменные целого типа и введите их значения с клавиату-ры. Выведите на экран вещественное число, равное делению первой переменной на вторую. (Используйте операцию деления /. При делении целых чисел эта операция возвращает толь-ко целую часть...
C++ Вывести ASCII–код символа в десятичном, восьмеричном и шестнадцатеричном виде
Здравствуйте. Помогите пожалуйста с лабораторной... В языке С++ полный ноль, ничего не понимаю. Вот сами задания из лабы: 3. Опишите в программе переменную символьного типа и введите ее значение с клавиа-туры. Выведите на экран ASCII–код введенного символа в десятичном, восьмеричном и ше-стнадцатеричном виде, а также символы – больший и меньший «сосед» данного по ASCII–коду. Заранее...
C++ Посчитать количество занятых клеток кроссворда http://www.cyberforum.ru/cpp-beginners/thread658107.html
Помогите,пожалуйста решить задачу. Кроссворд размещен в квадрате. Строки и столбцы квадрата нумеруются снизу вверх и слева направо, начиная с 1. Поля для слов располагаются горизонтально либо вертикально и задаются путем указания координат начальной и конечной клеток. Какая-либо сортировка при задании полей отсутствует. Два пересекающихся слова могут располагаться как на одной горизонтали либо...
C++ Поиск количества битов для типа Всё понятно, кроме вот этого ((log((double)a)/log((double)2))); Мы логарифм числа а(числа 2 147 483 647) делим на логарифм числа 2 (на калькуляторе 9.33/0.3 = 31 (всё это примерно)). 1).Так вот какое тут основание у логарифма я понять никак не могу? 2). И почему 2 147 483 647, а не все 4 миллиона? #include <stdio.h> #include <math.h> int main() { int a,i; подробнее

Показать сообщение отдельно
vlad_light
4 / 4 / 0
Регистрация: 24.09.2012
Сообщений: 178
26.09.2012, 22:03  [ТС]     Длинная арифметика
вот накатал, у меня скомпилилось,
Спасибо, но я пока не могу осилить сразу весь код: я программировать начал буквально пару дней назад... А под фразой "Помогите, пожалуйста, очень срочно нужно" я имел ввиду не получить готовый код, а как можно быстрее написать его самому
I.M. прошёлся по Вашим комментариям:
лучше использовать не строку, а обычный числовой массив
я пока не знаю, как сделать непрерывный ввод в массив, поэтому пока использую строку.
счетчики должны "умирать" вместе с циклом
Вот в коде, который в этом сообщении, я ведь не могу строки 44, 45 занести в цикл, поскольку они всегда будут возвращать итератор на начало массива. Как тут поступить?
можно использовать ключевое слово auto
я пока такое слово не встречал... Как его изучу -- сразу начну использовать.
если не собираетесь модифицировать данные с помощью итератора, то делайте его константным
сделал
это бы дело в класс обернуть
я пока не знаю, что такое класс
Вот, что я написал, но оно не компилируется. Помогите найти ошибку, пожалуйста.
код
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
#include <iostream>
#include <vector>
#include <string>
 
void Output (std::string str)
{
    if (! str.empty())
        for (std::string::const_iterator str_iter = str.begin(); str_iter != str.end(); ++str_iter)
            std::cout << *str_iter;
    else
        std::cerr << "Error! The vector is empty!";
}
 
std::vector<int> StrToInt (std::string str)
{
    std::vector<int> vec;
    for (std::string::const_iterator str_iter = str.begin(); str_iter != str.end(); ++str_iter)
        vec.push_back(int(*str_iter));
    return vec;
}
 
std::string IntToStr (std::vector<int> vec)
{
    std::string str;
    for (std::vector<int>::const_iterator vec_iter = vec.begin(); vec_iter != vec.end(); ++vec_iter)
        str.push_back(char(*vec_iter));
    return str;
}
 
std::string Inverse (std::string str)
{
    std::string inv_str;
    std::string::const_iterator inv_str_iter = inv_str.begin();
    for (std::string::const_iterator str_iter = str.begin(); str_iter != str.end(); ++str_iter)
        inv_str.insert (inv_str_iter, *str_iter);
    return inv_str;
}
 
std::string Add (std::string str1, std::string str2)
{
    std::vector<int> vec1, vec2, vec_sum;
    vec1 = StrToInt (Inverse (str1));
    vec2 = StrToInt (Inverse (str2));
    std::vector<int>::const_iterator vec1_iter = vec1.begin();
    std::vector<int>::const_iterator vec2_iter = vec2.begin();
    int digit = 0;
    while (vec1_iter != vec1.end())
    {
        if (vec2_iter == vec2.end())
            vec2.push_back(0);
        if (digit != 0)
        {
            vec_sum.push_back ((*vec1_iter + *vec2_iter)%10 + digit);
            digit = 0;
        }
        else
            vec_sum.push_back ((*vec1_iter + *vec2_iter)%10);
        digit = (*vec1_iter + *vec2_iter)/10;
        ++vec1_iter;
        ++vec2_iter;
    }
    if (digit != 0) 
        vec_sum.push_back(1);
    return Inverse(IntToStr(vec_sum));
}
 
int main()
{
    std::string str1, str2;
    std::getline (std::cin, str1);
    std::getline (std::cin, str2);
    Output (Add (str1, str2));
    std::cin.get();
    return 0;
}
 
Текущее время: 15:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru