Array
-12 32 -28
-11 22 5
28 49 13
42 10 3
Maximal = 42
Minimal = 10
New Array
-12 32 -28
-11 22 5
28 49 13
10 42 3
В прямоугольной целочисленной матрице обменять местами максимальный по модулю и минимальный по модулю четные элементы.и что я мог упустить?
Код:
var
a:array [1..100,1..100] of integer;
i,j,v,g,max,min, buf:integer;
begin
randomize;
writeln('введите размерность массива: ');
writeln('v= ');readln(v);
writeln('g= ');readln(g);
writeln;
max:=0;
min:=100;
for i:=1 to v do
for j:=1 to g do
begin
a[i,j]:=random(100); {Заполняем массив}
if j<g then {рисуем его для наглядности эти 4 строчки можно удалить}
write(a[i,j]:2,'|')
else
writeln(a[i,j]:2,'|');
if a[i,j] > max then
max:=a[i,j]; {ищем макс эл}
if a[i,j] < min then
min:=a[i,j]; {ищем мин эл}
end;
buf:=min; min:=max; max:=buf;
for i:=1 to v do
begin
for j:=1 to g do
write(a[i,j]:6);
writeln;
end;
end
a:array [1..100,1..100] of integer;
i,j,v,g,max,min, buf:integer;
begin
randomize;
writeln('введите размерность массива: ');
writeln('v= ');readln(v);
writeln('g= ');readln(g);
writeln;
max:=0;
min:=100;
for i:=1 to v do
for j:=1 to g do
begin
a[i,j]:=random(100); {Заполняем массив}
if j<g then {рисуем его для наглядности эти 4 строчки можно удалить}
write(a[i,j]:2,'|')
else
writeln(a[i,j]:2,'|');
if a[i,j] > max then
max:=a[i,j]; {ищем макс эл}
if a[i,j] < min then
min:=a[i,j]; {ищем мин эл}
end;
buf:=min; min:=max; max:=buf;
for i:=1 to v do
begin
for j:=1 to g do
write(a[i,j]:6);
writeln;
end;
end
Должно быть как-то так:
Код:
var
a: array [1..100, 1..100] of integer;
i, j, v, g, buf: integer;
minI, minJ, maxI, maxJ: integer;
begin
randomize;
writeln('введите размерность массива: ');
writeln('v= '); readln(v);
writeln('g= '); readln(g);
writeln;
minI := 1;
minJ := 1;
maxI := 1;
maxJ := 1;
for i := 1 to v do
for j := 1 to g do begin
a[i, j] := random(100); {Заполняем массив}
if j < g then {рисуем его для наглядности эти 4 строчки можно удалить}
write(a[i,j]:2, '|')
else
writeln(a[i,j]:2, '|');
if a[i, j] > a[maxI, maxJ] then begin
maxI := i; {ищем макс эл}
maxJ := j;
end;
if a[i, j] < a[minI, minJ] then begin
minI := i; {ищем мин эл}
minJ := j;
end;
end;
buf := a[minI, minJ];
a[minI, minJ] := a[maxI, maxJ];
a[maxI, maxJ] := buf;
for i := 1 to v do begin
for j := 1 to g do
write(a[i, j]:6);
writeln;
end;
end.
a: array [1..100, 1..100] of integer;
i, j, v, g, buf: integer;
minI, minJ, maxI, maxJ: integer;
begin
randomize;
writeln('введите размерность массива: ');
writeln('v= '); readln(v);
writeln('g= '); readln(g);
writeln;
minI := 1;
minJ := 1;
maxI := 1;
maxJ := 1;
for i := 1 to v do
for j := 1 to g do begin
a[i, j] := random(100); {Заполняем массив}
if j < g then {рисуем его для наглядности эти 4 строчки можно удалить}
write(a[i,j]:2, '|')
else
writeln(a[i,j]:2, '|');
if a[i, j] > a[maxI, maxJ] then begin
maxI := i; {ищем макс эл}
maxJ := j;
end;
if a[i, j] < a[minI, minJ] then begin
minI := i; {ищем мин эл}
minJ := j;
end;
end;
buf := a[minI, minJ];
a[minI, minJ] := a[maxI, maxJ];
a[maxI, maxJ] := buf;
for i := 1 to v do begin
for j := 1 to g do
write(a[i, j]:6);
writeln;
end;
end.
Код:
#include <iostream>
#include <ctime>
using std::cout;
using std::endl;
using std::system;
int* Fill(int row, int column);
void Out(int* arr, int row, int column);
void Free(int* arr, int row);
void Solution(int* arr, int row, int column);
int main()
{
srand((unsigned int)time(0));
int row = 4;
int column = 3;
int* arr = Fill(row,column);
cout<<"Array"<<endl;
Out(arr,row,column);
Solution(arr,row,column);
cout<<endl<<"New Array"<<endl;
Out(arr,row,column);
Free(arr,row);
cout<<endl;
system("pause");
}
int* Fill(int row, int column)
{
int* arr = new int [row*column];
int v = 2;
for(int idx=0; idx < row*column; idx++)
{
arr[idx] = rand()%100-30;
}
return arr;
}
void Out(int* arr, int row, int column)
{
for(int idx=0; idx<row; idx++)
{
for(int jdx=0; jdx<column; jdx++)
{
cout<<arr[jdx + idx*(row-1)]<<"\t";
}
cout<<endl;
}
}
void Free(int* arr, int row)
{
delete[] arr;
}
void Solution(int* arr, int row, int column)
{
int imax = 0, imin=0;
for(int idx=0; idx < row*column; idx++)
{
if(arr[idx]%2==0)
{
if(abs(arr[idx]) > abs(arr[imax]))
imax = idx;
if(abs(arr[idx]) < abs(arr[imin]))
imin = idx;
}
}
cout<<"Maximal = "<<arr[imax]<<endl;
cout<<"Minimal = "<<arr[imin]<<endl;
int tmp = arr[imax];
arr[imax] = arr[imin];
arr[imin] = tmp;
}
#include <ctime>
using std::cout;
using std::endl;
using std::system;
int* Fill(int row, int column);
void Out(int* arr, int row, int column);
void Free(int* arr, int row);
void Solution(int* arr, int row, int column);
int main()
{
srand((unsigned int)time(0));
int row = 4;
int column = 3;
int* arr = Fill(row,column);
cout<<"Array"<<endl;
Out(arr,row,column);
Solution(arr,row,column);
cout<<endl<<"New Array"<<endl;
Out(arr,row,column);
Free(arr,row);
cout<<endl;
system("pause");
}
int* Fill(int row, int column)
{
int* arr = new int [row*column];
int v = 2;
for(int idx=0; idx < row*column; idx++)
{
arr[idx] = rand()%100-30;
}
return arr;
}
void Out(int* arr, int row, int column)
{
for(int idx=0; idx<row; idx++)
{
for(int jdx=0; jdx<column; jdx++)
{
cout<<arr[jdx + idx*(row-1)]<<"\t";
}
cout<<endl;
}
}
void Free(int* arr, int row)
{
delete[] arr;
}
void Solution(int* arr, int row, int column)
{
int imax = 0, imin=0;
for(int idx=0; idx < row*column; idx++)
{
if(arr[idx]%2==0)
{
if(abs(arr[idx]) > abs(arr[imax]))
imax = idx;
if(abs(arr[idx]) < abs(arr[imin]))
imin = idx;
}
}
cout<<"Maximal = "<<arr[imax]<<endl;
cout<<"Minimal = "<<arr[imin]<<endl;
int tmp = arr[imax];
arr[imax] = arr[imin];
arr[imin] = tmp;
}
Код: