Advertisement
Guest User

eh

a guest
Jan 23rd, 2020
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.27 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. struct macierz {
  4. int w,k;
  5. int **a;
  6. };
  7. struct macierz losujMacierz (int w, int k);
  8. void wyswietlMacierz (struct macierz a);
  9. int maks (struct macierz a);
  10. int maksWierszy(struct macierz a);
  11. int maksKolumn(struct macierz a);
  12. struct macierz zrobMacierz (int wp, int kp, int wk, int kk, struct macierz a);
  13. void zapiszDoPliku(struct macierz a, char nazwa []);
  14. struct macierz wczytajMcierzZPliku (char mazwa[]);
  15. int main(){
  16. srand(time(0));
  17. int w,k,wp,kp,wk,kk;
  18. printf("Podaj wymiary macierzy A: ");
  19. scanf("%d %d", &w, &k);
  20. struct macierz A;
  21. A = losujMacierz(w,k);
  22. wyswietlMacierz(A);
  23. printf("Maksimum macierzy wynosi: %d\n", maks(A));
  24. printf("Wiersz w ktorym wystepuje najwieksza suma: %d\n", maksWierszy(A));
  25. printf("Kolumna w ktorej wystepuje najwieksza suma: %d\n", maksKolumn(A));
  26. printf("Podaj wspolrzedne lewego gornego rogu nowej macierzy: ");
  27. scanf("%d %d", &wp, &kp);
  28. printf("Podaj wspolrzedne prawego dolnego rogu nowej macierzy: ");
  29. scanf("%d %d", &wk, &kk);
  30. struct macierz B;
  31. B = zrobMacierz(wp,kp,wk,kk,A);
  32. wyswietlMacierz(B);
  33. zapiszDoPliku(B,"MacierzB.txt");
  34. struct macierz C;
  35. printf("Wczytana macierz: \n");
  36. C=wczytajMcierzZPliku("MacierzB.txt");
  37. wyswietlMacierz(C);
  38. printf("\n997-TEN NUMER TO KLOPOTY!");
  39. return 0;
  40. }
  41. struct macierz losujMacierz(int w, int k){
  42. struct macierz pom;
  43. pom.w=w;
  44. pom.k=k;
  45. pom.a=(int*)malloc(sizeof(int*)*w);
  46. for (int i=0; i<pom.w; i++){
  47. pom.a[i]=(int*)malloc(sizeof(int*)*k);
  48. }
  49. for (int i=0; i<pom.w; i++){
  50. for (int j=0; j<pom.k; j++){
  51. pom.a[i][j]=rand()%10;
  52. }
  53. }
  54. return pom;
  55. };
  56.  
  57. void wyswietlMacierz(struct macierz a){
  58. for (int i=0; i<a.w; i++){
  59. for (int j=0; j<a.k; j++){
  60. printf("%d ", a.a[i][j]);
  61. }
  62. printf("\n");
  63. }
  64. }
  65.  
  66. int maks(struct macierz a){
  67. int max;
  68. max=a.a[0][0];
  69. for (int i=0; i<a.w; i++){
  70. for (int j=0; j<a.k; j++){
  71. if (a.a[i][j]>max){
  72. max = a.a[i][j];
  73. }
  74. }
  75. }
  76. return max;
  77. }
  78. int maksWierszy(struct macierz a){
  79. int max, suma=0, tab[a.w], x=0;
  80. for(int i=0;i<a.w;i++){
  81. suma=0;
  82. for(int j=0;j<a.k;j++){
  83. suma = suma + a.a[i][j];
  84. }
  85. tab[i]=suma;
  86. }
  87. max=tab[0];
  88. for(int i=0; i<a.w;i++){
  89. if(tab[i]>max){
  90. max=tab[i];
  91. x=i+1;
  92. }
  93. }
  94. return x;
  95. }
  96.  
  97. int maksKolumn(struct macierz a){
  98. int max, suma=0, tab[a.w], x=0;
  99. for(int i=0;i<a.k;i++){
  100. suma=0;
  101. for(int j=0;j<a.w;j++){
  102. suma = suma + a.a[j][i];
  103. }
  104. tab[i]=suma;
  105. }
  106. max=tab[0];
  107. for(int i=0; i<a.w;i++){
  108. if(tab[i]>max){
  109. max=tab[i];
  110. x=i+1;
  111. }
  112. }
  113. return x;
  114. }
  115.  
  116. struct macierz zrobMacierz (int wp, int kp, int wk, int kk, struct macierz a){
  117. struct macierz pom;
  118. pom.w=(wk-wp)+1;
  119. pom.k=(kk-kp)+1;
  120. pom.a=(int*)malloc(sizeof(int*)*pom.w);
  121. for(int i=0;i<pom.w;i++){
  122. pom.a[i]=(int*)malloc(sizeof(int*)*pom.k);
  123. }
  124. for(int i=0;i<pom.w;i++){
  125. for(int j=0;j<pom.k;j++){
  126. pom.a[i][j]=a.a[i+1][j+1];
  127. }
  128. }
  129. return pom;
  130. };
  131.  
  132. void zapiszDoPliku(struct macierz a, char nazwa []){
  133. FILE *fp;
  134. if ((fp=fopen(nazwa, "w"))==NULL){
  135. printf("Nie moge otworzyc pliku do zapisu!\n");
  136. exit(1);
  137. }
  138. fprintf(fp, "%d \n", a.w);
  139. fprintf(fp, "%d \n", a.k);
  140. for (int i=0; i<a.w; i++){
  141. for (int j=0; j<a.k; j++){
  142. fprintf(fp, "%d ", a.a[i][j]);
  143. fprintf(fp, "\n");
  144. }
  145. }
  146. fclose (fp);
  147. }
  148.  
  149. struct macierz wczytajMcierzZPliku(char nazwa[]){
  150. struct macierz pom;
  151. FILE *fp;
  152. fp = fopen(nazwa, "r");
  153. fscanf(fp, "%d", &pom.w);
  154. fscanf(fp, "%d", &pom.k);
  155. pom.a= (int*)malloc(sizeof(int*)*pom.w);
  156. for (int i=0; i<pom.w; i++){
  157. pom.a[i]=(int*)malloc(sizeof(int*)*pom.k);
  158. }
  159. for (int i=0; i<pom.w; i++){
  160. for (int j=0; j<pom.k; j++){
  161. fscanf(fp, "%d ", &pom.a[i][j]);
  162. }
  163. }
  164. close(fp);
  165. return pom;
  166. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement