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

Сделать так, чтобы выводилось 3 знака после запятой и численное значение В было нормальным

12.04.2016, 00:35. Просмотров 317. Ответов 1
Метки нет (Все метки)

Программа выводит в Мемо1 вот это:
Численное значение определенного интеграла В= 3.5E+003
A[ 2]=
X Y
1.000000E+000 -9.048390E-002
4.000000E+000 -7.128836E-002
7.000000E+000 -3.214845E-002
1.000000E+001 1.261199E-003
A[ 3]=
X Y
1.000000E+000 -6.032260E-002
4.000000E+000 -4.752557E-002
7.000000E+000 -2.143230E-002
1.000000E+001 8.407993E-004
A[ 4]=

Можете сделать так, чтобы выводилось 3 знака после запятой и там где численное значение В было нормальным.
Вот текст процедур:

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
procedure TForm1.Button1Click(Sender: TObject);
type
  tmx = array[1..100] of extended;
  tmy = array[1..100, 1..100] of extended;
var
  sa, sx, sy: string;
  Ma, Mx: tmx;
  My: tmy;
  An, ak, da, xn, Dx, b, c, d, eps, int: extended;
  k, n, n1, er, km: integer;
  function Pwr(x: real): real;//Возведение в степень (1/3)
  begin
    if x = 0 then Pwr := 0
    else
    if x > 0 then pwr := exp(ln(x) * (1 / 3)) else
      pwr := -exp(ln(abs(x)) * (1 / 3));
  end;
  
  procedure tab(b, an, ak, da, xn, dx: real; n: integer; var Mx, Ma: tmx; var My: tmy);
  var
    i, j: integer;
    x, y, a: real;
  begin
    j := 1;
    a := an;
    while a <= ak do
    begin
      X := xn;
      i := 1;
      while i <= n do
      begin
        y := (cos(b) * sin(sqrt(x))) / (a * sqrt(x + 5 * pwr(3 * x)));
        mx[i] := x;
        my[j, i] := y;
        i := i + 1;
        x := x + dx
      end;
      ma[j] := a;
      a := a + da;
      j := j + 1;
    end;
  end;
  
  function f(x: real): real;
  begin
    f := x * x * x * exp(2 * x);
  end;
  
  procedure integral(c, d, eps: real; var n1, er: integer; km: integer; var int: real);
  var
    y1, yn, h, del, int1, x: real;
    i, j: integer;
  begin
    y1 := f(c);
    yn := f(d);
    int1 := 0;
    n1 := 2;
    er := 1;
    j := 1;
    while j <= km do
    begin
      h := (d - c) / n1;
      x := c + h;
      int := 0;
      for I := 1 to n1 - 1 do
      begin
        int := int + f(x);
        x := x + h;
      end;
      int := h * (y1 / 2 + yn / 2 + int);
      del := abs(int1 - int);
      if del < eps then
      begin
        j := km;
        er := er - 1;
      end
      else
      begin
        int1 := int; n1 := n1 * 2;
      end;
      j := j + 1;
    end;
  end;
  
  procedure rezout(var mx: tmx; var ma: tmx; var my: tmy; k, n: integer);
  var
    i, j: integer;
    sa, sx, sy, kk: string;
  begin
    for j := 1 to k do
    begin
      str(j:14, kk);
      memo1.lines.add(' A[' + kk + ']=' + sa);
      memo1.lines.add('X           Y');
      for i := 1 to n do
      begin
        str(Mx[i]:14, sx);
        str(My[j, i]:14, sy);
        memo1.lines.add(sx + '     ' + sy);
      end;
      
      
      
      
      
    end;
  end;
 
begin
  an := strtofloat(edit1.text);
  ak := strtofloat(edit2.text);
  da := strtofloat(edit3.text);
  xn := strtofloat(edit4.text);
  dx := strtofloat(edit5.text);
  n := strtoint(edit6.text);
  c := strtofloat(edit7.text);
  d := strtofloat(edit8.text);
  eps := strtofloat(edit9.text);
  km := strtoint(edit10.text);
  integral(c, d, eps, n1, er, km, int);
  if er = 1 then
  begin
    str(km:14, sa);
    memo1.lines.add('Интеграл не найден за ' + sa + 'итераций');
    exit
  end;
  b := int;
  str(Int:14, sy);
  memo1.lines.add('Численное значение определенного интеграла В=' + sy);
  Tab(B, An, ak, da, xn, dx, n, mx, ma, my);
  k := trunc((ak - an) / da) + 1;
  rezout(mx, ma, my, k, n);
end;
 
 
end.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.04.2016, 00:35
Ответы с готовыми решениями:

Как сделать так, чтобы когда на 3-ёх " Label " Было одинаковое значение, то на 4-ом появлялся текст ?
На фотографии то что я хочу сделать я уже сделал крестики нолики при нажатии на...

Сделать так, чтобы после ввода текста в Edit вместо нажатия кнопки "Да" можно было нажимать клавишу "Enter"
Раньше при помощи нехитрого кода (if (key = #13) then ...) у меня получалось...

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

Как сделать так, чтобы компонент RadioGroup нельзя было изменять?
как сделать так чтобы компонент RadioGroup нельзя было изменять?

Как сделать так, чтобы определенный edit нельзя было редактировать ?
На форме имеется едит в котором автоматически просчитывается цена по формуле,...

1
Puporev
Модератор
55429 / 42552 / 29405
Регистрация: 18.05.2008
Сообщений: 100,668
12.04.2016, 12:11 2
Цитата Сообщение от ivan1212 Посмотреть сообщение
чтобы выводилось 3 знака после запятой
Delphi
1
2
3
memo1.lines.add('X           Y');
for i := 1 to n do
memo1.lines.add(format('%.3f',[Mx[i]]) + '     ' +format('%.3f',[My[j,i]]));
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.04.2016, 12:11

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

Как сделать так, чтобы нельзя было вводить не буквы и не цифры в delphi ?
как сделать так что бы нельзя было вводить не буквы и не цифры в delphi ?

Сделать так, чтобы при выборе одного checkbox'a нельзя было выбрать другой
Помогите сделать так, что бы при выборе одного checkbox'a нельзя было выбрать...


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

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

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