Итак, у меня есть эта проблема, с которой я столкнулся при создании кода. Этого вопросуДобавление двух векторов вместе
Эта работа основана на перегрузке операторов, вам нужно построить строку калькулятор, калькулятора может сделать добавлять и минус функция для строковых переменных (будет только
символов и пространство для строка).
Проблема, с которой я столкнулся, - это когда я пытаюсь добавить два вектора, которые я создал вместе. Например, Vector A = < 1,2,3> и Vector B = < 1,2>. Я хочу, чтобы A + B равнялся < 2,4,3>. Но когда я делаю это, я получаю вывод 2. Вот мой код.
#include<iostream>
#include<string>
#include<vector>
using namespace std;
string a;
string b;
int k, j, ab, x;
vector <int> scab;
int main() {
cout << "Input A: ";
getline(cin, a);
cout << "Input B: ";
getline(cin, b);
vector<int> sca;
vector<int> scb;
// For A
for (int i = 0; i < a.size(); i++) {
sca.push_back(static_cast <int> (a[i]));
}
cout << "Input A: ";
for (int j = 0; j < sca.size(); ++j)
{
cout << sca[j] << "\t";
}
cout << endl;
cout << endl;
// For B
for (int p = 0; p < b.size(); p++) {
scb.push_back(static_cast <int> (b[p]));
}
cout << "Input B: ";
for (int j = 0; j < scb.size(); ++j)
{
cout << scb[j] << "\t";
}
scab.push_back(sca[j] + scb[j]);
cout << endl;
cout << endl;
cout << "A+B: " << scab[j] << "\t";
system("pause");
}
Спасибо заранее.
Рассматривали ли вы [ 'станд :: valarray'] (http://en.cppreference.com/w/cpp/numeric/valarray) вместо 'станд :: VECTOR'? –
Для начала вы должны преобразовать свои входы в 'int', используя, возможно,' std :: istringstream', а не 'static_cast (a [i])', это, вероятно, не то, что вы хотите. –
Этот код даже не компилируется, вы используете переменную цикла j после окончания действия. О, у вас есть еще один «j» в области файлов, который никогда не записывается, поэтому он всегда будет равен нулю. Подумайте об этом на минуту. –