Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 12.02.2020
Сообщений: 5

Получить новую матрицу, переставляя блоки исходной

12.02.2020, 10:17. Показов 895. Ответов 9

Студворк — интернет-сервис помощи студентам
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
const
 n = 3;
type
 Telement = byte;
 Tvector = array of Telement;
 Tmatrix_part = 1..4; // нумеруются 1 2
           //       3 4
var
 matrix: array of Tvector;
 i,j:byte;
 
procedure Exchange(const a,b:Tmatrix_part; var i:integer ;var j:integer);
var tmp:Telement;
  x1,y1,x2,y2:byte; // координаты обмениваемых кусков
begin
 case a of
  1 : begin x1:=0; y1:=0; end;
  2 : begin x1:=n; y1:=0; end;
  3 : begin x1:=0; y1:=n; end;
  4 : begin x1:=n; y1:=n; end;
 end;
 
 case b of
  1 : begin x2:=0; y2:=0; end;
  2 : begin x2:=n; y2:=0; end;
  3 : begin x2:=0; y2:=n; end;
  4 : begin x2:=n; y2:=n; end;
 end;
 
 for j:=0 to n-1 do
 for i:=0 to n-1 do
  begin
    tmp:=matrix[x1+i,y1+j];
    matrix[x1+i,y1+j]:=matrix[x2+i,y2+j];
    matrix[x2+i,y2+j]:=tmp;
  end;
end;
 
begin
 randomize;
 SetLength(matrix,2*n,2*n);
 for j:=0 to 2*n-1 do
 begin
 for i:=0 to 2*n-1 do
  begin
   matrix[i,j]:=random(10);
   write(matrix[i,j]:3);
  end;
  writeln;
 end;
 writeln;
 
 //вариант a)
 Exchange(1,2);
 Exchange(3,4);
 
 //выводим результат
 for j:=0 to 2*n-1 do
 begin
 for i:=0 to 2*n-1 do
   write(matrix[i,j]:3);
  writeln;
 end;
 writeln;
 
 //откатываем назад
 Exchange(1,2);
 Exchange(3,4);
 
 //вариант б)
 Exchange(1,4);
 Exchange(2,3);
 
  //выводим результат
 for j:=0 to 2*n-1 do
 begin
 for i:=0 to 2*n-1 do
   write(matrix[i,j]:3);
  writeln;
 end;
 writeln;
 
 readln;
end.
Миниатюры
Получить новую матрицу, переставляя блоки исходной  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.02.2020, 10:17
Ответы с готовыми решениями:

Получить новую матрицу путем деления всех элементов исходной на ее наибольший по модулю элемент
Дана действительная матрица размера nxm в которой не все элементы равны нулю. Получить новую матрицу путем деления всех элементов данной...

Массив: Получить новую матрицу путем деления всех элементов исходной матрицы на ее наибольший по модулю элемент.
Задан двумерный массив А. Получить новую матрицу путем деления всех элементов исходной матрицы на ее наибольший по модулю элемент.

Получить новую последовательность, исключив из исходной отрицательные элементы
Дана последовательность n натуральных чисел, среди которых имеются положительные и отрицательные. Получить новую последовательность,...

9
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
12.02.2020, 10:46
всё неправильно.

Тебя не смущает, например, что в процедуре ты описал 4 (четыре) параметра?
Цитата Сообщение от Mikhail12ru Посмотреть сообщение
Pascal
1
procedure Exchange(const a,b:Tmatrix_part; var i:integer ;var j:integer);
а при вызове указываешь два параметра:
Цитата Сообщение от Mikhail12ru Посмотреть сообщение
Pascal
1
Exchange(1,2);
формально это можно ( и нужно) исправить так:

Pascal
1
2
3
4
5
6
7
procedure Exchange(const a,b:Tmatrix_part);
var
   i,j : integer;
   tmp:Telement;
   x1,y1,x2,y2:byte; // координаты обмениваемых кусков
begin
...
но не уверен, что у тебя там ещё косяки не заложены...
0
0 / 0 / 0
Регистрация: 12.02.2020
Сообщений: 5
12.02.2020, 19:20  [ТС]
Исправил, все равно не работает..
0
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
13.02.2020, 11:32
Цитата Сообщение от Mikhail12ru Посмотреть сообщение
Исправил, все равно не работает..
не "не работает", а не "компилируется"

ошибка в строке 41
Цитата Сообщение от Mikhail12ru Посмотреть сообщение
Pascal
1
SetLength(matrix,2*n,2*n);
замени эту строчку на две:
Pascal
1
2
 SetLength(matrix,2*n);
 for var ii:=Low(matrix) to High(matrix) do SetLength(matrix[ii],2*n);
0
0 / 0 / 0
Регистрация: 12.02.2020
Сообщений: 5
13.02.2020, 21:01  [ТС]
скомпилировалось, но не совсем понятно как работает.... и удовлетряет ли поставленной задаче, на скрине кхм...
0
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
14.02.2020, 10:52
Цитата Сообщение от Mikhail12ru Посмотреть сообщение
скомпилировалось, но не совсем понятно как работает....
т.е. ты написал код, которые "не понятно как работает" ?! Поздравляю, не все так умеют!

Цитата Сообщение от Mikhail12ru Посмотреть сообщение
удовлетряет ли поставленной задаче, на скрине кхм...
на мой взгляд, удовлетворяет.
0
0 / 0 / 0
Регистрация: 12.02.2020
Сообщений: 5
14.02.2020, 20:54  [ТС]
под , буквой а, должна быть замена крайних блоков, а разворот блоков, по часовой стрелке, не могу понять, как оптимизировать код, помогите. так то работает, но в идеале должна быть запись другая...
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
const
 n = 1;
type
 Telement = byte;
 Tvector = array of Telement;
 Tmatrix_part = 1..4; // нумеруются 1 2
           //       3 4
var
 matrix: array of Tvector;
 i,j:byte;
 
procedure Exchange(const a,b:Tmatrix_part);
var
   i,j : integer;
   tmp:Telement;
   x1,y1,x2,y2:byte; // координаты обмениваемых кусков
begin
 case a of
  1 : begin x1:=0; y1:=0; end;
  2 : begin x1:=n; y1:=0; end;
  3 : begin x1:=0; y1:=n; end;
  4 : begin x1:=n; y1:=n; end;
 end;
 
 case b of
  1 : begin x2:=0; y2:=0; end;
  2 : begin x2:=n; y2:=0; end;
  3 : begin x2:=0; y2:=n; end;
  4 : begin x2:=n; y2:=n; end;
 end;
 
 
 for i:=0 to n-1 do
 for j:=0 to n-1 do
  begin
    tmp:=matrix[x1+i,y1+j];
    matrix[x1+i,y1+j]:=matrix[x2+j,y2+i];
    matrix[x2+j,y2+i]:=tmp;
  end;
end;
 
begin
 randomize;
 SetLength(matrix,2*n);
 for var ii:=Low(matrix) to High(matrix) do SetLength(matrix[ii],2*n);
 
 for i:=0 to 2*n-1 do
 begin
 
 for j:=0 to 2*n-1 do
  begin
   matrix[i,j]:=random(10);
   write(matrix[i,j]:3);
  end;
  writeln;
 end;
 writeln;
 
 
 Exchange(3,1);
 Exchange(4,2);
 
 Exchange(1,2);
 Exchange(3,4);
 
 //вариант а)
 Exchange(3,1);
 Exchange(4,2);
 
  //выводим результат
 for j:=0 to 2*n-1 do
 begin
 for i:=0 to 2*n-1 do
   write(matrix[i,j]:3);
  writeln;
 end;
 writeln;
  
end.
0
0 / 0 / 0
Регистрация: 12.02.2020
Сообщений: 5
15.02.2020, 09:06  [ТС]
спасибо нашел ошибку в case
0
0 / 0 / 0
Регистрация: 28.02.2021
Сообщений: 15
30.09.2022, 20:35
Ребят, можете эту задачку на котлине написать?
0
Модератор
10448 / 5739 / 3407
Регистрация: 17.08.2012
Сообщений: 17,459
03.10.2022, 09:18
amanovtimur, создайте новую тему в разделе Kotlin.

В новой теме, если желаете, можете привести ссылку на эту тему.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.10.2022, 09:18
Помогаю со студенческими работами здесь

Получить новую строку путем копирования из исходной 5 символов
Написать программу в которой вводится одна строка и выполняются следующие действия 1) получить новую строку путем копирования из исходной...

Получить новую матрицу, переставляя блоки исходной
Помогите, пожалуйста, решить задачу: дана действительная кв.матрица порядка 2n, Получить новую матрицу, переставляя ее блоки размера...

Получить новую матрицу, переставляя блоки исходной
решите задачки!! пожалуйста

Получить новую матрицу, переставляя блоки исходной матрицы
Ребят, есть задача: Дана действительная квадратная матрица порядка 2n. Получить новую матрицу, переставляя ее блоки размера nxn. ...

Получить из исходной новую матрицу, переставляя ее блоки размером n×n
Разработать программу решения задачи. Дана действительная квадратная матрица порядка 2n. Получить новую матрицу, переставляя ее блоки...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru