Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Object Pascal: кроссплатформенные технологии > Задачка про сыр


Автор: Анютка 24.11.2005, 19:34
Составить таблицу стоимости порции сыра весом 50,100,..1000г(цена 1кг-180)
Код

program cheese;

uses crt;

var
  s: real;
  n: integer;
begin
  clrscr;
  n:=0;
  writeln('ves  stoimost');
  while n<=1000 do
  begin
    n:=n+50;
    s:=(180*n)/1000;
    writeln(n  s:8:3);
  end;
  readkey;
end.

Почему у меня получаются отрицательные значения?Что не правильно? smile

Автор: Snipe 24.11.2005, 19:54
s:=(180*n)/1000 замени на s:=180*(n/1000)
Тип integer переполняется вот и всё.
integer:-32678...32676, а при n=200, 180*n=36000, поэтому лучше сначала делить на 1000, а потом умножать на 180.

Автор: nikitao 24.11.2005, 21:05
Анютка,на будущее,пользуйтесь тегами [code=delphi][/code] для удобочитаемости кода. smile
Добавлено @ 21:09
Цитата(Snipe @ 24.11.2005, 20:54)
s:=(180*n)/1000 замени на s:=180*(n/1000)
Тип integer переполняется вот и всё.
integer:-32678...32676, а при n=200, 180*n=36000, поэтому лучше сначала делить на 1000, а потом умножать на 180.

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)