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

Составить библиотеку алгоритмов для преобразования произвольных числовых матриц

27.11.2017, 20:08. Показов 1269. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
const n=3;m=3;
type mas=array[1..n,1..m]of real;
 
procedure VvodMatrix(var a:mas);
var i,j:byte;
Begin
  for i:=1 to n do
  begin
    for j:=1 to m do
    begin
      writeln('Введите матрицу');
      readln(a[i,j]);
    end;
    writeln;
  end;
End;
 
procedure NaibolElem (a:mas; var iz,jz:integer);
var i,j:byte;
Begin
 iz:=1; 
 jz:=1;
  for i:=1 to n do
    for j:=1 to m do
      if a[i,j]>a[iz,jz] then
      begin
        iz:=i;
        jz:=j;
      end;
  writeln('Максимум=',a[iz,jz]);
End;
 
procedure Stolbci (a:mas; N1,N2:byte);
var i,j:integer;b:real;
Begin
for i:=1 to m do
 begin 
 writeln('Введите столбцы которые хотите поменять');
 readln(N1,N2);
  b:=a[i,N1];
  a[i,N1]:=a[i,N2];
  a[i,N2]:=b;
 end;
 writeln('Полученная матрица');
 for i:=1 to n do
 begin
  for j:=1 to m do 
  write(a[i,j]:4);
 end;
End;
 
procedure UdalenStolb (a:mas;L:byte);
var i,j:byte;
Begin
 repeat
  writeln('Номер столбца для удаления');
  readln(L);
 until L<=m;
 for i:=1 to n do
  for j:=L to m-1 do
   a[i,j]:=a[i,j+1];
   writeln('Матрица без ',L,' столбца');
   for i:=1 to n do
    begin
     for j:=1 to m-1 do
      begin
       write(a[i,j]:4);
      end;
    end;
End;
 
procedure UdalenStolbStrok (a:mas;K,L:byte);
var i,j:byte;
Begin
 writeln('Введите строку и столбец, который хотите удалить');
 readln(K,L);
 
for j:=1 to m do{удаление строки}
for i:=K to n-1 do
a[i,j]:=a[i+1,j];
 
 for i:=1 to n do {удаление столбца}
for j:=L to m-1 do
a[i,j]:=a[i,j+1];
 
writeln('После удаления стороки ',K,' и столбца ',L);
for i:=1 to n-1 do
   begin
     for j:=1 to m-1 do
     write(a[i,j]:5:1);
     writeln;
   end;
End;
 
 
 var exitprog:integer;U:integer;
 begin
 exitprog:=0;
 while (exitprog=0) do begin
 writeln('1. Ввести матрицу');
 writeln('2. Наибольший элемент матрицы');
 writeln('3. Поменять местами столбцы с номерами N1 и N2');
 writeln('4. Вычеркнуть L столбец');
 writeln('5. Вычеркнуть K строку и L столбец');
 writeln('0. Завершить программу');
 readln(U);
 case U of
 
 1:begin VvodMatrix(a) end;
 2:begin NaibolElem (a,iz,jz) end;
 3:begin Stolbci (a,N1,N2); end;
 4:begin UdalenStolb (a,L) end;
 5:begin UdalenStolbStrok (a,K,L) end;
 0:begin exitprog:=1 end;
 end; 
 end; 
 end.
нужно записать в модульном программировании

вот само задание:

Составить библиотеку алгоритмов для преобразования произвольных числовых матриц (тип REAL):
- определить наибольший (наименьший) элемент матрицы, Реализовать алгоритм задания для элементов, удовлетворяющих заданному условию. Условие задается булевской функцией в вызывающей программе.
- поменять местами столбцы с номерами N1 и N2,
- вычеркнуть L столбец,
- вычеркнуть K строку и L столбец.

Добавлено через 2 часа 32 минуты
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 LABA;
const n=3;m=3;
type mas=array[1..n,1..m]of real;
 var 
 exitprog,U,iz,jz,i,j:integer;
 a:mas;
 N1,N2,K,L:byte;
 begin
 for i:=1 to n do
  for j:=1 to m do
   a[i,j]:=0;
 exitprog:=0;
 while (exitprog=0) do begin
 writeln('1. Ввести матрицу');
 writeln('2. Наибольший элемент матрицы');
 writeln('3. Поменять местами столбцы с номерами N1 и N2');
 writeln('4. Вычеркнуть L столбец');
 writeln('5. Вычеркнуть K строку и L столбец');
 writeln('0. Завершить программу');
 readln(U);
 
 case U of
 1:begin VvodMatrix(a);VivodMatrix(a) end;
 2:begin NaibolElem (a,iz,jz) end;
 3:begin Stolbci (a,N1,N2); end;
 4:begin UdalenStolb (a,L) end;
 5:begin UdalenStolbStrok (a,K,L) end;
 0:begin exitprog:=1 end;
 end; 
 end; 
 end.
ругается на 23 строку: Неправильный тип параметров подпрограммы


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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
unit LABA;
 
interface
const n=3;m=3;
type mas=array[1..n,1..m]of real;
 var 
 exitprog,U,iz,jz:integer;
 a:mas;
 N1,N2,K,L:byte;
 
 procedure VvodMatrix(var a:mas);
 procedure VivodMatrix(a:mas);
 procedure NaibolElem (a:mas; var iz,jz:integer);
 procedure Stolbci (a:mas; N1,N2:byte);
 procedure UdalenStolb (a:mas;L:byte);
 procedure UdalenStolbStrok (a:mas;K,L:byte);
 
implementation 
 
procedure VvodMatrix(var a:mas);
var i,j:byte;
Begin
 writeln('Введите матрицу');
 for i:=1 to n do
    for j:=1 to m do
      read(a[i,j]);
End;
 
procedure VivodMatrix(a:mas);
var i,j:byte;
Begin
 writeln('Введенная матрица:');
 for i:=1 to n do
  begin
   for j:=1 to m do
   write(a[i,j]:5:1,' ');
   writeln;
  end;
End;
 
procedure NaibolElem (a:mas; var iz,jz:integer);
var i,j:byte;
Begin
 iz:=1; 
 jz:=1;
  for i:=1 to n do
    for j:=1 to m do
      if a[i,j]>a[iz,jz] then
      begin
        iz:=i;
        jz:=j;
      end;
  writeln('Наибольший элемент матрицы =',a[iz,jz]:5:1);
End;
 
procedure Stolbci (a:mas; N1,N2:byte);
var i,j:integer;b:real;
Begin
 writeln('Введите столбцы которые хотите поменять');
 readln(N1,N2);
 for i:=1 to m do
 begin 
  b:=a[i,N1];
  a[i,N1]:=a[i,N2];
  a[i,N2]:=b;
 end;
 writeln('Полученная матрица');
 for i:=1 to n do
 begin
  for j:=1 to m do 
  write(a[i,j]:5:1,' ');
  writeln;
 end;
End;
 
procedure UdalenStolb (a:mas;L:byte);
var i,j:byte;
Begin
 writeln('Введите столбец, который хотите удалить');
 readln(L);
for i:=1 to n do
for j:=L to m-1 do
a[i,j]:=a[i,j+1];
 
writeln('После удаления столбца ',L);
for i:=1 to n do
   begin
     for j:=1 to m-1 do
     write(a[i,j]:5:1,' ');
     writeln;
   end;
End;
 
procedure UdalenStolbStrok (a:mas;K,L:byte);
var i,j:byte;
Begin
 writeln('Введите строку и столбец, который хотите удалить');
 readln(K,L);
 for j:=1 to m do
  for i:=K to n-1 do
   a[i,j]:=a[i+1,j];
   for i:=1 to n do 
    for j:=L to m-1 do
     a[i,j]:=a[i,j+1];
     writeln('После удаления стороки ',K,' и столбца ',L);
     for i:=1 to n-1 do
      begin
       for j:=1 to m-1 do
       write(a[i,j]:5:1,' ');
       writeln;
      end;
End;
 
Begin
End.
почему программа не хочет работать?

Добавлено через 41 минуту
сам разобрался, спасибо
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.11.2017, 20:08
Ответы с готовыми решениями:

Составить библиотеку алгоритмов редактирования текстового документа
Помогите пожауйста написать программу!! Составить библиотеку алгоритмов редактирования текстового документа: -раздвинуть строку...

Для произвольных квадратных матриц A и В порядка n вычислить B2-A2
Для произвольных квадратных матриц A и В порядка n вычислить B^2-A^2

Для произвольных квадратных матриц A и В порядка n вычислить (А+Е)B
Для произвольных квадратных матриц A и В порядка n вычислить (А+Е)B

1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33398 / 21508 / 8236
Регистрация: 22.10.2011
Сообщений: 36,906
Записей в блоге: 12
27.11.2017, 21:26
Цитата Сообщение от Yajup Посмотреть сообщение
сам разобрался
Для тех, кто не сможет разобраться сам: тип mas, описанный в модуле, и тип mas, описанный в основной программе - не имеют между собой ничего общего, кроме кажущейся одинаковости для человека. Компилятор считает эти типы абсолютно разными, они несовместимы друг с другом по присваиванию и не эквивалентны, поэтому происходит конфликт: компилятор ждет параметра, имеющего тип, описанный в модуле, а программист дает ему параметр типа, описанного в основной программе.

Решение - удалить строку №3 (с описанием типа mas) в основной программе (а заодно и строку №2, потому что эти же константы уже определены в модуле). Тогда у компилятора не будет выбора, и он будет везде использовать один и тот же тип, который описан в юните Laba, конфликта не будет.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.11.2017, 21:26
Помогаю со студенческими работами здесь

Составить модуль, реализующий следующие алгоритмы для произвольных квадратных числовых матриц
Составить модуль, реализующий следующие алгоритмы для произвольных квадратных числовых матриц: проверить, является ли матрица...

Модуль для произвольных матриц
Составить модуль, реализующий следующие алгоритмы для произвольных квадратных числовых матриц: - проверить, является ли матрица...

Для произвольных квадратных матриц А и В порядка n вычислить
Для произвольных квадратных матриц А и В порядка n вычислить 2А-В^T.

Создание функций, которые производят вычисления для произвольных матриц
Создать функцию, которая для произвольной матрицы вычисляет: 1. a) минимум из максимальных элементов каждой строки; б)номер столбца,...

Составить блок схему алгоритма и программу для вычисления функции по формуле для произвольных исходных данных,
Помогите составить блок схему алгоритма и программу для вычисления функции по формуле для произвольных исходных данных, с двойной...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru