Advertisement
KvArt

Brisanje vrste a ubicavnje kolone u matricu uz realokaciju

Jul 12th, 2022
662
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.01 KB | None | 0 0
  1. /*• Napisati program na programskom jeziku C koji
  2. učita broj vrsta i broj kolona i potom učita
  3. matricu tih dimenzija. Program potom učita broj
  4. kolone koju treba izbaciti i izbacuje tu kolonu iz
  5. matrice. Zatim čita redni broj vrste na koji umeće
  6. vrstu koju će učitati sa standardnog ulaza.
  7. • Izbacivanje kolone iz matrice podrazumeva:
  8. – pomeranje elemenata u svim vrstama matrice za jedno mesto, od
  9. odgovarajuće pozicije kolone koja se izbacuje
  10. – realociranje svih vrsta i smanjivanje veličine za jedan
  11. • Ubacivanje vrste u matricu podrazumeva:
  12. – realociranje niza pokazivača na vrste i povećanje za jedan
  13. – pomeranje pokazivača u nizu od odgovarajućeg mesta za ubacivanje
  14. nove vrste
  15. – alociranje prostora za novu vrstu*/
  16.  
  17. #include<stdlib.h>
  18. #include<stdio.h>
  19. void main(){
  20. unsigned int **m, **novo_m;
  21. int M, N, i, j, k;
  22. scanf("%d %d", &M, &N);
  23. /*potrebno je napisati i provere o uspesnosti alokacije*/
  24. m = malloc(M * sizeof(unsigned int*));
  25. for (j = 0; j < M; j++){
  26. m[j] = malloc( N * sizeof(unsigned int) );
  27. for (i = 0; i < N; i++) scanf("%u", &m[j][i] );
  28. }
  29. printf("Unesite broj kolone koju izbacujete: ");
  30. scanf("%d", &k);
  31. if ( k >= 0 && k < N) {
  32. for (j = 0; j < M; j++){
  33. int *tmp;
  34. for (i = k+1; i < N; i++) m[j][i-1] = m[j][i];
  35. tmp = realloc( m[j], (N-1) * sizeof(unsigned int));
  36. if (tmp == NULL) {
  37. printf(“Greska u alokaciji!\n”);
  38. exit(1);
  39. } else m[j] = tmp;
  40. }
  41. N--;
  42. }
  43. for (j = 0; j < M; j++){
  44. for (i = 0; i < N; i++) printf("%d ",m[j][i]);
  45. printf("\n");
  46. }
  47. printf("\n\n");
  48. printf("Unesite redni broj na koji umecete vrstu: ");
  49. scanf("%d", &k);
  50. if ( k >= 0 && k < M) {
  51. int *tmp;
  52. tmp = realloc( m, (M+1) * sizeof(unsigned int*) );
  53. if(tmp == NULL ) {
  54. printf(“Greska u alokaciji!\n”);
  55. exit(1);
  56. } else m = tmp;
  57. M++;
  58. for( j = M-1; j > k; j--) m[j] = m[j-1];
  59. m[k] = malloc( N * sizeof(unsigned int) );
  60. for( i = 0; i < N; i++) scanf("%u", &m[k][i]);
  61. }
  62. for (j = 0; j < M; j++){
  63. for (i = 0; i < N; i++) printf("%u ",m[j][i]);
  64. free(m[j]);
  65. printf("\n");
  66. }
  67. free(m);
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement