Форум программистов, компьютерный форум, киберфорум
Lazarus
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 16.02.2018
Сообщений: 18
1

Переделать программу с использованием подпрограмм: генерирование, обработка и вывод массива

16.02.2018, 20:59. Показов 1029. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужно переделать программу создав
подпрограммы: генерирование массива, обработка массива, вывод массива.
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
unit Unit1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
  Grids, Spin;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    SpinEdit1: TSpinEdit;
    StringGrid1: TStringGrid;
    procedure Button1Click(Sender: TObject);
    procedure Label1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
procedure TForm1.Label1Click(Sender: TObject);
begin
 
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var a:array[1..10,1..10] of real;
  n,i,j:integer;
  sum:real;
begin
  sum:=0;
  n:=SpinEdit1.value;
  stringgrid1.rowcount:=n;
  stringgrid1.colcount:=n;
  if (n<2) or (n>10) then showmessage('Error')
  else
  begin
  randomize;
  for i:=1 to n  do
    for j:=1 to n do
    begin
     a[i,j]:=random(100);
     stringgrid1.cells[j-1,i-1]:=floattostr(a[i,j]);
     if (i=n) then
      sum:=(sum+a[i,j]);
     if (j=n) then
      sum:=(sum+a[i,j]);
     sum:=sum-a[n,n]
    end;
  label1.caption:=floattostr(sum);
  end;
  end;
end.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.02.2018, 20:59
Ответы с готовыми решениями:

Нужно переделать, под программу с использованием механизма подпрограмм.
Даны натуральные числа A1,…An. Найти максимальный элемент массива. Нужно переделать, под...

подпрограммы.обработка одномерного массива с использованием подпрограмм
Дан массив действительных чисел А1...,А16. получить min(A1*A9,A2*A10,....,A8*A16). Но работать не с...

Обработка массивов с использованием подпрограмм
Прошу помощи! Ввести одномерные массивы X1n1, X2n2 и X3n3 и определить в каждом из них среднее...

Обработка массивов с использованием подпрограмм
Друзья, ниже текст задачи и мой вариант решения, но без вывода массива X(3); можно, конечно, просто...

2
Модератор
9611 / 6218 / 2423
Регистрация: 21.01.2014
Сообщений: 26,521
Записей в блоге: 3
17.02.2018, 08:50 2
Цитата Сообщение от Kearful Посмотреть сообщение
генерирование массива
У вас нет "генерации массива", у Вас есть только его заполнение. Генерация подразумевает объявление, задание размерности, выделение памяти под указанную размерность, заполнение; т.е. работу с динамическим массивом.
Цитата Сообщение от Kearful Посмотреть сообщение
обработка массива
А что с ним надо сделать? Что-то не пойму из Вашего кода...
0
Почетный модератор
64304 / 47599 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
17.02.2018, 10:28 3
Лучший ответ Сообщение было отмечено 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
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
var
  Form1: TForm1;
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
type mas=array[1..10,1..10] of real;
procedure massiv(var a:mas;n:byte);
var i,j:byte;
begin
  for i:=1 to n do
  for j:=1 to n do
  a[i,j]:=5*random;
end;
procedure print(st:TstringGrid;a:mas;n:byte);
var i,j:byte;
begin
  with st do
   begin
     fixedrows:=0;
     fixedcols:=0;
     rowcount:=n;
     colcount:=n;
     defaultcolwidth:=35;
   end;
 for i:=1 to n do
 for j:=1 to n do
 st.Cells[j-1,i-1]:=formatfloat('0.00',a[i,j]);
end;
procedure summa(lb:TLabel;a:mas;n:byte);
var i:byte;
    sum:real;
begin
sum:=0;
for i:=1 to n  do
sum:=sum+a[n,i]+a[i,n];
sum:=sum-a[n,n];
lb.Caption:='Сумма последних строки и столбца='+formatfloat('0.00',sum);
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var a:mas;
    n:byte;
    k:integer;
begin
val(Edit1.Text,n,k);
if(k<>0)or not(n in [1..10]) then
 begin
   ShowMessage('Неверно введен размер массива');
   Edit1.Clear;
   Edit1.SetFocus;
   exit;
 end;
massiv(a,n);
print(StringGrid1,a,n);
summa(Label1,a,n);
end;
1
17.02.2018, 10:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.02.2018, 10:28
Помогаю со студенческими работами здесь

Обработка массивов с использованием подпрограмм
Составить программу для решения задач, с обязательным использованием подпрограммы для ввода...

Обработка массивов с использованием подпрограмм
Из каждого элемента матрицы А(3,3) вычесть произведение ее нечетных отрицательных эллементов

Переделать программу с использованием динамического массива
Помогите сделать данную программу с динамическими массивами. unit Unit1; interface uses ...

Обработка различных массивов с использованием подпрограмм
Подсчитать число точек, находящихся внутри круга радиусом R = 2 и с центром в начале координат,...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru