Работа с целыми числами
v1, v2, v3, vsr: integer;
begin
v1 := StrToInt(Edit1.Text);
v2 := StrToInt(Edit2.Text);
v3 := StrToInt(Edit3.Text);
//Считаем среднее v
vsr := (v1 + v2 + v3)/3;
end;
Выдаёт ошибку:
Incompatible types: 'Integer' and 'Exteded'
Подскажите как правильео посчитать V среднее?
P.S. Если можно дайте рабочий код, сам разберусь когда будет свободное время, спасибо за помощь!
v1, v2, v3 : integer;
vsr : double;
begin
v1 := StrToInt(Edit1.Text);
v2 := StrToInt(Edit2.Text);
v3 := StrToInt(Edit3.Text);
//Считаем среднее v
vsr := (v1 + v2 + v3)/3;
end;
v1, v2, v3 : integer;
vsr : double;
begin
v1 := StrToInt(Edit1.Text);
v2 := StrToInt(Edit2.Text);
v3 := StrToInt(Edit3.Text);
//Считаем среднее v
vsr := (v1 + v2 + v3)/3;
//присваиваем vsr каждому v
v1 := vsr;
v2 := vsr;
v3 := vsr;
end;
то появляется другая ошибка, соответственно:
Incompatible types: 'Integer' and 'Double'
Можно как нибуть Double преобразовать к Integer ?
В таком случае не проще ли все переменные сделать double?
просто переменную Double не вывести в строку, как можно поступись с Integer:
vsr: integer;
begin
vsr := StrToInt(Edit1.Text);
Labe1.Caption := IntToStr(vsr);
end;
просто IntToStr и StrToInt моё личное предпочтение (может не совпадать с предпочтением более опытных программистов), и ещё не хочется редактировать лишние 200 строк кода, заменяя функции.
Всё правильно. Оператор "/" - это "дробная" операция, посему результат будет с плавающей точкой, который невозможно "автоматически" привести к целому.
Используйте оператор "\" - целочисленное деление. Соответственно, результат будет целочисленного типа.
Не суйся с сишным рылом в паскалевский ряд. Целочисленное деление в Паскале обозначается ключевым словом div.