Главная Форум Файлы Статьи
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Форум » Объектно ориентированное программирование в средах C++, Delphi, Pascal » Delphi 7 » Помогите, найти ошибку в коде!
Помогите, найти ошибку в коде!
ЗодтДата: Суббота, 10.05.2014, 19:12 | Сообщение # 1
Землянин
Группа: Пользователи
Сообщений: 1
Награды: 0
Репутация: 0
Статус: Offline
Не могу понять где ошибся, когда ввожу обычные числа все в порядке, а как только десятичные все рушится... даже extended вместо integer'a ставил, думал в этом проблема, но увы...

Код
program kurs_delphi;
{$APPTYPE CONSOLE}
uses
   SysUtils;
var
i,V,Qmax,Qmin: integer;
Q,p,S,pmax: real;
Qtab: array [0..12] of integer =(23,34,45,57,68,53,45,42,49,58,67,78,93);
Qras: array [0..12] of real;
c: array [0..12] of integer;

begin
   V:=212;
   i:=0;
   Qmax:=Qtab[i];
   Qmin:=Qtab[i];
   S:=0;

   while V<=290 do begin
   begin
   c[i]:=V;

   // Подбор уравнения
   if V<215 then Q:=11.3*V-683.65
    else
       if V<222 then Q:=1.5714*V-280.85
       else
          if V<236 then Q:=1.64*V-342.71
          else
             if V<243 then Q:=(-0.42)*V+146.14
             else
               if V<250 then Q:=V-201
               else
                 if V<270 then Q:=0.9*V-176
                 else
                   if V<=290 then Q:=1.3*V-284                  
   end;
   Qras[i]:=Q;
   if (V<215) then V:=V+1 else     // Смена шага
    if (V<250) then V:=V+7 else V:=V+10;
   i:=i+1;
   end;

   for i:=0 to 12 do  // Нахождение Qmax, Qmin
    begin
       if Qmax<Qtab [i]then Qmax:=Qtab[i];
       if Qmin>Qtab [i]then Qmin:=Qtab[i];
    end;

   for i:=0 to 12 do
    begin
      write(c[i],': ',Qras[i]:0:2);  // Вывод таблицы
      if Qras[i]<>Qtab [i]then  // Вывод погрешности, если она есть
       begin
         p:=abs(Qras[i]-Qtab[i])/(Qmax-Qmin)*100;
         if pmax < p then pmax:=p;    // нахождение максимальной локальной погрешности
         write(' (',p:0:2,'%)');
         S:=S+p;  // нахождение суммарной погрешности
       end;
       writeln('');
    end;
    writeln('max loc pogr = ',pmax:0:2);
    writeln('Summ pogr = ',S:0:2);
   readln;
end.
 
Shagg_EДата: Среда, 14.05.2014, 14:53 | Сообщение # 2
Активный лентяй
Группа: Фельдмаршалъ
Сообщений: 644
Награды: 20
Репутация: 41
Статус: Offline
Блин, извини - те, кто в этом разбираются - не заходят больше на форум cry

 
Форум » Объектно ориентированное программирование в средах C++, Delphi, Pascal » Delphi 7 » Помогите, найти ошибку в коде!
Страница 1 из 11
Поиск: