Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <ctime>
- #define BUG_1 0
- int sumArrVals(int* oneDimArr, const int size);
- int sumArrVals(int** twoDimArr, const int rows, const int cols);
- void FillArr(int** twoDimArr, const int rows, const int cols) {
- for (int i = 0; i < rows; i++) {
- for (int j = 0; j < cols; j++) {
- twoDimArr[i][j] = 1 + rand() % (cols*rows);
- }
- }
- for (int i = 0; i < rows; i++) {
- for (int j = 0; j < cols; j++) {
- for (int m = 0; m < rows; m++) {
- for (int l = 0; l < cols; l++) {
- if (j == l && i == m) {
- continue;
- }
- if (twoDimArr[i][j] == twoDimArr[m][l]) {
- twoDimArr[i][j] = 1 + rand() % (cols*rows);
- m = -1;
- break;
- }
- }
- }
- }
- }
- }
- void shawArr(int* oneDimArr, const int size) {
- for (int i = 0; i < size; i++) {
- std::cout << oneDimArr[i] << "\t";
- }
- #if BUG_1==1
- std::cout << "\nСумма " << size << " элементов массива равна " << sumArrVals(oneDimArr, size) << std::endl;
- #endif
- }
- void shawArr(int** twoDimArr, const int rows, const int cols) {
- for (int i = 0; i < rows; i++) {
- for (int j = 0; j < cols; j++) {
- std::cout << twoDimArr[i][j] << "\t";
- }
- std::cout << std::endl;
- }
- #if BUG_1==1
- std::cout << "Сумма элементов массива " << rows << " x " << cols << " равна " << sumArrVals(twoDimArr, rows, cols) << std::endl;
- #endif
- }
- void ArrTranspose(int**& twoDimArr, const int rows, const int cols) {
- int **transArr = new int*[cols];
- for (int i = 0; i < cols; i++) {
- transArr[i] = new int[rows];
- }
- for (int i = 0; i < cols; i++) {
- for (int j = 0; j < rows; j++) {
- transArr[i][j] = twoDimArr[j][i];
- }
- }
- for (int i = 0; i < rows; i++) {
- delete[] twoDimArr[i];
- }
- delete[]twoDimArr;
- twoDimArr = transArr;
- }
- void D2toD1(int** twoDimArr, int* oneDimArr, const int rows, const int cols) {
- int m = 0;
- for (int i = 0; i < rows; i++) {
- for (int j = 0; j < cols; j++) {
- while (true) {
- oneDimArr[m] = twoDimArr[i][j];
- m++;
- break;
- }
- }
- }
- }
- void swap(int &a, int &b) {
- int temp = a;
- a = b;
- b = temp;
- }
- int main() {
- srand(time(NULL));
- setlocale(LC_ALL, "ru");
- int rows, cols; char answer;
- std::cout << "Введите количество строк массива ";
- std::cin >> rows;
- std::cout << "Введите количество столбов массива ";
- std::cin >> cols;
- int *ArrD1 = new int[cols * rows];
- int **ArrD2 = new int*[rows];
- for (int i = 0; i < rows; i++) {
- ArrD2[i] = new int[cols];
- }
- FillArr(ArrD2, rows, cols);
- shawArr(ArrD2, rows, cols);
- while (true) {
- std::cout << "Транспонировать массив?(y/n) ";
- std::cin >> answer;
- if (answer != 'y' && answer != 'n') {
- std::cout << "Вы не ответили на вопрос" << std::endl;
- continue;
- }
- else if (answer == 'n') {
- break;
- }
- ArrTranspose(ArrD2, rows, cols);
- swap(rows, cols);
- shawArr(ArrD2, rows, cols);
- }
- while (true) {
- std::cout << "Перевести двумерный массив в одномерный?(y/n)";
- std::cin >> answer;
- if (answer != 'y' && answer != 'n') {
- std::cout << "Вы не ответили на вопрос" << std::endl;
- continue;
- }
- else if (answer == 'n') {
- break;
- }
- else if (answer == 'y') {
- D2toD1(ArrD2, ArrD1, rows, cols);
- shawArr(ArrD1, (rows*cols));
- break;
- }
- }
- for (int i = 0; i < rows; i++) {
- delete[] ArrD2[i];
- }
- delete[] ArrD2;
- delete[] ArrD1;
- ArrD2 = nullptr;
- ArrD1 = nullptr;
- }
- int sumArrVals(int* oneDimArr, const int size) {
- int val = 0;
- for (int i = 0; i < size; i++) {
- val = val + oneDimArr[i];
- }
- return val;
- }
- int sumArrVals(int** twoDimArr, const int rows, const int cols) {
- int val = 0;
- for (int i = 0; i < rows; i++) {
- for (int j = 0; j < cols; j++) {
- val = val + twoDimArr[i][j];
- }
- }
- return val;
- }
Advertisement
Add Comment
Please, Sign In to add comment