Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <string.h>
- #include <locale.h>
- #include <stdlib.h>
- using namespace std;
- const int n=4;
- typedef int vector[n];
- int ProducteEscalar(vector v1, vector v2, int n);
- int ProducteEscalarit(vector v1, vector v2, int n);
- void ProducteEscalarFinal(vector v1, vector v2, int n, int &subp);
- int main(){
- int subp=0;
- vector v1,v2;
- cout << "Insereix components del primer vector " << endl;
- for(int x=0; x<n; x++){
- cin >> v1[x];
- }
- cout << "Insereix components del segon vector " << endl;
- for(int x=0; x<n; x++){
- cin >> v2[x];
- }
- ProducteEscalarFinal(v1,v2,n,subp);
- cout << "El producte escalar dels vectors en recursiu no final es " << ProducteEscalar(v1,v2,n) << endl;
- cout << "El producte escalar dels vectors en iteratiu es " << ProducteEscalarit(v1,v2,n) << endl;
- cout << "El producte escalar dels vectors en recursiu final es " << subp << endl;
- }
- /*Analisi
- Cas trivial:
- ProducteEscalar(v1,v2,n)= v1[n]*v2[n] si n=0;
- Cas recursiu:
- ProducteEscalar(v1,v2,n)= ProducteEscalar(v1,v2,n-1) + v1[n]*v2[n] si n>0*/
- int ProducteEscalar(vector v1, vector v2, int n){
- int m=n-1; //Es crear variable auxiliar perquè el codeblocks comença a 0 i no a 1.
- if(m==0){
- return v1[m]*v2[m];
- }
- else{
- return ProducteEscalar(v1,v2,n-1) + v1[m]*v2[m];
- }
- }
- int ProducteEscalarit(vector v1, vector v2, int n){
- int subp= 0;
- int m=n-1; //Es crear variable auxiliar perquè el codeblocks comença a 0 i no a 1.
- while(m>=0){
- subp=subp+v1[m]*v2[m];
- m=m-1;
- }
- return subp;
- }
- void ProducteEscalarFinal(vector v1, vector v2, int n, int &subp){
- int m=n-1;
- if(m==0){
- subp=subp+v1[m]*v2[m];
- }
- else{
- ProducteEscalarFinal(v1,v2,n-1,subp);
- subp= subp + v1[m]*v2[m];
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement