Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2019
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.91 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <string.h>
  4. #include <locale.h>
  5. #include <stdlib.h>
  6. using namespace std;
  7.  
  8. const int n=4;
  9. typedef int vector[n];
  10. int ProducteEscalar(vector v1, vector v2, int n);
  11. int ProducteEscalarit(vector v1, vector v2, int n);
  12. void ProducteEscalarFinal(vector v1, vector v2, int n, int &subp);
  13.  
  14. int main(){
  15. int subp=0;
  16. vector v1,v2;
  17. cout << "Insereix components del primer vector " << endl;
  18. for(int x=0; x<n; x++){
  19. cin >> v1[x];
  20. }
  21. cout << "Insereix components del segon vector " << endl;
  22. for(int x=0; x<n; x++){
  23. cin >> v2[x];
  24. }
  25. ProducteEscalarFinal(v1,v2,n,subp);
  26. cout << "El producte escalar dels vectors en recursiu no final es " << ProducteEscalar(v1,v2,n) << endl;
  27. cout << "El producte escalar dels vectors en iteratiu es " << ProducteEscalarit(v1,v2,n) << endl;
  28. cout << "El producte escalar dels vectors en recursiu final es " << subp << endl;
  29. }
  30.  
  31. /*Analisi
  32. Cas trivial:
  33. ProducteEscalar(v1,v2,n)= v1[n]*v2[n] si n=0;
  34. Cas recursiu:
  35. ProducteEscalar(v1,v2,n)= ProducteEscalar(v1,v2,n-1) + v1[n]*v2[n] si n>0*/
  36.  
  37. int ProducteEscalar(vector v1, vector v2, int n){
  38. int m=n-1; //Es crear variable auxiliar perquè el codeblocks comença a 0 i no a 1.
  39. if(m==0){
  40. return v1[m]*v2[m];
  41. }
  42. else{
  43. return ProducteEscalar(v1,v2,n-1) + v1[m]*v2[m];
  44. }
  45. }
  46.  
  47. int ProducteEscalarit(vector v1, vector v2, int n){
  48. int subp= 0;
  49. int m=n-1; //Es crear variable auxiliar perquè el codeblocks comença a 0 i no a 1.
  50. while(m>=0){
  51. subp=subp+v1[m]*v2[m];
  52. m=m-1;
  53. }
  54. return subp;
  55. }
  56.  
  57. void ProducteEscalarFinal(vector v1, vector v2, int n, int &subp){
  58. int m=n-1;
  59. if(m==0){
  60. subp=subp+v1[m]*v2[m];
  61. }
  62. else{
  63. ProducteEscalarFinal(v1,v2,n-1,subp);
  64. subp= subp + v1[m]*v2[m];
  65. }
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement