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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2008, 03:00   #1
DriveSmall
Новичок
Джуниор
 
Регистрация: 05.06.2008
Сообщений: 2
Восклицание Помогите почти с готовой задачей

Вывести на экран монитора в виде таблицы значение аргумента Хi, значение функции Yi (i=1,2,3...), max, min функции i график функции:
y=sin(2x)+cosx

діапазон смены аргумента 0 <= х <= 2"Пи"(pi), количество точек графика 50.

Мне дали вот по этому примеру сделать, а я простой новичок в этом деле ничего не получаеться, помогите кто может!

Код:
var a:array[1..30,1..2] of real;
    step,b,n,n1:real;
    i,s,gr,gl:integer;
    s1,s2,s3,s4:string;

begin
 ClrScr;
 gr:=Detect;
 initgraph(gr,gl,'');
 OutTextXY(220,20,'Задание 1');
 OutTextXY(225,280,'SinX = ');

{График}

step:=(pi/2)/15;
b:=-(pi/2);
 for i:=1 to 30 do
begin
 a[i,1]:=b+step;
 a[i,2]:=sin(a[i,1]);
 b:=b+step;
end;
 for i:=1 to 29 do
begin
 setcolor(red);
  Line(round(a[i,1]*50)+350 ,round(a[i,2]*50)+350,round(a[i+1,1]*50)+350, round(a[i+1,2]*50)+350);
   setcolor(white);
    Line(round(a[1,1]*50)+350,350,430,350);
     Line(350,round(a[1,1]*50)+350,350,round(a[30,1]*50)+350);
end;
  Line(round(a[1,1]*50)+350,round(a[1,1]*50)+350,430,round(a[1,1]*50)+350);
   Line(round(a[1,1]*50)+350,round(a[1,1]*50)+350,round(a[1,1]*50)+350,round(a[30,1]*50)+350);
    Line(430,round(a[1,1]*50)+350,430,round(a[30,1]*50)+350);
     Line(round(a[1,1]*50)+350,round(a[30,1]*50)+350,430,round(a[30,1]*50)+350);

 {Таблица}

line(20,40,420,40);
line(20,460,220,460);
line(20,40,20,460);
line(220,40,220,460);
line(420,40,420,260);
line(260,40,260,260);
line(340,40,340,260);

line(60,40,60,460);
line(140,40,140,460);

line(20,60,420,60);
line(20,80,420,80);
line(20,100,420,100);
line(20,120,420,120);
line(20,140,420,140);
line(20,160,420,160);
line(20,180,420,180);
line(20,200,420,200);
line(20,220,420,220);
line(20,240,420,240);
line(20,260,420,260);

line(20,280,220,280);
line(20,300,220,300);
line(20,320,220,320);
line(20,340,220,340);
line(20,360,220,360);
line(20,380,220,380);
line(20,400,220,400);
line(20,420,220,420);
line(20,440,220,440);
line(20,460,220,460);


line(20,280,220,280);
line(20,300,220,300);
line(20,320,220,320);
line(20,340,220,340);
line(20,360,220,360);
line(20,380,220,380);
line(20,400,220,400);
line(20,420,220,420);
line(20,440,220,440);
line(20,460,220,460);

{Текст}

 OutTextXY(35,45,'i');
 OutTextXY(95,45,'X');
 OutTextXY(175,45,'Y');
 OutTextXY(235,45,'i');
 OutTextXY(295,45,'X');
 OutTextXY(375,45,'Y');

 s:=65;
 for i:=1 to 20 do
begin
 str(i,s1);
 OutTextXY(35,s,s1);
 str(a[i,1]:2:2,s2);
 OutTextXY(80,s,s2);
 str(a[i,2]:2:2,s3);
 OutTextXY(160,s,s3);
 s:=s+20;
end;

 s:=65;
 for i:=21 to 30 do
begin
 str(i,s1);
 OutTextXY(235,s,s1);
 str(a[i,1]:2:2,s2);
 OutTextXY(280,s,s2);
 str(a[i,2]:2:2,s3);
 OutTextXY(360,s,s3);
 s:=s+20;
end;

{Самое большое и самое меньшее значение Y}

 for i:=2 to 30 do
 begin
 if a[i,2]>a[i-1,2] then
 n:=a[i,2]
 else
 n:=a[i-1,2];
 end;

 for i:=2 to 30 do
 begin
 if a[i-1,2]<a[i,2] then
 n1:=a[i-1,2]
 else
 n1:=a[i,2];
 end;

 str(n:2:2,s1);
 str(n1:2:2,s2);
 OutTextXY(260,460,'Самое большое значение Y = '+s1);
 OutTextXY(260,470,'Самое меньшее значение Y = -'+s2);
 readln;
  end;

Последний раз редактировалось DriveSmall; 05.06.2008 в 03:03.
DriveSmall вне форума Ответить с цитированием
Старый 05.06.2008, 09:15   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

у-у-у не знаю... Мне такой код не по душе.
Я бы делал так:
РАстягиваем на форме TChart и StringGrid
Где нить прописываем такую картину.
Код:
var i,y:double;c:TFastLineSeries;
begin
i:=0;
StringGrid1.ColCount:=2;
StringGrid1.RowCount:=2;
c:=TFastLineSeries.Create(Chart1);
Chart1.AddSeries(c);
while i<2*pi do begin
 y:=sin(2*i)+cos(i);
 StringGrid1.Cells[0,StringGrid1.RowCount-1]:=FloatToStr(i);
 StringGrid1.Cells[1,StringGrid1.RowCount-1]:=FloatToStr(y);
 StringGrid1.RowCount:=StringGrid1.RowCount+1;
 i:=i+1;
 c.AddXY(i,y);
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.06.2008, 09:26   #3
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

У него же программа в Паскале и нормально работает. Там только график поменять и таблицу по другому расположить, она побольше будет, да в начале модули Crt,Graph дописать.
puporev вне форума Ответить с цитированием
Старый 05.06.2008, 09:49   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А-а-а ну лана, провтыкал... Просто автору бы писать еще и язык в посте, ато не всегда успеваю догнать. )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.06.2008, 02:02   #5
DriveSmall
Новичок
Джуниор
 
Регистрация: 05.06.2008
Сообщений: 2
По умолчанию

Ребята спасибо за старания, но не могли бы, Вы помочь переделать программу под данное задание ?

Цитата:
Вывести на экран монитора в виде таблицы значение аргумента Хi, значение функции Yi (i=1,2,3...), max, min функции и график функции: y=sin(2x)+cosx
диапазон смены аргумента 0 <= х <= 2"Пи"(pi), количество точек графика 50.
DriveSmall вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите зделать блок-схему к готовой задаче ShnapS Паскаль, Turbo Pascal, PascalABC.NET 9 31.08.2010 20:42
А зачем вы почти все делаете ваши сайты с помощью Ucoz? Reaction Свободное общение 9 10.04.2008 21:35
работа с уже готовой прогой (автоматизировать или врукопашную) Herbert Фриланс 3 01.04.2008 00:11