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

If else и т.п

21.09.2014, 20:23. Показов 979. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дано такое вот задание. Хочу использовать конструкцию if else, но там три условия - 1<x*b<10 ; 12<x*b<40; и в других случаях. Попытался сделать таким способом:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
if (условие) then
begin
действие
end
else if (условие) then
begin
действие
end
else
begin
действие
end;
Код компилится, но финальное значение постоянно обращается в ноль. Ничего понять не могу. Помогите, пожалуйста.
Изображения
 
0
Лучшие ответы (1)
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
21.09.2014, 20:36 2
Цитата Сообщение от EragonJKee Посмотреть сообщение
Код компилится
Так где он, этот код?
1
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
21.09.2014, 20:36 3
Delphi
1
2
3
if (x*b>1)and(x*b<10) then ........
else if (x*b>12)and(x*b<40) then ........
else .....
1
9 / 10 / 2
Регистрация: 19.01.2014
Сообщений: 83
21.09.2014, 20:53  [ТС] 4
Цитата Сообщение от FIL Посмотреть сообщение
Так где он, этот код?
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
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;
 
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    CheckBox1: TCheckBox;
    Memo1: TMemo;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var s,x,b,pr,y:extended;
begin
 
x:=StrToFloat(Edit1.Text);
b:=StrToFloat(Edit2.Text);
 
Memo1.Lines.Add('x='+FloatToStrF(x,fffixed,8,4));
Memo1.Lines.Add('b='+FloatToStrF(b,fffixed,8,4));
 
pr:=x*b;
 
if (pr > 1) and (pr < 10) then
begin
s := exp(x)+sin(b);
end
else if (pr > 12) and (pr < 40) then
begin
s := sqrt(abs(x+4*b));
end
else
begin
s := b*sqr(x);
end;
 
if CheckBox1.Checked then
Memo1.Lines.Add('s='+IntToStr(Round(y)))
else
Memo1.Lines.Add('s='+FloatToStrF(y,ffGeneral,8,2));
 
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
Memo1.Clear;
end;
 
end.
Добавлено через 6 минут
Цитата Сообщение от Puporev Посмотреть сообщение
Delphi
1
2
3
if (x*b>1)and(x*b<10) then ........
else if (x*b>12)and(x*b<40) then ........
else .....
Вот так сделал:

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
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;
 
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    CheckBox1: TCheckBox;
    Memo1: TMemo;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var s,x,b,pr,y:extended;
begin
 
x:=StrToFloat(Edit1.Text);
b:=StrToFloat(Edit2.Text);
 
Memo1.Lines.Add('x='+FloatToStrF(x,fffixed,8,4));
Memo1.Lines.Add('b='+FloatToStrF(b,fffixed,8,4));
 
pr:=x*b;
 
if (pr > 1) and (pr < 10) then
s := exp(x)+sin(b)
else if (pr > 12) and (pr < 40) then
s := sqrt(abs(x+4*b))
else
s := b*sqr(x);
 
if CheckBox1.Checked then
Memo1.Lines.Add('s='+IntToStr(Round(y)))
else
Memo1.Lines.Add('s='+FloatToStrF(y,ffGeneral,8,2));
 
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
Memo1.Clear;
end;
 
end.
Все равно 0.
0
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
21.09.2014, 20:55 5
Лучший ответ Сообщение было отмечено EragonJKee как решение

Решение

Так ты результат вычислений записываешь в s, а в Мемо выводишь y))
1
9 / 10 / 2
Регистрация: 19.01.2014
Сообщений: 83
21.09.2014, 20:57  [ТС] 6
Цитата Сообщение от FIL Посмотреть сообщение
Так ты результат вычислений записываешь в s, а в Мемо выводишь y))
Вот это fail Спасибо большое)
0
21.09.2014, 20:57
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru