Dodawanie tablic

Madaless
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 14
0

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.

twonek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2500
Madaless
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 14
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.

DR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1135
1

@Madaless Coś takiego?

carlosmay
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Pabianice
1

Możesz też policzyć na piechotę:

Kopiuj
#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ć:

Kopiuj
#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';
} 
carlosmay
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Pabianice
1

Trochę uprościłem poprzedni kod dopisując funkcję zwracającą wartość int, którą można zapisać do zmiennej:

Kopiuj
#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';
} 

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.