Informatică, întrebare adresată de Puffy34, 9 ani în urmă



Se da un vector v cu n numere intregi. Scrieți un program C++ care determina simultan suma și produsul elementelor din vector utilizând metoda Divide et Impera.

exemplu :
n=5
1 33 -15 70 9
suma = 98
produs = - 311850


boiustef: ce ai în vedere simultan? la un apel sau la două apeluri dar acelaşi subprogram?
Puffy34: trebuie făcut un singur program, o singura funcție care sa dea suma și produsul

Răspunsuri la întrebare

Răspuns de boiustef
0

Răspuns:

#include <iostream>

using namespace std;

int n, v[1001], i, s, p;

void SumaProd(int v[], int st, int dr, int &s, int &p)

{

   if (st==dr)

       {

           s=v[st]; p=v[st];

       }

   else

   {

       int m=(st+dr)/2;

       int s1=0, p1=1; SumaProd(v,st,m,s1,p1);

       int s2=0, p2=1; SumaProd(v,m+1,dr,s2,p2);

       s=s1+s2;

       p=p1*p2;

   }

}

int main()

{

   cin >> n;

   for (i=1; i<=n; ++i)

       cin >> v[i];

   SumaProd(v, 1, n, s,p);

   cout << "suma= " << s << "\n";

   cout << "produsul= " << p;

}

Explicație:


Puffy34: rezolvarea mi se pare bună, dar la calculator rulează în gol și nu da nimic, apoi returnează un număr foarte mare
boiustef: ??? ai testa exemplul din enunţ? mie mi+a dat cum e în enunţ
boiustef: https://pastebin.com/xfPRBCnh
boiustef: vezi codul sursă
Puffy34: ah, gata
Puffy34: dă bine
Puffy34: mulțumesc mult
boiustef: ce era? eu am verificat şi pt. alte date şi era bine
Puffy34: la limita dreapta scrisesem din greșeală limita stânga și rula la infinit :)
boiustef: :))) se întâmplă
Alte întrebări interesante