Advertisement
heian

Untitled

May 29th, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.08 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include <stdarg.h>
  3. #include <stdio.h>
  4.  
  5. int** ConstruiesteMatrice(int n)
  6. {
  7. int **mat;
  8.  
  9. ///alocam matricea
  10. mat = (int**)malloc(n*sizeof(int*));
  11.  
  12. int i,j;
  13. for(i=0;i<n;i++)
  14. mat[i] = (int*)malloc(n*sizeof(int));
  15.  
  16. ///acum ca am alocat-o, punem valorile cerute
  17.  
  18. for(j=0;j<n;j++)
  19. mat[n-1][j] = 1;
  20. for(i=0;i<n;i++)
  21. mat[i][n-1] = 1;
  22.  
  23. for(i=n-2;i>=0;i--)
  24. {
  25. for(j=n-2;j>=0;j--)
  26. mat[i][j] = mat[i+1][j] + mat[i][j+1];
  27. }
  28. //mat[i][j] = mat[i+1][j] + mat[i][j+1];
  29.  
  30. return mat;
  31. }
  32.  
  33. void DiagonalaPrincipala(int **mat, int n)
  34. {
  35. int i;
  36. char *nume_fisier;
  37. nume_fisier = (char*)malloc(30*sizeof(char));
  38. printf("Introduceti numele fisierului: ");
  39. scanf("%s", nume_fisier);
  40.  
  41. FILE *f;
  42. f = fopen(nume_fisier, "w");
  43. if (!f)//ar fi bine sa scrii asta si la examen, s-ar putea sa se puncteze
  44. return;
  45. for(i=0;i<n;i++)
  46. {
  47. int x;
  48. x = mat[i][i];
  49. fwrite(&x, sizeof(int), 1, f);
  50. }
  51.  
  52. fclose(f);
  53. //partea de mai jos nu s-a cerut la subpunctul b,
  54. //dar o facem ca sa verificam ca am afisat bine in fisier
  55. f=fopen(nume_fisier,"r");
  56. if (!f)
  57. return;
  58. for (i=0;i<n; i++)
  59. {
  60. int x;
  61.  
  62. fread(&x,sizeof(int),1,f);
  63. printf("%d\n",x);
  64. }
  65. fclose(f);
  66. }
  67.  
  68. void PunctulC(int n, char nume_fisier[], int k)
  69. {
  70. int i,*v;
  71. v = (int*)malloc(n*sizeof(int));
  72. FILE *f;
  73. f=fopen(nume_fisier,"r");
  74. for(i=0;i<n;i++)
  75. fread(&v[i], sizeof(int), 1, f);
  76.  
  77. for(i=0;i<k;i++)
  78. v[i]++;
  79. for(i=n-1;i>n-1-k;i--)
  80. v[i]--;
  81. fclose(f);
  82.  
  83. f = fopen(nume_fisier, "w");
  84. for(i=0;i<n;++i)
  85. {
  86. fwrite(&v[i], sizeof(int), 1, f);
  87. printf("v[%d] = %d\n", i, v[i]);//afisarea asta nu e necesara
  88. }
  89. fclose(f);
  90. }
  91.  
  92. int main()
  93. {
  94. int **a;
  95. int n=4;
  96. a = ConstruiesteMatrice(n);
  97.  
  98. DiagonalaPrincipala(a,n);///punctul b
  99. PunctulC(n,"nume_fisier",2);///punctul c
  100.  
  101. return 0;
  102. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement