Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 25.02.2019
Сообщений: 11

Двумерные массивы и подпрограммы (добавления в код Pascal ABC)

21.04.2019, 05:56. Показов 610. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Размерности массивов следует задать именованными константами. Все необходимые данные должны передаваться подпрограммам в качестве параметров; все величины, используемые только внутри подпрограмм, должны быть описаны как локальные.ИСПОЛЬЗОВАНИЕ ГЛОБАЛЬНЫХ ПЕРЕМЕННЫХ В ПОДПРОГРАММАХ НЕ ДОПУСКАЕТСЯ. ВВОД РЕЗУЛЬТАТОВ РАБОТЫ ПОДПРОГРАММ ДОЛЖЕН ВЫПОЛНЯТЬСЯ В ГЛАВНОЙ ПРОГРАММЕ.
Само задание:
Дана целочисленная квадратная матрица. Определить:
1.Сумму элементов в тех строках, которые не содержат отрицательных элемен¬тов (оформить в виде функции).
2.Минимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы (оформить в виде процедуры).
P.S РАБОЧИЙ КОД У МЕНЯ ЕСТЬ, + НУЖНО СДЕЛАТЬ ТАК, ЧТОБЫ ПРОГРАММА РАБОТАЛА ЧЕРЕЗ МЕНЮ.
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
uses crt;
const nmax=20;
type mtr=array[1..nmax,1..nmax]of integer;
function Sum(a:mtr;n,k:integer):longint;
var s:longint;
    j:integer;
begin
s:=0;
for j:=1 to n do
s:=s+a[k,j];
Sum:=s;
end;
procedure Min(a:mtr;n:integer;var mn:integer);
var i,j,l,sm:integer;
begin
mn:=a[n,1];
for l:=1 to 2*n-1 do{количество диагоналей}
  begin
    sm:=0;
    if l<n then{если брать и главную, то if l<=n}
      begin
       for i:=n-l+1 to n do
       for j:=1 to l do
       if j=i-n+l then sm:=sm+a[i,j];
       writeln('Сумма ',l,'=',sm);
       if sm<mn then mn:=sm;
      end
    else if l>n then
      begin
       for i:=1 to 2*n-l do
       for j:=l-n+1 to n do
       if j=i+l-n then sm:=sm+a[i,j];
       writeln('Сумма ',l,'=',sm);
       if sm<mn then mn:=sm;
      end;
  end;
write('Минимальная сумма=',mn);
end;
var a:mtr;
    n,i,j,k,f,mn:integer;
begin
clrscr;
randomize;
repeat
write('Введите размерность матрицы до ',nmax,' n= ');
readln(n);
until n in [1..nmax];
Writeln('Matrica:');
for i:=1 to n do
   begin
     for j:=1 to n  do
       begin
        repeat
        a[i,j]:=random(10)-2;
        until a[i,j]<>0;
        write(a[i,j]:4);
       end;
     writeln;
   end;
f:=0;
for i:=1 to n do
 begin
  k:=0;
  for j:=1 to n do
  if a[i,j]<0 then k:=1;
  if k=0 then
   begin
    f:=1;
    writeln('Сумма в строке ',i,'=',Sum(a,n,i));
   end;
 end;
write('Нажмите Enter...');
readln;
Min(a,n,mn);
readln
end.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.04.2019, 05:56
Ответы с готовыми решениями:

Двумерные массивы и подпрограммы (добавления в код Pascal ABC)
Размерности массивов следует задать именованными константами. Все необходимые данные должны передаваться подпрограммам в качестве...

Перевести код Pascal ABC NET в Pascal ABC
Помогите, плиз Сделал на Pascal ABC NET, но нужно его открыть в обычном Pascal ABC. Не компилит этот код, помогите исправить. uses ...

двумерные массивы и подпрограммы
#include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;ctime&gt; #include &lt;cmath&gt; #include &lt;iomanip&gt; using namespace std; int...

1
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
21.04.2019, 10: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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
uses crt;
const nmax=10;   {при 20 х 20 не войдет на экран в процедуре Min}
type mtr=array[1..nmax,1..nmax]of integer;
{ввод матрицы}
procedure Vvod(var a:mtr;var n:integer;var b:boolean);
var i,j:integer;
begin
clrscr;
repeat
write('Введите размерность матрицы от 2 до ',nmax,' n= ');
readln(n);
until n in [2..nmax];
for i:=1 to n do
for j:=1 to n  do
a[i,j]:=-2+random(10);
b:=true; {матрица создана}
end;
{вывод матрицы}
procedure Vyvod(a:mtr;n:integer);
var i,j:integer;
begin
writeln('Матрица');
for i:=1 to n do
 begin
  for j:=1 to n do
  write(a[i,j]:3);
  writeln;
 end;
end;
{выход из процедур}
procedure Vyhod;
begin
writeln('Нажмите Enter для выхода в меню');
readln;
end;
{функция сумма в 1 строке}
function Sum(a:mtr;n,k:integer):longint;
var s:longint;
    j:integer;
begin
s:=0;
for j:=1 to n do
s:=s+a[k,j];
Sum:=s;
end;
{процедура определения сумм в нужных строках}
procedure Sum_str(a:mtr;n:integer;b:boolean);
var i,j,f,k:integer;
begin
clrscr;
if b=false then
 begin
  writeln('Матрица еще не создана, вернитесь к пункту 1');
  Vyhod;
  exit;
 end;
Vyvod(a,n);
writeln('Суммы в строках где нет отрицательных элеметов');
f:=0;
for i:=1 to n do
 begin
  k:=0;
  for j:=1 to n do
  if a[i,j]<0 then k:=1;
  if k=0 then
   begin
    f:=1;
    writeln('Сумма в строке ',i,'=',Sum(a,n,i));
   end;
 end;
if f=0 then writeln('Таких строк нет');
Vyhod;
end;
{процедура сумм и мин в диагоналях}
procedure Min(a:mtr;n:integer;var mn:integer;b:boolean);
var i,j,l,sm:integer;
begin
clrscr;
if b=false then
 begin
  writeln('Матрица еще не создана, вернитесь к пункту 1');
  Vyhod;
  exit;
 end;
writeln('Суммы в диагоналях, параллельных главной');
Vyvod(a,n);
mn:=a[n,1];
for l:=1 to 2*n-1 do{количество диагоналей}
  begin
    sm:=0;
    if l<n then{если брать и главную, то if l<=n}
      begin
       for i:=n-l+1 to n do
       for j:=1 to l do
       if j=i-n+l then sm:=sm+a[i,j];
       writeln('Сумма ',l,'=',sm);
       if sm<mn then mn:=sm;
      end
    else if l>n then
      begin
       for i:=1 to 2*n-l do
       for j:=l-n+1 to n do
       if j=i+l-n then sm:=sm+a[i,j];
       writeln('Сумма ',l,'=',sm);
       if sm<mn then mn:=sm;
      end;
  end;
writeln('Минимальная сумма=',mn);
Vyhod;
end;
var a:mtr;
    n,mn:integer;
    b:boolean;
    c:char;
begin
clrscr;
randomize;
repeat
clrscr;
writeln('Выберите действие');
writeln('1-Создать новую матрицу');
writeln('2-Суммы в строках где нет отрицательных');
writeln('3-Минимум из сумм диагоналей, параллельных главной');
writeln('Другое-выход из программы');
readln(c);
case c of
'1':begin
    Vvod(a,n,b);
    Vyvod(a,n);
    Vyhod;
    end;
'2':Sum_str(a,n,b);
 
'3':Min(a,n,mn,b);
else exit;
end;
until not(c in ['1'..'3']);
readln
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.04.2019, 10:23
Помогаю со студенческими работами здесь

Неправильный тип параметров подпрограммы - Pascal ABC
При компиляции выдает ошибку: &quot;Неправильный тип параметров подпрограммы&quot; Вот программа: var mas:array of char; i,j:integer; ...

Нужно перевести код из Turbo Pascal в Pascal ABC.NET
Доброго времени суток. На форуме находил похожие темы, но к сожалению так и не смог разобраться. Помогите пожалуйста перевести код из Turbo...

Нужно перевести код с Pascal ABC на Turbo Pascal - рисование работающей мельницы
Вот код, он должен рисовать работающею мельницу. uses graphABC,crt; type point=record x,y:integer; end; ...

Можно как-то переделать код из Turbo Pascal чтобы он работал в pascal abc.net?
Сделайте пожалуйста, я просто не вникаю uses Graph, Crt; var grDriver: integer; grMode: integer; ErrCode: integer; ...

Перевести в код Pascal ABC из кода Pascal Delphi
procedure TForm1.Button1Click(Sender: TObject); const n=8; var x:array of real; y,z:array of real; i,j:byte; begin ...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru