Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
196 / 8 / 3
Регистрация: 30.04.2016
Сообщений: 733
1

Заполнить случайным образом двумерный массив размерностью N x N

17.12.2017, 11:58. Показов 2100. Ответов 3
Метки нет (Все метки)

Заполнить случайным образом двумерный массив
размерностью N x N. Поменять местами элементы
следующих столбцов:
1) 1-й столбец – n-й столбец
2) 2-й столбец – (n-1)-й столбец
3) 3-й столбец – (n-2)-й столбец и т. д.
Вывести оба массива на экран.
Был получен фрагмент программы - Вот он:
Pascal
1
2
3
4
5
6
7
8
 for i:= 1 to n do begin
   for j:= 1 to m do write(a[i,j]:3);
 write('  ':3);
   for j:= 1 to m div 2 do begin
  x:= a[i,j]; a[i,j]:= a[i, 1+m-j]; a[i, 1+m-j]:= x;
   end;
  for j:= 1 to m do write(a[i,j]:3);  writeln;
 end.
Вставил в свою программу. Не получилось.
Откорректировал её, удалив 1-ю, 3-ю строки и
добавив после 6-й строки строку:
for i:= 1 to n do begin
И вот что получилось:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
uses Crt;
const N = 6; M = 6:
var A: array [1..N, 1..M] of integer;
           I, j, X: integer;
begin
ClrScr;
writeln('                      ',' Массив:');
     writeln('        ','Введённый');
for i:= 1 to N do begin
   for j:= 1 to M do begin
     A[I, j]:= Random(80)20;
{Вывод матрицы на экран по строкам}
GoToXY(j * 3, 2 + I * 2);
     write(A[I, j]:3);
end;
     writeln;
  for J;= 1 to M div 2 do begin
     X:= A[I, j];
     A[I, j]:= A[I, 1 + m – j];
     A[I, 1 + m – j]:= X;
  end;
GoToXY(20, 2);
writeln('                 ','Изменённый:');
for i:= 1 to N do begin
    GoToXY(23, I * 2 + 2);
for j:= M downto 1 do
    write(A[I, j]:4);
   end;
      writeln;
  readln
end.
На выходе имеем:
Код
                        Массивы:
       Введённый:                    Изменённый:
-20 -18  48  -4   1  33        33   1  -4  48 -18 -20
  5  -8   9  14 -14  17        17 -14  14   9  -8   5 
-15  47 -16   3  53   9         9  53   3 -16  47 -15
 41   6  35  47  37   4         4  37  47  35   6  41
 -7   6  17  -1  46   2         2  46  -1  17   6  -7
 18  -9  49   2  41  58        18  -9  49   2  41  58
Почему то в последней строке перестановка чисел
не происходит. И при N = 8, M = 8 и при N = 4, M = 4.
Именно в последней строке не происходит перестановки.
Очень интересно – ПОЧЕМУ?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.12.2017, 11:58
Ответы с готовыми решениями:

Заполнить случайным образом двумерный массив размерностью n на n
Заполнить случайным образом двумерный массив размерностью n на n. Обнулить минимальные элементы...

Заполнить случайным образом двумерный массив размерностью n на n
Заполнить случайным образом двумерный массив размерностью n на n. Поменять местами...

Заполнить массив целых чисел случайным образом
Добрый день, прошу помочь решить эту сложную (для меня задачку). Спасибо за внимание к теме....

Заполнить массив из десяти элементов случайным образом
Помогите пожалуйста решить задачу) Заполнить массив из десяти элементов случайным образом:целыми...

3
196 / 8 / 3
Регистрация: 30.04.2016
Сообщений: 733
30.12.2017, 09:57  [ТС] 2
n на n. Обнулить минимальные элементы в каждой строке.
Вывести оба массива на экран.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
uses Crt;
const N = 3;  {Число строк}
         M = 4:  {Число столбцов}
var A: array [1..N, 1..M] of integer;
           i, j, mini, mi, mj: integer;
begin
ClrScr;
Randomize;
   for i:= 1 to N do
   for j:= 1 to M do
A[i, j]:= random(80)20;
{Вывод матрицы на экран по строкам}
   for i:= 1 to N do begin
     for j:= 1 to M do
    write(A[i, j]:3);
         writeln;
     end;
{Поиск min значения ассива и его индекса}
        mini:= 100;
        writeln;
   for i:= 1 to N do begin
     for j:= 1 to M do
if mini > A[i, j] then begin
   mini:= A[i, j];  mi:= I;  mj:= j;
    writeln(' Min эл-т: ', mini);
  for j:= 1 to M do
    end;  end;
       writeln;
    readln
end.
На выходе имеем:
При 1-м запуске При 2-м запуске
со строкой Randomize со строкой Randomize
выходят 3 строки min. выходят 2 строки min.
Pascal
1
2
3
4
5
6
  12   18  -11   37                          39   36   38   28
  7   46   42  -19                            3   10   31  -13
15   51   28   -8                           16   36   27   34
 
Min эл-т:   12                              Min эл-т:   39
Min эл-т:   7                                Min эл-т:   3
Min эл-т: -8

Pascal
1
2
3
4
При 1-м запуске          -20  -18   48   -4
без строки Randomize          1   33     5   -8
выходит 1 строка.                 9   14  -14   17
                                               Min эл-т:   -20
Это что за чудеса? Да и результата нет. В чём дело.
0
196 / 8 / 3
Регистрация: 30.04.2016
Сообщений: 733
03.01.2018, 11:34  [ТС] 3
Был получен фрагмент программы - Вот он:
Pascal
1
2
3
4
5
6
7
8
1. for i:= 1 to n do begin
2.   for j:= 1 to m do write(a[i,j]:3);
3. write('  ':3);
4.   for j:= 1 to m div 2 do begin
5.  x:= a[i,j]; a[i,j]:= a[i, 1+m-j]; a[i, 1+m-j]:= x;
6.   end;
7.  for j:= 1 to m do write(a[i,j]:3);  writeln;
8. end.
Вставил в свою программу. Не получилось.
Откорректировал её, удалив 1-ю, 3-ю строки и
добавив после 6-й строки строку:
Pascal
1
for i:= 1 to n do begin
И вот что получилось:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
uses Crt;
const N = 6; M = 6:
var A: array [1..N, 1..M] of integer;
           I, j, X: integer;
begin
ClrScr;
writeln('                      ',' Массив:');
     writeln('        ','Введённый');
for i:= 1 to N do begin
   for j:= 1 to M do begin
     A[I, j]:= Random(80)20;
{Вывод матрицы на экран по строкам}
GoToXY(j * 3, 2 + I * 2);
     write(A[I, j]:3);
end;
     writeln;
  for J;= 1 to M div 2 do begin
     X:= A[I, j];
     A[I, j]:= A[I, 1 + m – j];
     A[I, 1 + m – j]:= X;
  end;
GoToXY(20, 2);
writeln('                 ','Изменённый:');
for i:= 1 to N do begin
    GoToXY(23, I * 2 + 2);
for j:= M downto 1 do
    write(A[I, j]:4);
   end;
      writeln;
  readln
end.
На выходе имеем:
Массивы:
Pascal
1
2
3
4
5
6
7
     Введённый                               Изменённый:
-20  -18   48   -4     1    33          33    1   -4   48  -18  -20
   5    -8     9   14  -14   17          17  -14   14    9    -8     5 
-15   47  -16     3   53    9             9   53    3  -16   47  -15
 41     6    35   47   37    4             4   37   47   35    6   41
 -7      6   17    -1   46    2             2   46   -1   17    6    -7
 18   -9   49     2   41   58           18   -9   49     2   41   58
Почему то в последней строке перестановка чисел
не происходит. И при N = 8, M = 8 и при N = 4, M = 4.
Именно в последней строке не происходит перестановки.
Очень интересно – ПОЧЕМУ?
0
Почетный модератор
64089 / 47498 / 32734
Регистрация: 18.05.2008
Сообщений: 115,182
03.01.2018, 12:28 4
Pascal
1
2
3
4
5
6
7
for j:=1 to n div 2 do
for i:=1 to n do
 begin
  x:=a[i,j];
  a[i,j]:=a[i,n-j+1];
  a[i,n-j+1]:=x; 
 end;
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.01.2018, 12:28

Заполнить случайным образом одномерный массив из n элементов
Заполнить случайным образом одномерный массив из n элементов и определить минимальную сумму...

Заполнить порядковыми числами двумерный массив размерностью N x N
Заполнить порядковыми числами двумерный массив размер- ностью N x N. Поменять местами попарно...

Одномерный массив из 7 элементов заполнить случайным образом числами от 5 до 9
Помогите написать пожалуйста программы! №1. Одномерный массив из 7 элементов заполнить случайным...

Дан двумерный массив размером 8*7, заполненный случайным образом :
Самый простой способ - нажать Print Screen на клавиатуре и потом, открыв Paintbrush - скопировать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru