Advertisement
Dr4noel

Inmultirea a doua matrici(DUBLU POINTER).

Jan 18th, 2018
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.98 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <stdlib.h>
  4.  
  5. void readMatrix(int linii, int coloane, int **p) {
  6. int i, j;
  7.  
  8. for (i = 0; i < linii; i++) {
  9. for (j = 0; j < coloane; j++) {
  10. printf("m[%d][%d] = ", i, j);
  11. scanf_s("%d", *(p + i) + j);
  12. }
  13. }
  14. }
  15.  
  16.  
  17. void displayMatrix(int linii, int coloane, int **p) {
  18. int i, j;
  19.  
  20. for (i = 0; i < linii; i++) {
  21. for (j = 0; j < coloane; j++) {
  22. printf("%d ", *(*(p + i) + j));
  23. }
  24. printf("\n");
  25. }
  26. }
  27.  
  28. int **alocare(int linii, int coloane) {
  29. int **pointer;
  30. if ((pointer = (int**)malloc(sizeof(int*)*linii)) == NULL) {
  31. printf("\nNu aveti suficenta memorie: ");
  32. _getch();
  33. exit(0);
  34. }
  35. for (int i = 0; i <= linii; i++) {
  36. if ((*(pointer + i) = (int*)malloc(sizeof(int)*coloane)) == NULL) {
  37. exit(0);
  38. }
  39. }
  40. return pointer;
  41. }
  42.  
  43. void multiplicaton(int l1, int c2, int c1, int **p1, int **p2,int **p3) {
  44. int i, j, k;
  45.  
  46. for(i = 0; i < l1; i++){
  47. for (j = 0; j < c2; j++) {
  48. *(*(p3 + i) +j) = 0;
  49. for (k = 0; k < c1; k++) {
  50. *(*(p3 + i) + j) = *(*(p3 + i) + j) + *(*(p1 + i) + k ) * *(*(p2 + k) + j);
  51. }
  52. }
  53. }
  54.  
  55. }
  56.  
  57. void main() {
  58. int l1, c1, **p1, l2, c2, **p2, **p3;
  59.  
  60. printf("Introduceti numarul de linii pentru prima matrice: \n");
  61. scanf_s("%d", &l1);
  62.  
  63. printf("Introduceti numarul de coloane pentru prima matrice: \n");
  64. scanf_s("%d", &c1);
  65.  
  66. p1 = alocare(l1, c1);
  67.  
  68. readMatrix(l1, c1, p1);
  69.  
  70. printf("\n");
  71.  
  72. displayMatrix(l1, c1, p1);
  73.  
  74. printf("\nIntroduceti numarul de linii pentru a doua matrice: \n");
  75. scanf_s("%d", &l2);
  76.  
  77. while (l2 != c1) {
  78. printf("Reintroduceti: ");
  79. scanf_s("%d", &l2);
  80. }
  81.  
  82. printf("Introduceti numarul de coloane pentru a doua matrice: \n");
  83. scanf_s("%d", &c2);
  84.  
  85. p2 = alocare(l2, c2);
  86.  
  87. readMatrix(l2, c2, p2);
  88.  
  89. printf("\n");
  90.  
  91. displayMatrix(l2, c2, p2);
  92.  
  93. printf("Matricea 1 * Matricea 2 = \n");
  94.  
  95. p3 = alocare(l1, c2);
  96.  
  97. multiplicaton(l1, c2, c1, p1, p2, p3);
  98.  
  99. printf("\n");
  100.  
  101. displayMatrix(l1,c2,p3);
  102.  
  103. _getch();
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement