Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 22.05.2012
Сообщений: 7
1

Комментарии

08.06.2012, 18:39. Просмотров 452. Ответов 0
Метки нет (Все метки)


Приветствую. Нужны более подробные комментарии к коду программы, или если есть возможность - упростить код. Задачи из курсача, все работает, но не все понятно.. Буду премного благодарен!
1) Найти наименьшее значение функции
y=(sin(x))/(1+x)
и значение аргумента, при котором оно получено, если x изменяется от 0 до 10 с шагом 0.1.Для найденного x подсчитать сумму членов ряда:
Z=1+x+□(x^2/2!)+⋯+□(x^10/10!+⋯)
С точностью ε. Построить график y(x).

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
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
var
  Form3: TForm3;
  a,b,h,x,miny,minx,eps,z:Double;
  k:Integer;
implementation
 
uses Unit1, Unit2;
 
{$R *.dfm}
 //функция возвращающая значение y(x)
 function y(x:double):double;
 begin
    y:=Sin(x)/(1+x);
 end;
 
procedure TForm3.Exit3Click(Sender: TObject);
begin
Application.Terminate;
end;
 
procedure TForm3.BackClick(Sender: TObject);
begin
Form3.Hide;
Form1.Show
end;
 
//функция расчёта факториала
function factorial(n: integer): integer;
begin
if n > 1
then factorial := n * factorial(n-1) // функция вызывает сама себя
else factorial:= 1;  // факториал 1 равен 1
end;
 
procedure TForm3.V2Click(Sender: TObject);
var st:string;
    i:Integer;
begin
eps:=strtofloat(InputBox('ВВод значений','Введите точность eps',''));
a:=0;   //лев.гран отрезка
b:=10;  //прав. гран. отрезка
h:=0.1;
lbl1.caption:='Границы отрезка ['+Floattostr(SimpleRoundTo(a,-6))+','+Floattostr(SimpleRoundTo(b,-6))+']';
x:=a;
graph.Visible:=True;
 
miny:=1e6;
strngrd1.rowcount:=102;
strngrd1.Cells[0,0]:='x';
strngrd1.Cells[1,0]:='y';
  i:=1;
 while x<=b do
 begin
   //ищем мин значение ф-ции и аргумента
  if y(x)<minY then begin
  MinY:=y(x);
  MinX:=x;
  end;
  strngrd1.Cells[0,i]:=FloatToStr(SimpleRoundTo(x,-6));
  strngrd1.Cells[1,i]:=floattostr(SimpleRoundTo(Y(x),-6));
  lnseries1.AddXY(x,y(x),st,clBlack);
  x:=x+h;
  i:=i+1;
  end;
lbl2.Caption:='Минимальное значение Y(x)='+Floattostr(SimpleRoundTo(MinY,-6))+' при X='+Floattostr(SimpleRoundTo(MinX,-6))+'.';
k:=2; //т.к. первые 2 члена суммы 1 и Х
z:=0;
z:=1+minx;
while (Math.Power(minx,k)/factorial(k))>eps do
begin
 
z:=z+Math.Power(minx,k)/factorial(k);  //рассчит-ем Z
k:=k+1;
lbl3.Caption:='Z='+Floattostr(SimpleRoundTo(z,-10));
end;
end;
 
 
procedure TForm3.ClearClick(Sender: TObject);
var i,j:Integer;
begin
 lnSeries1.Clear;
 lbl1.Caption:='';
 lbl2.Caption:='';
 lbl3.Caption:='';
 for i:=0 to 1 do
   for j:=0 to 102 do
    Form3.strngrd1.Cells[i,j]:='';
end;
 
end.
2) Дана целочисленная прямоугольная матрица.
а) определить количество столбцов, не содержащих ни одного нулевого элемента (оформить в виде функции).
б) расположить строки матрицы по возрастанию суммы положительных элементов строк (оформить в виде процедуры).

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
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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
var
  Form2: TForm2;
  a:string;
  f:textFile;
  b:mas;
 
implementation
 
uses Unit1, Unit3;
{$R *.dfm}
 
 
  procedure TForm2.BackClick(Sender: TObject);
begin
Form2.Hide;
Form1.Show
end;
 
procedure TForm2.Exit2Click(Sender: TObject);
begin
Application.Terminate;
end;
 
procedure TForm2.clearClick(Sender: TObject);
var i,j:Integer;
begin
  for i:=0 to n do
   for j:=0 to nn do
   begin
    Form2.StringGrid1.Cells[i,j]:='';
    b[i,j]:=0;
   end;
    lbl1.Caption:='';
 
end;
//ф-ция ввода массива из файла
procedure vvod_mas(var z:mas);
var i,j:Integer;
 begin
 AssignFile(f,a);
 Reset(f);
 for i:=1 to n do
  for j:=1 to nn do
  read(f,z[i,j]);
  CloseFile(f);
 end;
 
 procedure SaveToFile(str:string);//ф-ция сохранения в файл
var
 FileDir:String;
begin
 FileDir:='c:\output.txt';
AssignFile(f,FileDir);
if not FileExists(FileDir) then
 begin
  Rewrite(f);
  CloseFile(f);
 end;
Append(f);
Writeln(f,str);
Flush(f);
CloseFile(f);
end;
 
procedure TForm2.OpenClick(Sender: TObject);
var i,j:integer;
    s:string[10];
begin
If opendialog1.execute then a:=OpenDialog1.FileName
 else
 begin
 ShowMessage('Имя файла не введено');
 exit
 end;
 
vvod_mas(b);
with StringGrid1 do
begin
ColCount:=nn;
RowCount:=n;
 For i:=1 to n do
  For j:=1 to nn do
   Begin
    Str(b[i,j]:10,s);
   StringGrid1.Cells[j-1,i-1]:=' '+s    //выводим массив в таблицу
end;
end;
end;
 
function zero(b:mas):Double; //ф-ция подсчёта столбцов не содерж. нули
var i,j,ze:Integer;
label 1;
begin
  ze:=0;            //кол-во столбцов с нулями
     j:=1;
     while j<=nn do
     begin
      for i:=1 to n do
        if b[i,j]=0 then begin
          ze:=ze+1;
          goto 1;
        end;
        1:
        j:=j+1;
     end;
     result:=nn-ze;
end;
 
procedure TForm2.A1Click(Sender: TObject);
var res:double;
begin
res:=zero(b);
lbl1.Caption:='Количество столбцов не содержащих нули = '+FloatToStr(res);
DeleteFile('c:\output.txt');
SaveToFile(lbl1.Caption);
   end;
 
 procedure sort(b:mas);        //ф-ция сортировки массива по строкам
 var i,j,l:Integer;min:Real;b2:mas2;row:string;
 begin
 for i:=1 to n do
  begin
  b2[i]:=0;            //массив сумм положит.эл-тов по строкам
  for j:=1 to nn do
    if (b[i,j]>0) then b2[i]:=b2[i]+b[i,j];
  end;
 
   l:=-1;
 while l<=2 do
  begin
    min:=1e6;
  for i:=1 to n do
    if b2[i]<min then
     begin
     min:=b2[i];
     k:=i;
     end;
     l:=l+1;
   for j:=1 to nn do
    Form2.stringgrid1.cells[j-1,l]:=FloatToStr(b[k,j]);
    b2[k]:=10000000;           //чтобы исключить из определения минимальн эл-та, очень большое значение
  end;
  for i:=1 to n do
    begin
    row:='';
    for j:=1 to nn do
      begin
      b[i,j]:=StrToInt(Form2.StringGrid1.Cells[j-1,i-1]);
      row:=row+inttostr(b[i,j])+' ';
      end;
    savetofile(row);
    end;
    end;
 
procedure TForm2.A2Click(Sender: TObject);
begin
 sort(b);
  end;
 
 
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.06.2012, 18:39
Ответы с готовыми решениями:

Комментарии
Есть шифр TEA помогите прокомментируете его,что где просисходит? unit Unit1; interface uses...

Комментарии
Помогите пожалуйста добавить коментарии к программам. 1 код: unit Unit1; interface uses ...

Комментарии
Прокомментируйте этот код,плиз Const m=6;// строки n=7;//столбцы typemtr=array of integer;...

Комментарии
Помогите описать программу, откомментировать каждую строчку. Программа 1: unit Unit2; ...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.06.2012, 18:39

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Комментарии в Delphi
Доброго времени суток уважаемые программисты! На форме русский текст отображается, а комментарии...

делфи комментарии
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,...

Комментарии в программе
Человек создал батник который копирует некие файлы с компа к себе в директорию. Так вот его палит...

Комментарии к программе
Необходимо написать комментарии к т.н. Paint. Заранее спасибо. unit Unit1; interface uses...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.