Advertisement
Dzok1517

C proba

Nov 26th, 2020 (edited)
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.86 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void ucitaj(int** , int);
  5. void ispisi(int** , int );
  6.  
  7. int* izdvoj(int** , int );
  8. int brElemenata = 0 ;
  9.  
  10. int saberi(int , int );
  11. int oduzmi(int , int );
  12. int operacija(int* , int(int,int));
  13.  
  14. int main(){
  15. printf("Unesite velicinu matrice (NxN) ---> ");
  16. int n ;
  17. scanf("%i",&n);
  18. printf("\n---------------\n");
  19.  
  20. int** matrica = malloc( n * sizeof(int*));
  21. for(int i = 0 ; i < n; i++){
  22. matrica[i] = malloc(n * sizeof(int));
  23. }
  24. ucitaj(matrica, n);
  25. ispisi(matrica, n);
  26.  
  27. int* niz = izdvoj(matrica, n);
  28. printf("\nIzdvojeni niz elemenata vecih od 20 ---> \n");
  29. for(int i = 0 ;i < brElemenata ; i++){
  30. printf("\t%i\t",niz[i]);
  31. }
  32.  
  33. int k ;
  34. do{
  35. printf("\nUnesite 0 za operaciju saberi\t Unesite 1 za operaciju oduzmi --> ");
  36. scanf("%i",&k);
  37. }while(k != 0 && k != 1);
  38. printf("\n");
  39. int result ;
  40. switch(k){
  41. case 0 :
  42. printf("Odabrana je operacija saberi !\n");
  43. result = operacija(niz, saberi);
  44. break;
  45. case 1 :
  46. printf("Odabrana je operacija oduzmi !\n");
  47. result = operacija(niz, oduzmi);
  48. break;
  49. }
  50.  
  51. printf("Rezultat posle odabrane operacije jeste \t---> %i",result);
  52.  
  53. for(int i = 0 ;i < n ; i++){
  54. free(matrica[i]);
  55. }
  56. free(matrica);
  57. free(niz);
  58. return 0;
  59. }
  60.  
  61. void ucitaj(int** matrica, int n ){
  62. printf("Ucitajte clanove matrice ---> \n");
  63. for(int i = 0 ;i < n ; i++){
  64. for(int j = 0 ;j < n ; j++){
  65. printf("Unesite \t%i. clan matrice ---> ", (i*n+j)+1);
  66. scanf("%i",&matrica[i][j]);
  67. }
  68. printf("\n");
  69. }
  70. }
  71. void ispisi(int** matrica, int n ){
  72. printf("Matrica ---> \n");
  73. for(int i = 0 ;i < n ; i++){
  74. for(int j = 0 ;j < n ; j++){
  75. printf("\t%i\t", matrica[i][j]);
  76.  
  77. }
  78. printf("\n");
  79. }
  80. }
  81.  
  82. int* izdvoj(int** matrica, int n ){
  83. int brHelper = 0 ;
  84. for(int i = 0 ;i < n ; i++){
  85. for(int j = 0 ;j < n ; j++){
  86. if(matrica[i][j]>20)
  87. brHelper++;
  88.  
  89.  
  90. }
  91. }
  92. brElemenata = brHelper;
  93. int* nizToReturn = malloc( brHelper * sizeof(int));
  94. int brojacHelper = 0 ;
  95.  
  96. for(int i = 0 ;i < n ; i++){
  97. for(int j = 0 ;j < n ; j++){
  98. if(matrica[i][j]>20){
  99. nizToReturn[brojacHelper] = matrica[i][j];
  100. brojacHelper++;
  101. }
  102. }
  103. }
  104. return nizToReturn;
  105. }
  106.  
  107. int saberi (int a, int b){
  108. return a+b ;
  109. }
  110. int oduzmi(int a, int b){
  111. return a-b;
  112. }
  113.  
  114. int operacija(int* niz, int(*fun)(int,int)){
  115. int result = 0 ;
  116. for(int i = 0 ; i < brElemenata ; i++){
  117. result += fun(result,niz[i]);
  118. }
  119. return result;
  120. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement