//TWORZENIE MACIERZY : PROBLEM A, AUTOR URSZULA SKOTNY #include #include #include //#include "stdafx.h" using namespace std; void T(char **M_pocz, int rozmiarMacierzy); void D(char **M_pocz, int rozmiarMacierzy); void H(char **M_pocz, int rozmiarMacierzy); void V(char **M_pocz, int rozmiarMacierzy); void A(char **M_pocz, int rozmiarMacierzy); void B(char **M_pocz, int rozmiarMacierzy); void C(char **M_pocz, int rozmiarMacierzy); void X(char **M_pocz, int rozmiarMacierzy); void Y(char **M_pocz, int rozmiarMacierzy); void Z(char **M_pocz, int rozmiarMacierzy); void Show(char **M_pocz, int rozmiarMacierzy); int main(int argc, char*argv[]) { string linia; getline(cin, linia); int iloscTestow = stoi(linia); // Funkcja stoi konwertuje sekwencję znaków w _Str do wartości typu int i zwraca wartość for (int i = 0; i < iloscTestow; i++) // mowię ile razy ma sie wykonać - czyli ilośc testow { // pobranie rozmiaru macierzy getline(cin, linia); int rozmiarMacierzy = stoi(linia); // alokacja pamieci odpowiednio przydział i zwolnienie ciągłego obszaru pamięci. char **macierz = new char*[rozmiarMacierzy]; for (int j = 0; j < rozmiarMacierzy; j++) { macierz[j] = new char[rozmiarMacierzy]; } // wczytanie danych z pliku wejsciowego for (int j = 0; j < rozmiarMacierzy; j++) { getline(cin, linia); for (int k = 0; k < rozmiarMacierzy; k++) { macierz[j][k] = linia[k]; } } string operacje; getline(cin, operacje); // bierz skad i co int iloscOperacji = operacje.length() - 1; for (int j = 0; j < iloscOperacji; j++) { switch (operacje[j]) { case 'T': T(macierz, rozmiarMacierzy); break; case 'D': D(macierz, rozmiarMacierzy); break; case 'H': H(macierz, rozmiarMacierzy); break; case 'V': V(macierz, rozmiarMacierzy); break; case 'A': A(macierz, rozmiarMacierzy); break; case 'B': B(macierz, rozmiarMacierzy); break; case 'C': C(macierz, rozmiarMacierzy); break; case 'X': X(macierz, rozmiarMacierzy); break; case 'Y': Y(macierz, rozmiarMacierzy); break; case 'Z': Z(macierz, rozmiarMacierzy); break; } } // zapis do pliku wyjsciowego for (int j = 0; j < rozmiarMacierzy; j++) { for (int k = 0; k < rozmiarMacierzy; k++) { cout << (char)macierz[j][k]; } cout << endl; } } } void T(char **M_pocz, int rozmiarMacierzy) // M_pocz - macierz pocżatkowa. czyli wejściowa { char **m_pocz = new char *[rozmiarMacierzy]; //m_pocz - macierz końcowa, czyli wyjściowa for (int i = 0; i < rozmiarMacierzy; i++) m_pocz[i] = new char[rozmiarMacierzy]; for (int i = 0; i < rozmiarMacierzy; i++) { for(int j=0; j< rozmiarMacierzy; j++) { m_pocz[j][i] = M_pocz[i][j]; } } for (int i = 0; i < rozmiarMacierzy; i++) { for (int j = 0; j < rozmiarMacierzy; j++) { M_pocz[i][j] = m_pocz[i][j]; } } } void D(char **M_pocz, int rozmiarMacierzy) { char **m_pocz = new char*[rozmiarMacierzy]; for (int i = 0; i < rozmiarMacierzy; i++) m_pocz[i] = new char[rozmiarMacierzy]; for (int i = 0; i < rozmiarMacierzy; i++) { for (int j = 0; j < rozmiarMacierzy; j++) { m_pocz[rozmiarMacierzy - j - 1][rozmiarMacierzy - i - 1] = M_pocz[i][j]; } } for (int i = 0; i < rozmiarMacierzy; i++) { for (int j = 0; j < rozmiarMacierzy; j++) { M_pocz[i][j] = m_pocz[rozmiarMacierzy- i-1][j]; } } } void H(char **M_pocz, int rozmiarMacierzy) { char **m_pom = new char *[rozmiarMacierzy]; for (int i = 0; i < rozmiarMacierzy; i++) m_pom[i] = new char[rozmiarMacierzy]; for (int i = 0; i < rozmiarMacierzy; i++) { for (int j = 0; j < rozmiarMacierzy; j++) { m_pom[i][rozmiarMacierzy - j - 1] = M_pocz[i][j]; } } for (int i = 0; i < rozmiarMacierzy; i++) { for (int j = 0; j < rozmiarMacierzy; j++) { M_pocz[i][j] = m_pom[rozmiarMacierzy - j - 1][i]; } } } void V(char **M_pocz, int rozmiarMacierzy) { char **m_pom = new char *[rozmiarMacierzy]; for (int i = 0; i < rozmiarMacierzy; i++) m_pom[i] = new char[rozmiarMacierzy]; for (int i = 0; i < rozmiarMacierzy; i++) { for (int j = 0; j