Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 13.07.2010
Сообщений: 17
1

в чём ошибка здесь? не пойму (((

16.09.2010, 23:54. Показов 834. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label3: TLabel;
    Button1: TButton;
    Button2: TButton;
    Lebel4: TLabel;
    Lebel2: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
 // нажатие кнопки Вычислить
 
   procedure TForm1.Button1Click(Sender: TObject);
 
var
 
dist : integer; // дистанция, метров
 
t: real; // время как дробное число
 
min : integer; // время, минуты
 
sek : integer; // время, секунды
 
v: real; // скорость
 
begin
 
// получить исходные данные из полей ввода
 
dist := StrToint(Edit1.Text); t := StrToFloat(Edit2.Text);
 
// предварительные преобразования
 
min := Trunc(t) ; // кол-во минут — это целая часть числа t
 
sek := Trunc(t*100) mod 100;
 
// кол-во секунд — это дробная часть
 
// числа t
 
// вычисление
 
v := (dist/1000) / ((min*60 + sek)/3600);
 
// вывод результата
 
lebel4.Caption := 'Дистанция:'+ Edit1.Text+
 
' м' + #13 + 'Время' + IntToStr(min)+
 
' мин ' + IntToStr(sek) + ' сек ' + #13 +
 
'Скорость: ' + FloatToStrF(v,ffFixed,4,2) + ' км/час'
 
 // нажатие кнопки Завершить
 
procedure  TForm1.Button2Click(Sender: TObject);
 
begin
 
Form1.Close; // закрыть главное окно программы
 
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
 
 begin
 
// Key — символ, соответствующий нажатой клавише.
 
// Если символ недопустимый, то процедура заменяет его
 
// на символ с кодом 0. В результате этого символ в поле
 
// редактирования не появляется, и у пользователя создается
 
// впечатление, что программа не реагирует на нажатие некоторых
 
// клавиш.
 
case Key of
 
'0'..'9': ; // цифра
 
#8 : ; // клавиша <Back Space>
 
#13 : Edit2.SetFocus ; // клавиша <Enter>
 
// остальные символы — запрещены
 
else Key :=Chr(0); // символ не отображать
 
end;
 
end;
 
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.09.2010, 23:54
Ответы с готовыми решениями:

В чем здесь ошибка?
Взял пример из книги 3d game programming with DirectX11, немного переделал, т.к. #include...

В чём здесь ошибка?
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; int main() { char str1; char str2; int i,g;...

В чём здесь ошибка?
В чём здесь ошибка? #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;string.h&gt; using...

В чем здесь ошибка ?
&lt;?php header(&quot;Content-Type: text/plain; charset=utf-8&quot;); $lab=array(); $n=50; $waves=array();...

4
Йошь-мыслитель
126 / 120 / 26
Регистрация: 22.02.2009
Сообщений: 706
Записей в блоге: 5
17.09.2010, 03:48 2
А в чём ошибка выражается?
0
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
17.09.2010, 10:53 3
Ошибка здесь:
Delphi
1
sek := Trunc(t*100) mod 100;
Trunc() возвращает целую часть аргумента, но это не значит, что эта функция возвращает данные целого типа. Т. е. Trunc() возвращает вещественное число без дробной части. Поэтому:
Trunc(t*100) mod 100 - это попытка применить операцию взятия остатка от целочисленного деления. Но целочисленное деление не разрешено для вещественных операндов.
Поэтому писать надо так:
Delphi
1
sek := Round(Trunc(t*100)) mod 100;
1
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
17.09.2010, 11:05 4
Все дело в типах, если написать так
Delphi
1
2
3
4
5
6
7
8
procedure TForm1.Button1Click(Sender: TObject);
var t:real;
    sec:integer;
begin
 t:=12345.456;
 sec:=trunc(t*100) mod 100;
 Edit1.Text:=inttostr(sec);
end;
то round не нужно.
2
0 / 0 / 0
Регистрация: 13.07.2010
Сообщений: 17
17.09.2010, 17:29  [ТС] 5
спасиба... разобрался...
просто я забыл после процедуры end; поставить =)))

Mawrat: если произошла ошибка, по хорошему, надо публиковать её текст - чтобы люди не гадали.
0
17.09.2010, 17:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.09.2010, 17:29
Помогаю со студенческими работами здесь

В чём здесь ошибка?
Решаю такую задачу: напишите программу которая с помощью tkinter заполняет экран треугольниками...

В чем здесь ошибка?
.ORG0H; AJMP BEGIN ; переход на начало программы .ORG 30H; ...

В чем здесь ошибка?
Я на сайте изучение программирование на Java там есть онлайн IDE. Нажимаю кнопку Run и пишет...

В чем здесь ошибка?
class Nastya { public static void main(String args) throws java.io.IOException { char...


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

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