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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Deligor
1 / 1 / 0
Регистрация: 12.04.2014
Сообщений: 30
#1

Калькулятор Z-1. Укажите на ошибку в программе к задаче - C++

13.08.2014, 21:21. Просмотров 319. Ответов 2
Метки нет (Все метки)

Уважаемые форумчане, укажите пожалуйста на ошибку в программе.

Пишу программу к задаче, валится на 10 тесте (Wrong Answer). Подскажите, пожалуйста, что не так.

Условие задачи:
Имя входного файла: calcz.in
Имя выходного файла: calcz.out
Ограничение по времени: 2 секунды
Ограничение по памяти: 64 мегабайта
Компания Z готовится к выпуску своего супер пупер мега калькулятора Z-1. Ме-
неджер фирмы обратился к Вам за помощью. Ему необходима программа, которая
могла бы складывать числа практически любой длины. "Если такая программа
будет написана, - говорит он, - это будет переворот в области сложения чисел на
супер пупер мега калькуляторах".

Формат входных данных
Cодержит две строки, на каждой из которых записано длинное неотрицательное
число, содержащее не менее одного знака, но при этом не более 60000 знаков. Ваша
задача - сложить эти два числа и вывести результат в выходной файл.

Формат выходных данных
Должен содержать только одно число - сумму двух исходных чисел.

Пример 1
calcz.in:
3
2
calcz.out:
5

Пример 2
calcz.in:
1000000000000
1000000000001
calcz.out:
2000000000001

Мое решение:
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
#include <iostream>
#include <fstream>
#include <iomanip>
#include <vector>
#include <string>
#include <stdlib.h>
 
using namespace std;
 
ifstream fin;
ofstream fout;
 
typedef vector<int> LongNum;
 
int main(){
    fin.open("calcz.in");
    fout.open("calcz.out");
    LongNum A, B;
    int base = 1000000000, ost = 0;
    string number;
 
    //READ A
    fin >> number;
    for(int i=number.length(); i>=9; i-=9)
        A.push_back( atoi( number.substr(i-9,9).c_str()));
    if(number.length()%9!=0)
        A.push_back( atoi( number.substr(0, number.length()%9).c_str()));
 
    //READ B
    fin >> number;
    for(int i=number.length(); i>=9; i-=9)
        B.push_back( atoi( number.substr(i-9,9).c_str()));
    if(number.length()%9!=0)
        B.push_back( atoi( number.substr(0, number.length()%9).c_str()));
 
    //A+B -> A
    for(int i=0; i<(A.size()>B.size() ? A.size() : B.size()); i++){
        if(i==A.size())
            A.push_back(0);
        A[i] += (i >= B.size() ? 0 : B[i]) + ost;
        ost = (A[i]>=base ? 1 : 0);
        A[i] -= base*ost;
    }
    if(ost==1)
        A.push_back(1);
 
    //WRITE A
    fout << A.back();
    for(int i=A.size()-2 ; i>=0; i--)
        fout << setw(9) << setfill('0') << A[i];
    return 0;
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.08.2014, 21:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Калькулятор Z-1. Укажите на ошибку в программе к задаче (C++):

Укажите на ошибки в программе - C++
В программе я создаю класс с двумя методами. Ввод матрицы, а потом замена строк на столбцы. Программа запускается, но вылетает, в общем...

Укажите ошибку! - C++
В строке удвоить все символы ‘&amp;’. Под вставкой символа n в строку после к-го элемента понимается смещение всех элементов, начиная с...

Укажите на ошибку - C++
Подскажите ошибку пожалуйста #include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; void main() ...

Укажите на ошибку - C++
Привет, есть проект, в нем был только один файл core.cpp в нем было и объявления функций и их описания, короче говоря все было в одном...

Укажите на ошибку - C++
Проблема с enum. Пишет что, нужно что-то перед enum. Поясните пожалуйста #include &lt;iostream&gt; using namespace std; int main() ...

укажите на ошибку в листинге - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;iomanip&gt; using namespace System; void main( ) { cout &lt;&lt; &quot;I love&quot;; ...

2
soon
2541 / 1306 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
14.08.2014, 08:10 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Возможно присутствие лидирующих нулей?
1
Deligor
1 / 1 / 0
Регистрация: 12.04.2014
Сообщений: 30
14.08.2014, 09:29  [ТС] #3
soon, спасибо за подсказку, добавил удаление лидирующих нулей и все прошло.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.08.2014, 09:29
Привет! Вот еще темы с ответами:

Укажите пожалуйста ошибку(и) - C++
#include &lt;iostream&gt; using namespace std; struct box { char maker; float height; float width; float length; float...

Укажите ошибку пожалуйста - C++
№ 3 вариант 8 #include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; int main() { const float Eps=1E-4; int...

Задачка по C++! Укажите пожалуйста на ошибку! - C++
Набросал упрощенный вариантик программы. Пытаюсь в конструкторе zveri присвоить значение переменной home из функии другого класс. Где...

Вылетает программа, укажите ошибку - C++
Программа вылетает. Помогите пожалуйста. Условие программы: В программе используется класс good_time и перегрузка оператора...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru