Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //10.2//
- //main.cpp
- #include <stdio.h>
- #include <stdlib.h>
- #include "biblioteca.h"
- struct mat
- {
- int **val;
- int rand;
- int col;
- };
- int main()
- {
- struct mat m={}, b={};
- int r, c, x, y, k, t;
- scanf("%d%d", &r, &c);
- in_mat(m, r, c);
- citire(m);
- scanf("%d", &k);
- scanf("%d", &x);
- scanf("%d", &y);
- scanf("%d", &t);
- switch(t)
- {
- case 1:
- afisare(m);
- break;
- case 2:
- bordare(m, k);
- //printf("%d %d\n", m.rand, m.col);
- afisare(m);
- break;
- case 3:
- in_mat(b, k, k);
- bordare(m, k);
- extragere(m, b, x, y, k);
- afisare(b);
- break;
- case 4:
- binar(m);
- afisare(m);
- break;
- case 5:
- binar(m);
- printf("%d", transformare(m));
- break;
- case 6:
- bordare(m, k);
- in_mat(b, k, k);
- extragere(m, b, x, y, k);
- binar(b);
- printf("%d", transformare(b));
- break;
- }
- }
- //biblioteca.cpp
- #include "biblioteca.h"
- struct mat
- {
- int **val;
- int rand;
- int col;
- };
- void in_mat(struct mat &m, int r, int c)
- {
- m.val=(int**) malloc(r*sizeof(int*));
- for(int i=0; i<r; i++)
- m.val[i]=(int*) malloc(c*sizeof(int));
- m.rand=r; m.col=c;
- }
- void citire(struct mat m)
- {
- for(int i=0; i<m.rand; i++)
- for(int j=0; j<m.col; j++)
- scanf("%d", &m.val[i][j]);
- }
- void afisare(struct mat m)
- {
- for(int i=0; i<m.rand; i++)
- {
- for(int j=0; j<m.col; j++)
- printf("%d ", *(*(m.val+i)+j));
- printf("\n");
- }
- }
- void bordare(struct mat &m, int k)
- {
- struct mat temp;
- in_mat(temp, m.rand+k-1, m.col+k-1);
- for(int i=0; i<m.rand; i++)
- for(int j=0; j<m.col; j++)
- temp.val[i][j]=m.val[i][j];
- for(int i=m.rand; i<temp.rand; i++)
- for(int j=0; j<temp.col; j++)
- temp.val[i][j]=0;
- for(int j=m.col; j<temp.col; j++)
- for(int i=0; i<temp.rand; i++)
- temp.val[i][j]=0;
- for(int i=0; i<m.rand; i++)
- free(m.val[i]);
- m=temp;
- }
- void extragere(struct mat m, struct mat &b, int x, int y, int k)
- {
- for(int i=x, p=0; i<x+k; i++, p++)
- for(int j=y, q=0; j<y+k; j++, q++)
- b.val[p][q]=m.val[i][j];
- }
- void binar(struct mat m)
- {
- int v=(*(*(m.val+m.rand/2)+m.col/2));
- for(int i=0; i<m.rand; i++)
- for(int j=0; j<m.col; j++)
- if((*(*(m.val+i)+j))>v)
- (*(*(m.val+i)+j))=1;
- else
- (*(*(m.val+i)+j))=0;
- }
- int transformare(struct mat m)
- {
- long long p=1;
- long long n=0;
- for(int i=0; i<m.rand; i++)
- for(int j=0; j<m.col; j++)
- {
- if((*(*(m.val+i)+j))==1)
- n+=p;
- p*=2;
- }
- return n;
- }
- //biblioteca.h
- #ifndef BIBLIOTECA_H
- #define BIBLIOTECA_H
- #include <stdio.h>
- #include <stdlib.h>
- struct mat;
- void in_mat(struct mat &m, int r, int l);
- void citire(struct mat m);
- void afisare(struct mat m);
- void bordare(struct mat &m, int k);
- void extragere(struct mat m, struct mat &b, int x, int y, int k);
- void binar(struct mat m);
- int transformare(struct mat m);
- #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement