Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <stdarg.h>
- #include <stdio.h>
- int** ConstruiesteMatrice(int n)
- {
- int **mat;
- ///alocam matricea
- mat = (int**)malloc(n*sizeof(int*));
- int i,j;
- for(i=0;i<n;i++)
- mat[i] = (int*)malloc(n*sizeof(int));
- ///acum ca am alocat-o, punem valorile cerute
- for(j=0;j<n;j++)
- mat[n-1][j] = 1;
- for(i=0;i<n;i++)
- mat[i][n-1] = 1;
- for(i=n-2;i>=0;i--)
- {
- for(j=n-2;j>=0;j--)
- mat[i][j] = mat[i+1][j] + mat[i][j+1];
- }
- //mat[i][j] = mat[i+1][j] + mat[i][j+1];
- return mat;
- }
- void DiagonalaPrincipala(int **mat, int n)
- {
- int i;
- char *nume_fisier;
- nume_fisier = (char*)malloc(30*sizeof(char));
- printf("Introduceti numele fisierului: ");
- scanf("%s", nume_fisier);
- FILE *f;
- f = fopen(nume_fisier, "w");
- if (!f)//ar fi bine sa scrii asta si la examen, s-ar putea sa se puncteze
- return;
- for(i=0;i<n;i++)
- {
- int x;
- x = mat[i][i];
- fwrite(&x, sizeof(int), 1, f);
- }
- fclose(f);
- //partea de mai jos nu s-a cerut la subpunctul b,
- //dar o facem ca sa verificam ca am afisat bine in fisier
- f=fopen(nume_fisier,"r");
- if (!f)
- return;
- for (i=0;i<n; i++)
- {
- int x;
- fread(&x,sizeof(int),1,f);
- printf("%d\n",x);
- }
- fclose(f);
- }
- void PunctulC(int n, char nume_fisier[], int k)
- {
- int i,*v;
- v = (int*)malloc(n*sizeof(int));
- FILE *f;
- f=fopen(nume_fisier,"r");
- for(i=0;i<n;i++)
- fread(&v[i], sizeof(int), 1, f);
- for(i=0;i<k;i++)
- v[i]++;
- for(i=n-1;i>n-1-k;i--)
- v[i]--;
- fclose(f);
- f = fopen(nume_fisier, "w");
- for(i=0;i<n;++i)
- {
- fwrite(&v[i], sizeof(int), 1, f);
- printf("v[%d] = %d\n", i, v[i]);//afisarea asta nu e necesara
- }
- fclose(f);
- }
- int main()
- {
- int **a;
- int n=4;
- a = ConstruiesteMatrice(n);
- DiagonalaPrincipala(a,n);///punctul b
- PunctulC(n,"nume_fisier",2);///punctul c
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement