Advertisement
Guest User

adunare + inmultire matrice cu pointeri

a guest
Nov 20th, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.70 KB | None | 0 0
  1. #include <iostream>
  2. #include <conio.h>
  3.  
  4.  
  5. using namespace std;
  6.  
  7. void dimensiuneMatrice(int *linii , int *coloane){
  8.  
  9. cout << "Dati numarul de linii ale matricei: ";
  10. cin >> *linii;
  11. cout << "Dati numarul de coloane ale matricei: ";
  12. cin >> *coloane;
  13.  
  14. }
  15.  
  16. int **alocare(int linii, int coloane) {
  17.  
  18. int **m;
  19. m = (int**)malloc(sizeof(int*) * linii);
  20. for (int i = 0;i < linii;i++) {
  21. *(m + i) = (int*)malloc(sizeof(int) * coloane);
  22. }
  23.  
  24. return m;
  25. }
  26.  
  27. void citire(int **m,int linii ,int coloane) {
  28.  
  29.  
  30. for (int i = 0; i < linii;i++) {
  31. for (int j = 0;j < coloane;j++) {
  32. printf("m[%d][%d]= ", i, j);
  33. scanf_s("%d", (*(m + i) + j));
  34. }
  35. }
  36.  
  37.  
  38. }
  39.  
  40.  
  41. void adunareMatrice(int **rezultat,int **m1 , int**m2, int linii,int coloane) {
  42.  
  43.  
  44.  
  45. for (int i = 0;i < linii;i++) {
  46. for (int j = 0;j < coloane;j++) {
  47. *(*(rezultat + i) + j) = 0;
  48. *(*(rezultat + i) + j) += *(*(m1 + i) + j) + *(*(m2 + i) + j);
  49. }
  50. }
  51.  
  52. }
  53.  
  54. void inmultireMatrice(int **rezultat ,int **m1 ,int **m2 ,int linii,int coloane ){
  55.  
  56. for (int i = 0;i < linii;i++) {
  57. for (int j = 0;j < coloane;j++) {
  58. *(*(rezultat + i) + j) = 0;
  59. for (int k = 0;k < linii;k++) {
  60.  
  61. *(*(rezultat + i) + j) += (*(*(m1 + i) + k) * *(*(m2 + k) + j));
  62. }
  63. }
  64. }
  65.  
  66.  
  67. }
  68.  
  69. void afisareMatrice(int **m, int linii, int coloane) {
  70.  
  71. citire(m, linii, coloane);
  72. printf("\n");
  73.  
  74. printf("Matricea introdusa este de forma: \n\n");
  75. for (int i = 0; i < linii;i++) {
  76. for (int j = 0;j < coloane;j++) {
  77. printf("%d ", *(*(m + i) + j) );
  78.  
  79. }
  80. printf("\n");
  81. }
  82. printf("\n");
  83. }
  84.  
  85. void afisareRezultat(int **r, int linii, int coloane) {
  86.  
  87. printf("\n");
  88.  
  89. for (int i = 0; i < linii;i++) {
  90. for (int j = 0;j < coloane;j++) {
  91. printf("%d ", *(*(r + i) + j));
  92.  
  93. }
  94. printf("\n");
  95. }
  96. printf("\n");
  97. }
  98.  
  99.  
  100. void main() {
  101.  
  102. int **matriceA, **matriceB, **matriceRezultat;
  103. int linii,coloane ;
  104.  
  105.  
  106. dimensiuneMatrice(&linii, &coloane);
  107.  
  108.  
  109. printf("\n");
  110.  
  111.  
  112. matriceA = alocare(linii,coloane );
  113. matriceB = alocare(linii, coloane);
  114. matriceRezultat = alocare(linii, coloane);
  115.  
  116. printf( "Introduceti elementele pentru prima matrice: \n\n");
  117. afisareMatrice(matriceA, linii, coloane);
  118. printf("Introduceti elementele pentru cea de-a doua matrice: \n\n");
  119. afisareMatrice(matriceB, linii, coloane);
  120.  
  121.  
  122. printf("Matricea rezultata in urma adunarii este: \n\n");
  123. adunareMatrice(matriceRezultat, matriceA, matriceB, linii, coloane);
  124. afisareRezultat(matriceRezultat, linii, coloane);
  125.  
  126. printf("Matricea rezultata in urma inmultirii este : \n\n");
  127. inmultireMatrice(matriceRezultat, matriceA, matriceB, linii, coloane);
  128. afisareRezultat(matriceRezultat, linii, coloane);
  129.  
  130.  
  131.  
  132.  
  133. _getch();
  134. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement