Witam ma ktoś może pomysł jak dodać tablice dynamiczną typu wektor, lub zwykłą z perspektywy całości, a nie elementów np: a[3]={9,8,7} + b[3]={7,8,9}--->987+789 =1776 Czy zostaje mi tylko napisać algorytm na pisemne dodawanie tablic.
0
0
Czyli aby dodać te kontenery muszą być w typie valarray ? wektorów nie idzie dodać ? napisz kod używający tych valarray bo nie bardzo łapie.
1
@Madaless Coś takiego?
1
Możesz też policzyć na piechotę:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> v1{ 1,2,3 };
vector<int> v2{ 4,5,6 };
int sum1{};
int sum2{};
int multiplier{ 10 };
int j = 1;
for (auto crit = v1.crbegin(); crit != v1.crend(); ++crit) {
sum1 += *crit * j;
j *= multiplier;
}
j = 1;
for (auto crit = v2.crbegin(); crit != v2.crend(); ++crit) {
sum2 += *crit * j;
j *= multiplier;
}
cout << sum1 + sum2 << '\n';
}
Albo tak zmodyfikować:
#include <iostream>
#include <vector>
using namespace std;
int operator+(const vector<int>& v1, const vector<int>& v2) {
int sum1{};
int sum2{};
int multiplier{ 10 };
int j = 1;
for (auto crit = v1.crbegin(); crit != v1.crend(); ++crit) {
sum1 += *crit * j;
j *= multiplier;
}
j = 1;
for (auto crit = v2.crbegin(); crit != v2.crend(); ++crit) {
sum2 += *crit * j;
j *= multiplier;
}
return sum1 + sum2;
}
int main()
{
vector<int> v1{ 1,2,3 };
vector<int> v2{ 4,5,6 };
cout << v1 + v2 << '\n';
}
1
Trochę uprościłem poprzedni kod dopisując funkcję zwracającą wartość int
, którą można zapisać do zmiennej:
#include <iostream>
#include <vector>
using namespace std;
int vectorOfDigitsAsNumber(const vector<int>& vec) {
int sum{ 0 };
int multiplier{ 10 };
int j{ 1 };
for (auto crit = vec.crbegin(); crit != vec.crend(); ++crit) {
sum += *crit * j;
j *= multiplier;
}
return sum;
}
int operator+(const vector<int>& v1, const vector<int>& v2) {
return vectorOfDigitsAsNumber(v1) + vectorOfDigitsAsNumber(v2);
}
int main()
{
vector<int> v1{ 1,2,3 };
vector<int> v2{ 4,5,6 };
cout << v1 + v2 << '\n';
}