Advertisement
Guest User

Untitled

a guest
May 26th, 2015
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.92 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void dodaj(int **mac1, int **mac2, int x, int y)
  5. {
  6. int i,j,**macw = (int*) malloc (sizeof(int)*x);
  7. for (i=0;i<x;i++)
  8. {
  9. macw[i]=(int*) malloc (sizeof(int)*y);
  10. }
  11. for (i=0;i<x;i++)
  12. {
  13. for (j=0;j<y;j++)
  14. {
  15. macw[i][j]=mac1[i][j]+mac2[i][j];
  16. }
  17. }
  18. for (i=0;i<x;i++)
  19. {
  20. for (j=0;j<y;j++)
  21. {
  22. printf("%d ",macw[i][j]);
  23. }
  24. printf("\n");
  25. }
  26. for (i=0;i<x;i++)
  27. {free(*macw[i]);}
  28. }
  29.  
  30. void odejm(int **mac1, int **mac2, int x, int y)
  31. {
  32. int i,j,**macw = (int*) malloc (sizeof(int)*x);
  33. for (i=0;i<x;i++)
  34. {
  35. macw[i]=(int*) malloc (sizeof(int)*y);
  36. }
  37. for (i=0;i<x;i++)
  38. {
  39. for (j=0;j<y;j++)
  40. {
  41. macw[i][j]=mac1[i][j]-mac2[i][j];
  42. }
  43. }
  44. for (i=0;i<x;i++)
  45. {
  46. for (j=0;j<y;j++)
  47. {
  48. printf("%d ",macw[i][j]);
  49. }
  50. printf("\n");
  51. }
  52. for (i=0;i<x;i++)
  53. {free(*macw[i]);}
  54. }
  55.  
  56. void mnoz(int **mac1, int **mac2, int x, int y, int x2, int y2)
  57. {
  58. int i,j,k,**macw = (int*) malloc (sizeof(int)*x);
  59. for (i=0;i<x;i++)
  60. {
  61. macw[i]=(int*) malloc (sizeof(int)*y2);
  62. }
  63. for (i=0;i<x;i++)
  64. {
  65. for (j=0;j<y2;j++)
  66. {
  67. macw[i][j]=0;
  68. for (k=0;k<y;k++)
  69. {
  70. macw[i][j]=macw[i][j]+(mac1[i][k]*mac2[k][j]);
  71. }
  72. }
  73. }
  74. for (i=0;i<x;i++)
  75. {
  76. for (j=0;j<y2;j++)
  77. {
  78. printf("%d ",macw[i][j]);
  79. }
  80. printf("\n");
  81. }
  82. //for (i=0;i<x;i++)
  83. //{free(*macw[i]);}
  84. }
  85.  
  86. void transp(int **mac1, int x, int y)
  87. {
  88. int i,j,**macw = (int*) malloc (sizeof(int)*y);
  89. printf("przed:\n");
  90. for (i=0;i<x;i++)
  91. {
  92. for (j=0;j<y;j++)
  93. {
  94. printf("%d ",mac1[i][j]);
  95. }
  96. printf("\n");
  97. }
  98.  
  99. for (i=0;i<y;i++)
  100. {
  101. macw[i]=(int*) malloc (sizeof(int)*x);
  102. }
  103. for (i=0;i<y;i++)
  104. {
  105. for (j=0;j<x;j++)
  106. {
  107. macw[i][j]=mac1[j][i];
  108. }
  109. }
  110. **mac1=**macw;
  111. printf("\npo:\n");
  112. for (i=0;i<y;i++)
  113. {
  114. for (j=0;j<x;j++)
  115. {
  116. printf("%d ",macw[i][j]);
  117. }
  118. printf("\n");
  119. }
  120. /*for (i=0;i<x;i++)
  121. {free(*macw[i]);}*/
  122. }
  123.  
  124. int main()
  125. {
  126. int x,x2,y,y2,i,j,d;
  127. printf("Podaj rozmiary maciezy #1. \nX = ");
  128. scanf("%d",&x);
  129. printf("Y = ");
  130. scanf("%d",&y);
  131. int **mac1 = (int*) malloc (sizeof(int)*x);
  132. for (i=0;i<x;i++)
  133. {
  134. mac1[i]=(int*) malloc (sizeof(int)*y);
  135. }
  136. for (i=0;i<x;i++)
  137. {
  138. for (j=0;j<y;j++)
  139. {
  140. printf("podaj wartosc %dx%d : ",i+1,j+1);
  141. scanf("%d",&
  142. mac1[i][j]);
  143. }
  144. }
  145. printf("Podaj rozmiary maciezy #2. \nX = ");
  146. scanf("%d",&x2);
  147. printf("Y = ");
  148. scanf("%d",&y2);
  149. int **mac2 = (int*) malloc (sizeof(int)*x2);
  150. for (i=0;i<x2;i++)
  151. {
  152. mac2[i]=(int*) malloc (sizeof(int)*y2);
  153. }
  154. for (i=0;i<x2;i++)
  155. {
  156. for (j=0;j<y2;j++)
  157. {
  158. printf("podaj wartosc %dx%d : ",i+1,j+1);
  159. scanf("%d",&mac2[i][j]);
  160. }
  161. }
  162. if ((x==x2) && (y==y2)) {printf("1-dodaj je\n2-odejmij macierze #1-#2\n");}
  163. if (y==x2) {printf("3-pomnoz macierz #1 * #2\n");}
  164. printf("4-Transponuj macierz nr 1\n");
  165. printf("decyzja: ");
  166. scanf("%d",&d);
  167. switch(d)
  168. {
  169. case 1:
  170. dodaj(mac1,mac2,x,y);
  171. break;
  172. case 2:
  173. odejm(mac1,mac2,x,y);
  174. break;
  175. case 3:
  176. mnoz(mac1,mac2,x,y,x2,y2);
  177. break;
  178. case 4:
  179. transp(mac1,x,y);
  180. break;
  181. default:break;}
  182. for (i=0;i<x;i++)
  183. {free(*mac1[i]);}
  184. for (i=0;i<x2;i++)
  185. {free(*mac2[i]);}
  186. system("pause");
  187. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement