Технический форум
Вернуться   Технический форум > Программирование > Форум программистов


Ответ
 
Опции темы Опции просмотра
Старый 07.06.2011, 00:57   #1 (permalink)
bastilio
Member
 
Регистрация: 30.05.2011
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Помогите разобраться с ошибками, пожалуйста

вот код программы.

program a1;
uses graph, crt;
const n=9;
var Q:array[1..n] of real;
H:array[1..n] of real;
Hp:array[1..n] of real;
dH:array[1..n] of real;
x:array[1..n] of real;
y:array[1..n] of real;
i,j:integer;
grDriver,grMode:integer;
a,b:real;

procedure sum_count;
var s1,s2,s3,s4: real;
begin
s1:=0;
s2:=0;
s3:=0;
s4:=0;
for i:=1 to n do
begin
s1:=s1+y[i];
s2:=s2+x[i];
s3:=s3+x[i]*y[i];
s4:=s4+sqr(x[i]);
end;
a:=(s1*s2-n*s3)/(sqr(s2)-n*s4);
b:=(s3*s2-s4*s1)/(sqr(s2)-n*s4);
end;

function hr(z:real):real;
var m:real;
begin
m:=a*sqr(z)+b*z;
hr:=m;
end;

BEGIN
clrscr;
writeln('Vvedite znacheniya');
writeln;
for i:=1 to n do
begin
write('Q[',i,']=');
readln(q[i]);
x[i]:=q[i];
end;
writeln;
for i:=1 to n do
begin
write('H[',i,']=');
readln(h[i]);
y[i]:=h[i]/q[i];
end;
sum_count;
for i:=1 to n do
begin
Hp[i]:=hr(q[i]);
dH[i]:=abs(Hp[i]-h[i])/abs(h[i]);
end;

writeln;
textcolor(lightred);
writeln('Rezultati vi4islenii:');
writeln;
textcolor(white);
writeln(' a=',a:8:5);
writeln(' b=',b:8:5);
writeln;
writeln(' |------|-----|---------|---------|---------|');
writeln(' | n | Qi | Hi | Hp | dH |');
writeln(' |------|-----|---------|---------|---------|');
for i:=1 to n do
writeln(' |',i:2,' |',q[i]:3:0,' |',h[i]:8:5,' |',Hp[i]:8:5,' |',dH[i]:8:5,' |');
writeln(' |------|-----|---------|---------|---------|');
readln;

GrDriver:=detect;
initgraph(GrDriver,GrMode,'C:\BP\BGI');
cleardevice;
setcolor(white);
outtextXY(10,10,'Zavisimost_H_ot_Q');
outtextXY(15,50,'H');
outtextXY(205,205,'Q');
{ Dlya naglyadnosti masshtab raven 2:1 }
setcolor(blue);
line(10,50,10,200);
line(10,200,200,200);
for i:=1 to n do
putpixel(trunc(q[i])*2+10,200-trunc(h[i])*2,yellow);
setcolor(white);
outtextXY(300,10,'Zavisimost_Hp_ot_Q');
outtextXY(305,50,'Hp');
outtextXY(505,205,'Q');
setcolor(blue);
line(300,50,300,200);
line(300,200,500,200);
for i:=1 to n do
putpixel(300+trunc(q[i])*2,200-trunc(Hp[i])*2,yellow);
readln;
closegraph;

END.


помогите с алгоритмами пожалуйста.
Написать:
Алгоритм решения задачи (слова и блок-схема)
Алгоритмы процедур( слова-назначений,формальные параметры,как пользоваться,блок-схема)
Миниатюры
img_0001.jpg   img_0002.jpg  
bastilio вне форума   Ответить с цитированием

Старый 07.06.2011, 00:57
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

На форуме ранее создавались топики которые так или иначе похожи на ваш

Помогите разобраться
Помогите, пожалуйста, разобраться в схеме
Помогите, пожалуйста, разобраться с выбором и совместимостью железа

Старый 08.06.2011, 12:47   #2 (permalink)
Vladimir_S
Специалист
 
Аватар для Vladimir_S
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 26,228
Сказал(а) спасибо: 286
Поблагодарили 505 раз(а) в 163 сообщениях
Репутация: 91625
По умолчанию

Могу предложить такой (исправленный) вариант программы:
Код:
program a1;
uses graph, crt;
const
 n=9;
 Q:array[1..n] of real=(14.0, 20.5, 35.3, 45.0, 53.8, 62.0, 68.3, 75.2, 82.0);
 H:array[1..n] of real=(3.05, 4.90, 10.4, 15.3, 20.1, 25.4, 29.8, 34.6, 40.0);
var
 Hp,dH,x,y:array[1..n] of real;
 i,j,grDriver,grMode:integer;
 a,b:real;
 s:String;

procedure sum_count;
var s1,s2,s3,s4: real;
begin
 s1:=0;
 s2:=0;
 s3:=0;
 s4:=0;
 for i:=1 to n do
  begin
   s1:=s1+y[i];
   s2:=s2+x[i];
   s3:=s3+x[i]*y[i];
   s4:=s4+sqr(x[i]);
  end;
 a:=(s1*s2-n*s3)/(sqr(s2)-n*s4);
 b:=(s3*s2-s4*s1)/(sqr(s2)-n*s4);
end;

function hr(z:real):real;
var m:real;
begin
 m:=a*sqr(z)+b*z;
 hr:=m;
end;

BEGIN
 clrscr;
 for i:=1 to n do
  begin
   x[i]:=q[i];
   y[i]:=h[i]/q[i];
  end;
 sum_count;
 for i:=1 to n do
  begin
   Hp[i]:=hr(q[i]);
   dH[i]:=abs(Hp[i]-h[i])/abs(h[i]);
  end;

 textcolor(lightred);
 writeln('Rezultati vi4islenii:');
 writeln;
 textcolor(white);
 writeln(' a=',a:8:5);
 writeln(' b=',b:8:5);
 writeln;
 writeln(' |------|-----|---------|---------|---------|');
 writeln(' |  n   | Qi  |    Hi   |   Hp    |    dH   |');
 writeln(' |------|-----|---------|---------|---------|');
 for i:=1 to n do
  writeln(' |  ',i:2,'  | ',q[i]:4:1,'|',h[i]:8:2,' |',Hp[i]:8:5,' |',dH[i]:8:5,' |');
 writeln(' |------|-----|---------|---------|---------|');
 readln;

 GrDriver:=detect;
 initgraph(GrDriver,GrMode,'C:\BP\BGI');
 cleardevice;
 setcolor(white);
 outtextXY(300,10,'Zavisimosti_H_i_Hp_ot_Q');
 setcolor(blue);
 line(100,20,100,440);
 line(100,440,500,440);
 SetTextJustify(RightText,CenterText);
 For i:=1 to 12 do
  begin
   setcolor(blue);
   line(100, 440-35*i, 105, 440-35*i);
   Str(5*i,s);
   setcolor(white);
   If i<12 then
    OutTextXY(95, 440-35*i, s);
  end;
 setcolor(Yellow);
 OutTextXY(80,20,'Hp');
 setcolor(white);
 OutTextXY(88,20,',');
 setcolor(lightred);
 OutTextXY(95,20,' H');
 SetTextJustify(CenterText,TopText);
 For i:=1 to 10 do
  begin
   setcolor(blue);
   line(100+40*i, 440, 100+40*i, 435);
   Str(10*i,s);
   setcolor(white);
   If i<10 then
    OutTextXY(100+40*i, 445, s);
  end;
 OutTextXY(500,445,'Q');
 SetColor(yellow);
 MoveTo(100,440);
 for i:=1 to 1000 do
  LineTo(Round(100+i*0.4),Round(440-Hr(i*0.1)*7));
 SetColor(lightred);
 SetLineStyle(SolidLn,0,ThickWidth);
 for i:=1 to n do
  Circle(Round(100+q[i]*4),Round(440-Hp[i]*7),2);
 ReadKey;
 closegraph;
END.
__________________
With Mozilla Firefox - straight to communism!
Vladimir_S вне форума   Ответить с цитированием
Старый 08.06.2011, 21:54   #3 (permalink)
bastilio
Member
 
Регистрация: 30.05.2011
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

а чем он отличается?)
bastilio вне форума   Ответить с цитированием
Старый 08.06.2011, 22:06   #4 (permalink)
bastilio
Member
 
Регистрация: 30.05.2011
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

можете помочь с алгоритмами,можно,без блок-схем?
bastilio вне форума   Ответить с цитированием
Старый 08.06.2011, 22:19   #5 (permalink)
Vladimir_S
Специалист
 
Аватар для Vladimir_S
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 26,228
Сказал(а) спасибо: 286
Поблагодарили 505 раз(а) в 163 сообщениях
Репутация: 91625
По умолчанию

Цитата:
Сообщение от bastilio Посмотреть сообщение
а чем он отличается?)
А что, сделать copy-paste да запустить - никак? Ну что же. Основные отличия:
1. Исходные данные записаны в виде констант, чтобы не вводить каждый раз.
2. Выровнена таблица, исправлены форматы.
3. График построен кардинально иначе:
а) Во весь экран.
б) Размечены оси.
в) Расчетная кривая (Hp) проведена с очень мелким шагом, что дает плавную параболу.
г) Табличные точки (Н) нанесены на тот же график - иначе бессмысленно.

P.S. Извините, но всякими там алгоритмами да блок-схемами не занимаюсь.
Миниатюры
a1_1.jpg   a1_2.jpg  
__________________
With Mozilla Firefox - straight to communism!
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 08.06.2011, 22:58   #6 (permalink)
bastilio
Member
 
Регистрация: 30.05.2011
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

а в Паскале АВС это не запустить,только в борланд?)
bastilio вне форума   Ответить с цитированием
Старый 09.06.2011, 00:25   #7 (permalink)
bastilio
Member
 
Регистрация: 30.05.2011
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

а что такое grDrive и grMod ?
и еще S типа string(какой размер) и что означает?
bastilio вне форума   Ответить с цитированием
Старый 09.06.2011, 04:39   #8 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 14,365
Записей в дневнике: 56
Сказал(а) спасибо: 122
Поблагодарили 149 раз(а) в 61 сообщениях
Репутация: 58290
По умолчанию

А вы уверены, что сами писали код, приведенный вами в первом сообщении?

Для получения ответов на ваши вопросы загрузите среду программирования и нажмите кнопку F1.
__________________
Убить всех человеков!
AlexZir вне форума   Ответить с цитированием
Старый 09.06.2011, 09:13   #9 (permalink)
Vladimir_S
Специалист
 
Аватар для Vladimir_S
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 26,228
Сказал(а) спасибо: 286
Поблагодарили 505 раз(а) в 163 сообщениях
Репутация: 91625
По умолчанию

Цитата:
Сообщение от bastilio Посмотреть сообщение
а в Паскале АВС это не запустить,только в борланд?)
Абсолютно исключено! "Ваш" код, как и мой, написан для Borland Graphics.
Цитата:
Сообщение от AlexZir Посмотреть сообщение
А вы уверены, что сами писали код, приведенный вами в первом сообщении?
Что-то подсказывает мне отрицательный ответ на поставленный вопрос...
__________________
With Mozilla Firefox - straight to communism!
Vladimir_S вне форума   Ответить с цитированием
Старый 10.06.2011, 01:46   #10 (permalink)
bastilio
Member
 
Регистрация: 30.05.2011
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

да нет не сам,я просто пробую вникнуть)
bastilio вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 17:43.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.