1 / 1 / 10
Регистрация: 23.12.2012
Сообщений: 19
1

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

23.12.2012, 19:07. Показов 474. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задание 1. Процедуры - подпрограммы.
Ввести матрицу А(4, 6). Найти минимальный элемент в каждой строке и записать эти элементы в виде одномерного массива. Используя процедуру, вывести на печать полученный вектор, уменьшив его элементы в 10 раз. Аналогично для матрицы В(5, 3).

Вот что имеется, но работает не совсем правильно...Проблема с минимальными элементами матрицы B.

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
Program Lab8_29; uses crt;
const n=4; m=6; k=5; l=3;
type ma=array [1..k,1..m] of real;
     m_mv=array [1..k] of real;
 
var a,b:ma; {Марицы}
    min_a,min_b,min_c:m_mv; {Минимальные элементы}
 
{---------- Генерация Матриц ----------}
Procedure Gm(var a:ma; k,m:integer);
          var i,j:integer;
          Begin
              for i:=1 to k do
              begin
                  for j:=1 to m do
                    A[i,j]:=random(100);
                    A[i,j]:=A[i,j]-5.;
                  end;
          end;
{------------      end     ------------}
 
{------------ Вывод Матриц ------------}
Procedure vm(a:ma; n,m:integer);
          var i,j:integer;
          Begin
              for i:=1 to n do
                  Begin
                     for j:=1 to m do
                     Write(A[i,j]:7:2);
                     Writeln;
                  end;
          Writeln;
          Writeln('-----------------------------------------------');
          end;
{------------      end     ------------}
 
{------------ Поиск минимальных элементов в строке -------------}
Procedure v_m(var min_a:m_mv; k,m:integer);
          var i,j:integer;
          min,d:real;
          Begin
              for i:=1 to k do
                 Begin
                 Min:=A[i,1];
                   for j:=1 to m do
                       if Min >= A[i,j] then
                                        Begin
                                        Min:=A[i,j];
                                        D:=Min/10;
                                        Min_a[i]:=D;
                                        end;
                 end;
          end;
{------------                  end                 -------------}
 
{------------ Вывод мин. элементов  ------------}
Procedure v_min(var vector:m_mv; k:integer);
          var i,j:integer;
          min,d:real;
          Begin
              for i:=1 to k do
                 Begin
                 Write(vector[i]:7:2);
                 end;
                 Writeln;
 
          end;
{------------           end         ------------}
 
Begin clrscr;
Randomize;
Writeln('-----------------------------------------------');
Writeln(' Для запуска программы нажмите клавишу "Enter" ');
Writeln('-----------------------------------------------');
Readln;
clrscr;
 
{-- Работа с Матрицей A  --}
Writeln('-----------------------------------------------');
Gm(A,N,M);
Writeln('  Матрица A:');
Vm(A,N,M);
V_m(Min_a,N,M);
Writeln('  Минимальные элементы строк матрицы А: ');
V_min(Min_a,N);
{--          end         --}
 
{-- Работа с Марицей B  --}
Writeln('-----------------------------------------------');
Gm(B,K,L);
Writeln('  Матрица B:');
Vm(B,K,L);
V_m(Min_b,K,L);
Writeln('  Минимальные элементы строк матрицы B: ');
V_min(Min_b,K);
{--          end         --}
Writeln('-----------------------------------------------');
Writeln('Для выхода из программы нажмите клавишу "Enter"');
Writeln('-----------------------------------------------');
Readln;
end.

Задание 2. Процедуры-функции
Вычислить углы между прямыми . Вычисление угла оформить в виде процедуры-функции. С помощью процедуры вывести на печать максимальный и минимальный угол.

Вот что имеется:
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
Program Lab8_29; uses crt;
const n=10;
type v_k=array [1..n] of real;
     v_b=array [1..n] of real;
     v_y=array [1..n] of real;
     v_f=array [1..n] of real;
 
var y:v_y;
    k:v_k;
    b:v_b;
    f:v_f;
 
{---------- Генерация векторов ----------}
Procedure vek_(var k:v_k; b:v_b; n:integer);
          var i:integer;
          Begin
{---------- Генерация K[i] ----------}
          Begin
              for i:=1 to n do
                  K[i]:=random(10);
                  K[i]:=K[i]-5;
                  { Вывод массива }
                  Begin
                       Writeln('------------------------------------------------------------------------');
                       Writeln('  Массив K[i]:');
                       for i:=1 to n do
                           Write(K[i]:7:2);
                           Writeln;
                           Writeln('------------------------------------------------------------------------');
                  end;
          end;
 
          Begin
{---------- Генерация B[i] ----------}
              for i:=1 to n do
                  B[i]:=random(10);
                  B[i]:=B[i]-5;
                  { Вывод массива }
                  Begin
                       Writeln('  Массив B[i]:');
                       for i:=1 to n do
                           Write(B[i]:7:2);
                           Writeln;
                           Writeln('------------------------------------------------------------------------');
 
                  end;
          end;
end;
{---------- Заполнение Y[i] ----------}
Procedure vek_y(var y:v_y; n:integer);
          var i:integer;
              x:real;
Begin
          Write('  Введите X: ');
          Readln(x);
              for i:=1 to n do
                 Y[i]:=(K[i]*X)+B[i];
                 Begin
                      Writeln('------------------------------------------------------------------------');
                      Writeln('  Массив Y[i]:');
                      for i:=1 to n do
                      Write(Y[i]:7:2);
                      Writeln;
                      Writeln('------------------------------------------------------------------------');
                 end;
          end;
 
{---------- Поиск максимального/минимального угла ----------}
Procedure v_fi(var f:v_f; n:integer);
          var i:integer;
              tg,j,min,max:real;
          Begin
          J:=1.3;
              { Расчет угла }
              for i:=1 to n do
              Begin
              Tg:=(Y[i]-J)/(1+(Y[i]*J));
              F[i]:=Sin(Tg)/Cos(Tg);
              end;
 
              { Поиск максимального/минимального угла }
              Begin
                 Min:=F[1];
                 Max:=F[1];
                    for i:=1 to n do
                        if F[i] < Min then
                                           Begin
                                           Min:=F[i];
                                           end
                                      else
                                           if F[i] > Max then
                                                              Begin
                                                              Max:=F[i];
                                                              end;
              end;
 
                 Begin
                      Writeln('  Массив F[i]:');
                      for i:=1 to n do
                      Write(F[i]:7:2);
                      Writeln;
                      Writeln('------------------------------------------------------------------------');
                      Writeln('  Минимальный угол между прямыми:  ', min:8:5);
                      Writeln('  Максимальный угол между прямыми: ', max:8:5);
                      Writeln('------------------------------------------------------------------------');
                 end;
                 Writeln;
                 Writeln;
          end;
 
Begin clrscr;
Randomize;
 
Writeln('------------------------------------------------------------------------');;
Writeln(' Для запуска программы нажмите клавишу "Enter" ');
Writeln('------------------------------------------------------------------------');
Readln;
clrscr;
{-- Генерация и вывод массивов --}
Vek_(K,B,N);
Vek_y(Y,N);
{---------- Нахождение и вывод минимального/максимального угла ----------}
V_fi(F,N);
Writeln('------------------------------------------------------------------------');
Writeln('  Для выхода из программы нажмите клавишу "Enter"');
Writeln('------------------------------------------------------------------------');
Readln;
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.12.2012, 19:07
Ответы с готовыми решениями:

Функции и процедуры. При помощи процедуры записать слова задом наперед
Дана строка 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.

0
23.12.2012, 19:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.12.2012, 19:07
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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