Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- using namespace std;
- const int N = 100;
- void citireImagine(bool a[N][N], int &m){
- cin >> m;
- for ( int i = 0; i < m; i++ )
- for ( int j = 0; j < m; j++ )
- cin >> a[i][j];
- }
- void inversiune(bool a[N][N], int m){
- for ( int i = 0; i < m; i++ )
- for ( int j = 0; j < m; j++ )
- a[i][j] = !a[i][j]; /// Schimbam in alternativa lui
- }
- void rotire(bool a[N][N], int m){
- ///Creem o copie
- bool c[N][N];
- for ( int i = 0; i < m; i++ )
- for ( int j = 0; j < m; j++ )
- c[i][j] = a[i][j];
- ///Rotim la 90 de grade
- for ( int i = 0; i < m; i++ )
- for ( int j = 0; j < m; j++ )
- a[j][m-i-1] = c[i][j];
- }
- void zoom(bool a[N][N], int &m){
- int n = m;
- m*= 2;
- ///Creem o copie
- bool c[N][N];
- for ( int i = 0; i < n; i++ )
- for ( int j = 0; j < n; j++ )
- c[i][j] = a[i][j];
- ///Parcurgem copia si rescriem valori cu varianta de zoom pe cea originala
- for ( int i = 0 ; i < n; i++ ){
- for ( int j = 0; j < n; j++ ){
- a[2*i][2*j] = a[2*i][2*j+1] = a[2*i+1][2*j] = a[2*i+1][2*j+1] = c[i][j];
- }
- }
- }
- void transformari(bool a[N][N], int &m, char s[], int k){
- ///Parcurgem sirul de operatii si le tratam corespunzator
- for ( int i = 0 ; i < k; i++ ){
- if ( s[i] == 'I' )
- inversiune(a, m);
- if ( s[i] == 'R' )
- rotire(a, m);
- if ( s[i] == 'Z' )
- zoom(a, m);
- }
- }
- void afisareImagine(bool a[N][N], int m){
- for ( int i = 0 ; i < m; i++ ){
- for ( int j = 0; j < m; j++ )
- cout << a[i][j] << " ";
- cout << "\n";
- }
- }
- int main(){
- ///Rulare pe exemplu
- int m;
- bool a[N][N];
- char s[] = "RIRZ";
- citireImagine(a, m);
- transformari(a, m, s, 4);
- afisareImagine(a, m);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement