Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2014, 12:19   #1
Nightway
Пользователь
 
Регистрация: 18.05.2013
Сообщений: 57
По умолчанию Ошибка при счёте

В общем такая запара:программа должна считать до предела Max по заданным шагам,но последний как бы шаг она не делает(например должна считать до 1,а считает до 0,95 ; а если шаг 0,02 то считает соответственно до 0,98) то есть не делает последний шаг...как исправить? (есть ещё подозрения,что она поднимает все значения вверх на 1 строку,если опустить,то не будет считать первую строку)


Код:
min:=strtofloat(edt36.text);
max:=strtofloat(edt34.text);
sh:=strtofloat(edt33.text);
if min>max then ShowMessage('');
if min>max then Exit;


n:=1;
setlength(p,n);
p[n-1]:=min;
while p[n-1]<=max do
 begin
  n:=n+1;
  setlength(p,n);
  p[n-1]:=p[n-2]+sh
 end;
with strngrd2 do
 begin
  fixedcols:=0;
  fixedrows:=0;
  rowcount:=n;
  colcount:=1;
  for t:=0 to n-1 do
  cells [0,t]:=floattostrf(p[t],fffixed,5,2);



(Дальше идет расчёт массива SS(там всё правильно 100%)



begin
  with strngrd1 do
begin

   rowcount:=Trunc((max-min)/sh)+1;
  colcount:=6;
  for i:=1 to 100 do
  for j:=1 to 100 do
  cells [j,i]:=floattostrf(ss[i,j],fffixed,5,4);
  strngrd1.rowcount := strngrd1.rowcount + 1;
  for i := 1 to strngrd1.colcount - 1 Do;
  strngrd1.Cols[1][0]:='Район 1;
  strngrd1.Cols[2][0]:='Район 1';
  strngrd1.Cols[3][0]:='Район 1';
  strngrd1.Cols[4][0]:='Район 1';
  strngrd1.Cols[5][0]:='Район 1';
  strngrd1.Cols[0][0]:='p(Шаг)\';
  for r:=0 to 100 do
  for d:=1 to 100 do
  strngrd1.Cols [0][r+d]:=strngrd2.Cols[0][r];
  end;
Nightway вне форума Ответить с цитированием
Старый 17.05.2014, 12:34   #2
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

Код:
while Min <= Max do
  begin
    inc(Min, sh); // Прибавляем
    SetLength(p, Length(p) + 1); // увеличиваем размер массива на единицу
    p[High(p)] := Min // присваиваем последнему элементу значение
  end;
Идея ясна? А то что у тебя написано, это, извиняюсь, какая - то порнография

Последний раз редактировалось doktor255; 17.05.2014 в 12:36.
doktor255 вне форума Ответить с цитированием
Старый 17.05.2014, 21:25   #3
Nightway
Пользователь
 
Регистрация: 18.05.2013
Сообщений: 57
По умолчанию

eefc356d93.jpg
вот такая ошибка
Nightway вне форума Ответить с цитированием
Старый 17.05.2014, 22:08   #4
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

Ошибка, это то, что написано пару миллиметров ниже. Запомни!!!
Код:
min := min + sh
Объяснять ошибку как я понимаю, нет смысла. Знания нулевые. Сразу говорю код не будет работать, так как ты опять запилил в код вот этот бред
Код:
while p[n - 1] <= max
Не удивляйся потом, что у тебя повиснет процедура.

Последний раз редактировалось doktor255; 17.05.2014 в 22:23.
doktor255 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Где ошибка? При билдинге ошибок 0, но при запуске вылетает ошибка. Visual C nikitabool Помощь студентам 0 08.01.2014 17:19
Ошибка при использовании vfprintf в dll при stdout CHERTS Visual C++ 1 25.10.2013 15:18
Ограничение в счёте программы определения склонений. KolanRUS Помощь студентам 2 01.12.2012 22:25
ошибка при исполнении (что то при установке компонентов) designer999 Компоненты Delphi 0 18.10.2010 22:03
Ошибка при фильтрации! Markus БД в Delphi 0 05.05.2007 17:28