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

Создание массивов в Процедуры и Функции

15.06.2017, 14:17. Показов 760. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написать подпрограмму нахождения элементов двумерного массива целых чисел размера 6х4 в промежутке -10;9 , вычислить произведение этих элементов, в качестве входного параметра подпрограммы должен быть двумерный массив, а выходным параметром - произведение заданных элементов. Составить программу, которая определяет и заполняет три различных массива случайными числами, вызывает данную подпрограмму для этих массивов и находит максимальное число таких элементов. Подпрограмма кроме выше сказанного должна выводить на экран линейный массив, найденные элементы, их сумму и количество.


Есть вот такая задача. Для такого новичка как я, это совсем не понятно. Но я пытался сделать эту задачу.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
var A:array [1..6,1..4] of integer; 
i,j:integer;
x,y,z:A;
p,k:real;
procedure WTF (e:A; var k,p:real);
begin
p:=0;
k:=0;
for i:=1 to 6 do begin
for j:=1 to 4 do begin
A[i,j]:=random(102)-21;
write(a[i,j]:3);
if ((a[i,j]>=-10) and (a[i,j]<=9)) the begin
p:=p*A[i,j];
k:=k+1;
end;
end;
writeln
end;
writeln ('Произведение заданных чисел',p);
writeln ('Количестве элементов в промежутке от -10 до 9',k);
begin
И вот тут я застрял "Составить программу, которая" не знаю, правильно ли я "до" этого выражения все сделал, но начиная с "Составить" я вообще перестал понимать задачу, и чего хочет задача.

Хэлп ми с решением
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.06.2017, 14:17
Ответы с готовыми решениями:

Создать базу данных с(Создание функции БД, Создание процедуры БД, Создание тригера БД)
В задание для курсовой работы по БД входят вот такие пункты: 1.2 Создание функции БД. 1.3 Создание процедуры БД 1.4 Создание...

Процедуры и функции обработки массивов
Здравствуйте, помогите ,пожалуйста, с написанием программы, а точнее, подскажите куда вставить строки: Writeln; Writeln('Массив сумм...

Процедуры и функции. Вычислить суммы положительных элементов массивов
решите пожалуйста, при помощи процедур и функций 1.Вычислить суммы положительных элементов массивов X(10), Y(10), Z(15) , используя...

1
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,059
16.06.2017, 08:09
kkeyylot, ну и вы пробовали запустить свою программу?
Она же не запустится!

В задании не сказано, что индексация массива должна быть именно 1…6,1…4.
Поэтому сделаем так:
Pascal
1
2
3
4
begin
  var a := MatrRandomInteger(6,4,-10,9);
  WriteLn('Создан массив:'); a.Println;
end.
Теперь добавим подпрограмму, которая будет искать значения из интервала и перемножать их.
При этом нужно учесть, что в самом невероятном случае может получиться значение 10 в -24 степени!
Т.е. результат такой функции должен быть такого типа, который сможет вместить в себя данное значение…
Из стандартных числовых типов такого нет. Int64 может вместить в себя только 10 в 19. UInt64 не рассматривается (хотя он тоже не подходит), т.к. нам нужно значение, которое может быть отрицательным.
Поэтому придётся использовать BigInteger :

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function findIn(a : array [,] of Integer; fromInterval, toIntegrval : Integer) : BigInteger;
begin
  WriteLn('массив:'); a.Println;
  Result := 1;
  for var Row := 0 to a.GetLength(0)-1 do
    for var Col := 0 to a.GetLength(1)-1 do
      if (a[Row,Col] >= fromInterval) and (a[Row, Col] <= toIntegrval) then
        Result *= a[Row, Col];
end;
 
begin
  var a := MatrRandomInteger(6,4,-20,+20);
  WriteLnFormat('Произведение элементов массива промежутка {0};{1} равно {2}', -10, 9, findIn(a, -10, 9));
end.
Далее нам нужно будет где-то хранить ещё эти самые значения (которые попадают в интервал), чтобы с ними ещё манипулировать.
Введём глобальный динамический массив Vector и будем его заполнять во время работы подпрограммы:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var Vector : array of Integer;
 
function findIn(a : array [,] of Integer; fromInterval, toIntegrval : Integer) : BigInteger;
begin
  var L := 0;
  WriteLn('массив:'); a.Println;
  Result := 1;
  for var Row := 0 to a.GetLength(0)-1 do
    for var Col := 0 to a.GetLength(1)-1 do
      if (a[Row,Col] >= fromInterval) and (a[Row, Col] <= toIntegrval) then
        begin
          Result *= a[Row, Col];
          SetLength(Vector, L+1); Vector[L] := a[Row, Col]; L += 1;
        end;
end;
 
begin
  var a := MatrRandomInteger(6,4,-20,+20);
  WriteLnFormat('Произведение элементов массива промежутка {0};{1} равно {2}', -10, 9, findIn(a, -10, 9));
  Write('Вот эти числа: '); Vector.Println; WriteLn('Их сумма = ', Vector.Sum, ', а количество ', Vector.Count, '.');
end.
Осталось только в основной программе добавить ещё два массива и поиск максимального по количеству:
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
var Vector : array of Integer;
 
function findIn(a : array [,] of Integer; fromInterval, toIntegrval : Integer) : BigInteger;
begin
  var L := 0;
  WriteLn(' массив:'); a.Println;
  Result := 1;
  for var Row := 0 to a.GetLength(0)-1 do
    for var Col := 0 to a.GetLength(1)-1 do
      if (a[Row,Col] >= fromInterval) and (a[Row, Col] <= toIntegrval) then
        begin
          Result *= a[Row, Col];
          SetLength(Vector, L+1); Vector[L] := a[Row, Col]; L += 1;
        end;
end;
 
begin
  var a := MatrRandomInteger(6,4,-20,+20); Write('A');
  WriteLnFormat('Произведение элементов массива промежутка {0};{1} равно {2}', -10, 9, findIn(a, -10, 9));
  Write('Вот эти числа: '); Vector.Println; WriteLn('Их сумма = ', Vector.Sum, ', а количество ', Vector.Count, '.');
  var (maxArray, maxCount) := ('A', Vector.Count);
 
  var b := MatrRandomInteger(6,4,-20,+20); Write('B');
  WriteLnFormat('Произведение элементов массива промежутка {0};{1} равно {2}', -10, 9, findIn(b, -10, 9));
  Write('Вот эти числа: '); Vector.Println; WriteLn('Их сумма = ', Vector.Sum, ', а количество ', Vector.Count, '.');
  if Vector.Count > maxCount then (maxArray, maxCount) := ('B', Vector.Count);
 
  var c := MatrRandomInteger(6,4,-20,+20); Write('C');
  WriteLnFormat('Произведение элементов массива промежутка {0};{1} равно {2}', -10, 9, findIn(c, -10, 9));
  Write('Вот эти числа: '); Vector.Println; WriteLn('Их сумма = ', Vector.Sum, ', а количество ', Vector.Count, '.');
  if Vector.Count > maxCount then (maxArray, maxCount) := ('C', Vector.Count);
  
  WriteLnFormat('Максимальное количество элементов в массиве {0} : {1}.', maxArray, maxCount);
end.
Всё!


P.S. Т.к. в условии не сказано о границах случайных чисел, я заполнял массивы -20…+20.
Это годится для отладки, но не очень хорошо с точки зрения „универсальности программы“.
Лучше их вынести в константы!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.06.2017, 08:09
Помогаю со студенческими работами здесь

Процедуры и функции: найти сумму минимальных отрицательных элементов массивов
Помогите пожалуйста написать код на Си) очень нужна ваша помощь! Буду благодарен) Даны массивы X(8), Z(10), W(15),элементы которых...

Процедуры, функции. Найти среднее арифметическое из максимальных значений элементов трех одномерных массивов
Найти среднее арифметическое из максимальных значений элементов трех одномерных массивов разной длины.

Возврат массивов или векторов из функции с++ для хранимой процедуры SQL- резервирование и освобождение памяти
Мне необходимо из хранимой процедуры в базе MS SQL Server вызывать функцию опроса устройства возвращающую набор параметров. Данная функция...

Создание процедуры...или функции.
Здравствуйте. Пишу простейшую программу распознования букв на изображении и один кусок постоянно повторяется. Можно ли его выделить в...

Создание процедуры и функции в отдельных unit
При перемещении процедуры и функции в разные unit выходят ошибки: Incompatible types (Эту ошибку выдает на строчке...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД 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 . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru