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

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

07.01.2018, 11:48. Показов 1420. Ответов 5
Метки нет (Все метки)

Заполнить случайным образом двумерный массив размерностью
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.
На выходе имеем:
Pascal
1
2
3
4
5
6
7
8
9
При 1-м запуске                     При 2-м запуске
со строкой Randomize            со строкой Randomize
выходят 3 строки min.            выходят 2 строки min.
  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
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.01.2018, 11:48
Ответы с готовыми решениями:

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

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

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

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

5
Почетный модератор
64087 / 47496 / 32734
Регистрация: 18.05.2008
Сообщений: 115,182
07.01.2018, 13:53 2
Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

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
32
33
34
uses crt;
const n=3;
      m=4;
var a:array [1..n,1..m] of integer;
    i,j,mj:integer;
begin
clrscr;
randomize;
writeln('Исходная матрица');
for i:=1 to n do
 begin
  for j:=1 to m do
   begin
    a[i,j]:=-20+random(80);
    write(a[i,j]:4);
   end;
  writeln;
 end;
for i:=1 to n do
 begin
  mj:=1;
  for j:=2 to m do
  if a[i,j]<a[i,mj] then mj:=j;
  a[i,mj]:=0;
 end;
writeln('Замена минимальных элементов в строках на 0');
for i:=1 to n do
 begin
  for j:=1 to m do
  write(a[i,j]:4);
  writeln;
 end;
readln
end.
0
196 / 8 / 3
Регистрация: 30.04.2016
Сообщений: 733
11.02.2018, 16:32  [ТС] 3
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
 uses Crt;
const  N = 5;  {Число строк}
          M = 4;  {Число столбцов}
var A: array [1..N, 1..M] of integer;
begin
ClrScr;
    for i:= 1 to N do begin
    for j:= 1 to M do begin
      A[i, j]:= Random(50)5;
        write(A[i, j]:4);
    end;
        writeln;
    end;
{Подсчёт кол. чётных эл-в в каждой строке}
writeln(' Кол. чётных эл-в в каждой строке:');
   for i:= 1 to N do begin
      for j:= 1 to M do
   if (A[i, j] mod 2 = 0) then begin
       inc(k);
    end;
writeln(' В строке ' , i , ' равно ' , k);
    end;
   readln
end.
На выходе имеем:
Pascal
1
2
3
4
5
6
7
8
9
10
11
-5   -4   38     5
 8   28   10     3
13   16   -1   18
 -2   37   -3     9
40   13   33   11
Кол. чётных эл-в в каждой строке:
В строке 1 равно  2
В строке 2 равно  5
В строке 3 равно  7
В строке 4 равно  8 
В строке 5 равно  9
Почему то количество в последующей строке выходит с учётом количества предыдущей строки.
А что не так?
0
Почетный модератор
64087 / 47496 / 32734
Регистрация: 18.05.2008
Сообщений: 115,182
11.02.2018, 16:40 4
Pascal
1
2
3
4
5
6
7
8
writeln(' Кол. чётных эл-в в каждой строке:');
for i:= 1 to N do
 begin
  k:=0;
  for j:= 1 to M do
  if (A[i, j] mod 2 = 0) then inc(k);
  writeln(' В строке ' , i , ' равно ' , k);
 end;
0
196 / 8 / 3
Регистрация: 30.04.2016
Сообщений: 733
12.08.2018, 09:22  [ТС] 5
Заполнить случайным образом двумерный массив n x 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
uses Crt;
const N = 5;  M = 4;
Var a: array [1..N, 1..M] of Integer;
            i, j: Integer;
   for i:= 1 to N do begin
   for j:= 1 to M do begin
     a[i, j]:=  Random(50)5;
       Write(a[i, j]:4);
   end;  WriteLn;  end;
{Обнуление чётных и нечётных эл-в}
WriteLn(' Обнуление чётных эл-тов: ');
   for i:= 1 to N do begin
     for j:= 1 to M do begin
   if a[i, j] mod 2 = 0 then  a[i, j]:= 0;
      Write('   ' , a[i, j]:3);
        end;  WriteLn;  end;
WriteLn(‘ Обнуление нечётных эл-в:);
    for i:= 1 to N do begin
      for j:= 1 to M do begin
    if a[i,j] mod 2 <> 0 then a[i,j]:= 0;
        Write(‘ ‘,a[i,j]:3);
        end;  WriteLn;  end;
  ReadLn
end.
На выходе имеем:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
-5   -4   38    8
 8   28   10    3
     13  16    -1  18
 -2   37   -3    9
      40  13   33   11
   Обнуление чётных эл-тов:
      -5    0     0     5 
 0    0     0     3
13   0    -1    0
 0   37   -3    9
 0   13   33   11
Обнуление нечётных эл-ов:
 0    0     0     0 
 0    0     0     0
 0    0     0     0
 0    0     0     0
 0    0     0     0
Нечётные элементы не сработали. А почему? Вроде бы всё правильно.

Ранее был дан ответ на это Обращение в таком виде:
Pascal
1
2
If ((a[i,j] mod 2 = 0) and (i mod 2 = 0)) or ((a[i,j] mod 2 <> 0)
                       and (i mod 2 <> 0)) then a[i,j]:= 0;
Вставил это выражение вместо двух блоков, но ничего не получилось.
Поэтому обращаюсь повтороно. Что делать?
0
Почетный модератор
64087 / 47496 / 32734
Регистрация: 18.05.2008
Сообщений: 115,182
12.08.2018, 09:39 6
А Вы сравните как здесь
Pascal
1
2
3
If ((a[i,j] mod 2 = 0) and (i mod 2 = 0))//четные строки и четные элементы
 or ((a[i,j] mod 2 <> 0) and (i mod 2 <> 0)) /нечетные строки и нечетные элементы
then a[i,j]:= 0;
и что написано у Вас.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.08.2018, 09:39

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

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

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

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


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

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

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