👤

Salut, este cineva care are putina rabdare sa ma ajute cu o problema, pentru ca nu reusesc deloc sa o fac?O sa postez si codul meu care rezolva 4 teste din 8.Multumesc!
Cerință

Definește funcția inmulteste, care primește ca parametri 3 șiruri de numere întregi, a, b și rezultat. La finalul execuției, șirul rezultat va conține rezultatul înmulțirii numerelor salvate în a și b. Toate cele 3 șiruri vor respecta formatul descris mai sus.


Semnătură funcție

Numele funcției va fi inmulteste

Funcția va avea 3 parametri de tip întreg: a[], b[] și rezultat[]

Funcția va fi de tip void

Restricții

1 ≤ a[0], b[0] ≤ 1 000

Elementele celor două șiruri (exceptând primul element) sunt numere naturale din intervalul [0, 9] (cifre)

Se garantează că a[a[0]] și b[b[0]] (primele cifre ale celor 2 numere) nu vor avea valoarea 0

Exemplu

a[] = {5, 1, 2, 2, 5, 8} ; b[] = {2, 1, 2}

În urma apelului funcției inmulteste(a, b, rezultat), șirul rezultat[] devine:


rezultat[] = {7, 1, 4, 6, 9, 8, 7, 1}


Codul meu:

#include

using namespace std;


void inmulteste(int a[], int b[], int rezultat[]) {

int c = 0, r = 0, v[100000];

for (int i = 1; i <= 3000; ++i)

rezultat[i] = 0;

for (int i = 1; i <= b[0]; ++i) {

r = i - 1;

for (int j = 1; j <= a[0]; ++j) {

++r;

v[r] = 0;

v[r] = b[i] * a[j];

rezultat[r] = rezultat[r] + v[r];

}

}

for (int i = 1; i <= r; ++i)

++c;

rezultat[0] = c;

int c2;

for (int i = 2; i <= c; ++i) {

if (rezultat[i - 1] >= 10)

rezultat[i] = rezultat[i] + rezultat[i - 1] / 10;

if (i == c)

if (rezultat[c] >= 10) {

c2 = rezultat[c];

rezultat[rezultat[c]] = c2 % 10;

c2 = c2 / 10;

++rezultat[0];

rezultat[rezultat[0]] = c2;

}

}

for (int i = 1; i <= rezultat[0]; ++i)

rezultat[i] = rezultat[i] % 10;

for (int i = 0; i <= rezultat[0]; ++i)

cout << rezultat[i] << " ";

}


int main() {

int a[2000], b[2000], rezultat[4000];

cin >> a[0] >> b[0];

for (int i = 1; i <= a[0]; ++i)

cin >> a[i];

for (int i = 1; i <= b[0]; ++i)

cin >> b[i];

inmulteste(a, b, rezultat);

return 0;

}