Проблема: Ко всем числам второго вектора добавляется последняя цифра из первого вектора

226
14 марта 2017, 15:48

В общем, мне надо сделать программу с длинной арифметикой. Проблема появилась на этапе считывания и переворота массива. Ко всем числам второго вектора добавляется последняя цифра из первого вектора

Например при введённых:

25565
9264

Получается:

5 6 5 5 2
45 65 25 95

Когда надо:

5 6 5 5 2
4 6 2 9

Также если поменять местами код с обработкой вектора1 и вектора2, то проблема появляется уже у первого, а не второго вектора.

Сам код:

#include <iostream>
#include <vector>
#include <iterator>
#include <string>
#include <algorithm>
#include <cstdlib>
#include <cmath>
using namespace std;
int main()
{
    string ia, ib;
    vector<int> a;
    vector<int> b;
    getline(cin, ia);
    getline(cin, ib);
    for(int i = 0; i < ia.size(); i++) //Фигня через которую я превращаю строку в вектор цифр
    {
        char c[1] = { ia[i] };         //Берёт i-тый символ
        a.push_back(atoi(c));          //Запихивает в конец вектора цифру
    }
    std::reverse(a.begin(), a.end());  //Переворачивает вектор. Длинка же
    for(int i = 0; i < ib.size(); i++) //Аналогично, только для b
    {
        char c[1] = { ib[i] };
        b.push_back(atoi(c));
    }
    std::reverse(b.begin(), b.end());  //Также
    vector<int> r(fmax(a.size(), b.size()) + 1, 0); //Пока что эта строка не нужна

    std::copy(a.begin(), a.end(), std::ostream_iterator<int>(std::cout, " ")); cout << endl; //Вывод
    std::copy(b.begin(), b.end(), std::ostream_iterator<int>(std::cout, " ")); cout << endl; //Вывод
    return 0;
}
Answer 1

Ну что ж, в ответ на "как держать микроскоп, чтоб было удобнее забивать гвозди", отвечу именно на заданный вопрос...

Вот это

    char c[1] = { ia[i] };         //Берёт i-тый символ
    a.push_back(atoi(c));          //Запихивает в конец вектора цифру

замените на

    a.push_back(ia[i]-'0');

Судя по всему, о том, что строка в C завершается нулевым символом, вам неизвестно?

READ ALSO
Проверка графа на цикл

Проверка графа на цикл

Дан ориентированный граф, нужно проверить есть ли в нем циклВершин до 10^5, поэтому дфс с рекурсией не зайдет

265
Черепашка - C++

Черепашка - C++

Что я не правильно делаю в этой задаче? Помогите пожалуйста!

225
Как передать ссылку на this?

Как передать ссылку на this?

Есть класс, для упрощения восприятия я убрал все лишнее

230
QT разбиение проекта на несколько файлов

QT разбиение проекта на несколько файлов

Упростил код, дабы было легче разобраться с проблемойИмеется класс, описанный в mainwindow

222