//(c)Terminator
#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;
void transponse(int* arr, int& n, int& m);
void print_mat(ostream& _o, const int* arr,
const int n, const int m);
int main(void){
const int M = 5;
const int N = 6;
int arr[M*N];
int n = N;
int m = M;
// заполнить матрицу для примера
int* e = &arr[M*N];
for(int* i = &arr[0]; i != e;)
*i++ = rand() % 10;
print_mat(cout, arr, n, m);
transponse(arr, n, m);
print_mat(cout, arr, n, m);
transponse(arr, n, m);
print_mat(cout, arr, n, m);
return 0;
}
//транспонирование
void transponse(int* arr, int& n, int& m){
if(n == m){
for(int r = 0; r < n; ++r){
for(int c = r; c < m; ++c)
swap(arr[r*m + c], arr[c*m + r]);
}
} else {
int* tmp = new int[n * m];
for(int r = 0; r < n; ++r){
for(int c = 0; c < m; ++c)
tmp[c*n + r] = arr[r*m + c];
}
memcpy(arr, tmp, (size_t)(n * m) * sizeof(int));
swap(n, m);
delete[] tmp;
}
}
//печать матрицы
void print_mat(ostream& _o, const int* arr,
const int n, const int m){
for(int i = 0; i < n; ++i){
for(int j = 0; j < m; ++j)
_o << arr[i*m + j] << ' ';
_o << endl;
}
_o << endl;
}
Ly8oYylUZXJtaW5hdG9yCiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPGNzdHJpbmc+CiNpbmNsdWRlIDxjc3RkbGliPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdm9pZCAgdHJhbnNwb25zZShpbnQqIGFyciwgaW50JiBuLCBpbnQmIG0pOwp2b2lkICBwcmludF9tYXQob3N0cmVhbSYgX28sIGNvbnN0IGludCogYXJyLCAKCQkJCWNvbnN0IGludCBuLCBjb25zdCBpbnQgbSk7CgoKaW50IG1haW4odm9pZCl7Cgljb25zdCBpbnQgTSA9IDU7IAoJY29uc3QgaW50IE4gPSA2OwoJaW50IGFycltNKk5dOwoKCWludCBuID0gTjsKCWludCBtID0gTTsKCgkvLyDQt9Cw0L/QvtC70L3QuNGC0Ywg0LzQsNGC0YDQuNGG0YMg0LTQu9GPINC/0YDQuNC80LXRgNCwCglpbnQqIGUgPSAmYXJyW00qTl07Cglmb3IoaW50KiBpID0gJmFyclswXTsgaSAhPSBlOykKCQkqaSsrID0gcmFuZCgpICUgMTA7CgoJcHJpbnRfbWF0KGNvdXQsIGFyciwgbiwgbSk7CgoJdHJhbnNwb25zZShhcnIsIG4sIG0pOwoJcHJpbnRfbWF0KGNvdXQsIGFyciwgbiwgbSk7CgoJdHJhbnNwb25zZShhcnIsIG4sIG0pOwoJcHJpbnRfbWF0KGNvdXQsIGFyciwgbiwgbSk7CglyZXR1cm4gMDsKfQoKCi8v0YLRgNCw0L3RgdC/0L7QvdC40YDQvtCy0LDQvdC40LUKdm9pZCAgdHJhbnNwb25zZShpbnQqIGFyciwgaW50JiBuLCBpbnQmIG0pewoJaWYobiA9PSBtKXsKCQlmb3IoaW50IHIgPSAwOyByIDwgbjsgKytyKXsKCQkJZm9yKGludCBjID0gcjsgYyA8IG07ICsrYykKCQkJCXN3YXAoYXJyW3IqbSArIGNdLCBhcnJbYyptICsgcl0pOwoJCX0KCX0gZWxzZSB7CgkJaW50KiB0bXAgPSBuZXcgaW50W24gKiBtXTsKCQlmb3IoaW50IHIgPSAwOyByIDwgbjsgKytyKXsKCQkJZm9yKGludCBjID0gMDsgYyA8IG07ICsrYykKCQkJCXRtcFtjKm4gKyByXSA9IGFycltyKm0gKyBjXTsKCQl9CgkJbWVtY3B5KGFyciwgdG1wLCAoc2l6ZV90KShuICogbSkgKiBzaXplb2YoaW50KSk7CgkJc3dhcChuLCBtKTsKCQlkZWxldGVbXSB0bXA7Cgl9Cn0KCgovL9C/0LXRh9Cw0YLRjCDQvNCw0YLRgNC40YbRiwp2b2lkICBwcmludF9tYXQob3N0cmVhbSYgX28sIGNvbnN0IGludCogYXJyLCAKCQkJCWNvbnN0IGludCBuLCBjb25zdCBpbnQgbSl7Cglmb3IoaW50IGkgPSAwOyBpIDwgbjsgKytpKXsKCQlmb3IoaW50IGogPSAwOyBqIDwgbTsgKytqKQoJCQlfbyA8PCBhcnJbaSptICsgal0gPDwgJyAnOwoJCV9vIDw8IGVuZGw7Cgl9CglfbyA8PCBlbmRsOwp9Cg==