Решение задач на двумерный массив(матрицы) в delphi7
1 2 3 … n
n-1 n-2 …
1 2 3 … n
n-1 n-2 …
Дан двумерный массив.
а) Поменять местами первую и третью строки.
б) Поменять местами второй и последний столбцы.
Буду очень благодарен.
Цитата: ZHak
НАрод помогите плизз решить задачку в делфи
Дан двумерный массив.
а) Поменять местами первую и третью строки.
б) Поменять местами второй и последний столбцы.
Буду очень благодарен.
Дан двумерный массив.
а) Поменять местами первую и третью строки.
б) Поменять местами второй и последний столбцы.
Буду очень благодарен.
Если надо делать все на начальном массиве, создаешь новый массив для каждого преобразования, записываешь элементы старого в новый, там делаешь что нужно, написано на си++, не помню ваш паскаль, но алгоритм такой же.
Код:
#include <iostream>
#include <ctime>
int** Massive(int row, int column);
void Out(int** arr, int row, int column);
void freeMemory(int** arr, int row);
void changeRow(int**arr, int row, int column);
void changeColumn(int**arr, int row, int column);
int main()
{
srand((unsigned)time(NULL));
int row = 4, column = 4;
int** arr = Massive(row, column);
std::cout<<"Massive:"<<std::endl;
Out(arr, row, column);
changeRow(arr,row,column);
changeColumn(arr,row,column);
freeMemory(arr,row);
std::system("pause");
return 0;
}
//заполнение массива рандомными цифрами от 0 до 9
int** Massive(int row, int column)
{
int ** arr = new int* [row];
for(int idx=0; idx<row; idx++)
{
arr[idx] = new int [column];
}
for(int idx=0; idx<row; idx++)
{
for(int jdx=0; jdx<column; jdx++)
{
arr[idx][jdx] = rand()%10;
}
}
return arr;
}
//вывод массива на дисплей
void Out(int** arr, int row, int column)
{
for(int idx=0; idx<row; idx++)
{
for(int jdx=0; jdx<column; jdx++)
{
std::cout<<arr[idx][jdx]<<" ";
}
std::cout<<std::endl;
}
}
//освобождаем память под массив
void freeMemory(int** arr, int row)
{
for(int idx=0; idx<row; idx++)
{
delete[] arr[idx];
}
delete[] arr;
}
//обмен 0 и 2 строки(отсчет от 0 до 3)
void changeRow(int**arr, int row, int column)
{
int tmp = 0;
for(int idx=0; idx<row; idx++)
{
if(idx == 0)
{
for(int jdx=0; jdx<column; jdx++)
{
tmp = arr[idx][jdx];
arr[idx][jdx] = arr[idx+2][jdx];
arr[idx+2][jdx] = tmp;
}
}
}
std::cout<<"Swap row 0 to 2:"<<std::endl;
Out(arr,row,column);
}
//обмен 1 и 3 столбца(отсчет от 0 до 3)
void changeColumn(int**arr, int row, int column)
{
int tmp = 0;
for(int jdx=0; jdx<column; jdx++)
{
if(jdx == 1)
{
for(int idx=0; idx<row; idx++)
{
tmp = arr[idx][jdx];
arr[idx][jdx] = arr[idx][jdx+2];
arr[idx][jdx+2] = tmp;
}
}
}
std::cout<<"Swap column 1 to 3:"<<std::endl;
Out(arr,row,column);
}
#include <ctime>
int** Massive(int row, int column);
void Out(int** arr, int row, int column);
void freeMemory(int** arr, int row);
void changeRow(int**arr, int row, int column);
void changeColumn(int**arr, int row, int column);
int main()
{
srand((unsigned)time(NULL));
int row = 4, column = 4;
int** arr = Massive(row, column);
std::cout<<"Massive:"<<std::endl;
Out(arr, row, column);
changeRow(arr,row,column);
changeColumn(arr,row,column);
freeMemory(arr,row);
std::system("pause");
return 0;
}
//заполнение массива рандомными цифрами от 0 до 9
int** Massive(int row, int column)
{
int ** arr = new int* [row];
for(int idx=0; idx<row; idx++)
{
arr[idx] = new int [column];
}
for(int idx=0; idx<row; idx++)
{
for(int jdx=0; jdx<column; jdx++)
{
arr[idx][jdx] = rand()%10;
}
}
return arr;
}
//вывод массива на дисплей
void Out(int** arr, int row, int column)
{
for(int idx=0; idx<row; idx++)
{
for(int jdx=0; jdx<column; jdx++)
{
std::cout<<arr[idx][jdx]<<" ";
}
std::cout<<std::endl;
}
}
//освобождаем память под массив
void freeMemory(int** arr, int row)
{
for(int idx=0; idx<row; idx++)
{
delete[] arr[idx];
}
delete[] arr;
}
//обмен 0 и 2 строки(отсчет от 0 до 3)
void changeRow(int**arr, int row, int column)
{
int tmp = 0;
for(int idx=0; idx<row; idx++)
{
if(idx == 0)
{
for(int jdx=0; jdx<column; jdx++)
{
tmp = arr[idx][jdx];
arr[idx][jdx] = arr[idx+2][jdx];
arr[idx+2][jdx] = tmp;
}
}
}
std::cout<<"Swap row 0 to 2:"<<std::endl;
Out(arr,row,column);
}
//обмен 1 и 3 столбца(отсчет от 0 до 3)
void changeColumn(int**arr, int row, int column)
{
int tmp = 0;
for(int jdx=0; jdx<column; jdx++)
{
if(jdx == 1)
{
for(int idx=0; idx<row; idx++)
{
tmp = arr[idx][jdx];
arr[idx][jdx] = arr[idx][jdx+2];
arr[idx][jdx+2] = tmp;
}
}
}
std::cout<<"Swap column 1 to 3:"<<std::endl;
Out(arr,row,column);
}