Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
10 / 10 / 0
Регистрация: 20.11.2012
Сообщений: 163
Записей в блоге: 1
1

Процедуры и функции

02.04.2013, 15:25. Показов 1528. Ответов 24
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
const n = …; m =…; {целые константы >1}
type матрица = array [1..n, 1..m] of real;

Описать процедуру Swap(A,B), меняющую местами максимальные элементы матриц A и B . (Считать, что в каждой матрице только один максимальный элемент ).


вот сама программа но она когда работает когда нет, помогите разобраться.


Delphi
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
procedure TForm1.Button1Click(Sender: TObject);
const
  n=3;
  m=3;
type
  matrix=array[1..n,1..m] of Extended;
 
  procedure swap(Sg1,Sg2 : TStringGrid);
  var
    A,B:matrix;
    MaxNum : Extended;
    i,j, Ia, Ja, Ib, Jb:Integer;
  begin
    //Переписываем содержимое таблиц в массивы.
    for i:=1 to n do
    for j:=1 to m do begin
      A[i,j] := strtofloat(Sg1.Cells[j - 1, i - 1]);
      B[i,j] := strtofloat(Sg2.Cells[j - 1, i - 1]);
    end;
    //Поиск координат первого наибольшего элемента в массиве А.
    MaxNum := A[1,1];
    for i:=1 to n do
    for j:=1 to m do
    if A[i,j] > MaxNum then begin
      MaxNum := A[i,j];
      Ia := i;
      Ja := j;
    end;
    //Поиск координат первого наибольшего элемента в массиве Б.
    MaxNum := B[1,1];
    for i:=1 to n do
    for j:=1 to m do
    if B[i,j] > MaxNum then begin
      MaxNum := B[i,j];
      Ib := i;
      Jb := j;
    end;
    //Меняем значения наибольших элементов в матрицах А и Б.
    MaxNum := A[Ia, Ja];
    A[Ia, Ja] := B[Ib, Jb];
    B[Ib, Jb] := MaxNum;
    //Переписываем значения из массивов в таблицы.
    for i:=1 to n do
    for j:=1 to m do begin
      Sg1.Cells[j - 1, i - 1] := FloatToStr(A[i,j]);
      Sg2.Cells[j - 1, i - 1] := FloatToStr(B[i,j]);
    end;
  end;
begin
  swap(StringGrid1, StringGrid2);
end;
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.04.2013, 15:25
Ответы с готовыми решениями:

Функции и процедуры. При помощи процедуры записать слова задом наперед
Дана строка S, состоящая из не менее 5 слов. При помощи процедуры записать слова задом наперед....

Задачник Абрамян. Процедуры и функции. Процедуры с числовыми параметрами
Описать процедуру RectPS(x1, y1, x2, y2, P, S), вычисляющую периметр P и площадь S прямоугольника...

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

Процедуры и функции: решить через процедуры S=a*x+b*y+c*z.
Пожалуста помогите решить через процедуры S=a*x+b*y+c*z.

24
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
14.04.2013, 00:12 21
Author24 — интернет-сервис помощи студентам
Я же делал, чтобы можно было изменять размерность через Edit. Не понравилось.
Сейчас в программе константы n и m нужно поставить нужные значения. Например:
Delphi
1
2
3
Const
  n = 5; //Это количество строк
  m = 4; //Это количество столбцов
Ну и размеры StringGrid-ов, соответственно, изменить. Свойства RowCount (количество строк) и ColCount (количество столбцов). Если нужно - растянуть их, чтобы все ячейки помещались.
1
10 / 10 / 0
Регистрация: 20.11.2012
Сообщений: 163
Записей в блоге: 1
14.04.2013, 00:25  [ТС] 22
Одиночка, просто там это очень сложно было сделано, я этого не смог понять
0
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
14.04.2013, 00:27 23
Ну теперь так как нужно?
0
10 / 10 / 0
Регистрация: 20.11.2012
Сообщений: 163
Записей в блоге: 1
14.04.2013, 00:28  [ТС] 24
Одиночка, получается чтоб работала мне все время нужно будет менять константы?
0
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
14.04.2013, 00:35 25
Ну, да.
У тебя в стартовом посте так описано. Ну, а как ты хочешь? Если менять размерность массива через Edit-ы - нужно использовать динамические массивы. Уже matrix = Array[1..n,1..m] of real не опишешь. Здесь могут использоваться только константы. Либо определять массивы с большим запасом, но использовать только часть до заданных n и m. И StringGrid-ы нужно задавать размерность программно при задании размерности массивов. Я уже так делал. Ты говоришь сложно.
1
14.04.2013, 00:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.04.2013, 00:35
Помогаю со студенческими работами здесь

Процедуры и функции. Процедуры с числовыми параметрами
Процедуры и функции. Процедуры с числовыми параметрами Всем привет, помогите пожалуйста сделать...

Процедуры и функции. Процедуры с числовыми параметрами
Описать процедуру RectPS (x1, y1, x2, y2, P, S), вычисляющую периметр P и площадь S прямоугольника...

Подпрограммы-процедуры и процедуры-функции
Мне надо вычислить приближенное значение интеграла с помощью подпрограммы-процедуры и...

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

Оформить вычисления значения интегральной функции в виде процедуры-функции
Оформить вычисления значения интегральной функции F (x), в виде процедуры-функции используя...

Hайти первое отрицательное значение функции (с использованием функции и процедуры)
Hайти первое отрицательное значение функции c=sin(2v). V принадлежит интервалу (a;b) и изменятся с...


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

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