Паскаль. Вопрос.
Условие задачи
Используя один из языков высокого уровня (Pascal) и Microsoft Office решить
следующие задачи:
1. Построить график функции выражения W по формуле Z (Таблица 1.1),
используя в качестве переменной любую переменную из заданных в выражении
(выбирать необходимо нелинейную зависимость, а значения остальных переменных
выбрать произвольно). Количество точек построения равно K, а интервал
изменения переменной подобрать так, чтобы величина изменения функции при
изменении переменной составляла Pr%. Для построения графика использовать
электронную таблицу Excel из офисного программного обеспечения со
сформированными данными из Раscal на диске. Результаты работы сохранить в
виде файлов *.pas, *.dat, *.xls. Вид формулы Z из выражения W, величины Рr,
K взять из вариантов по заданию преподавателя.
W = Z
2. Переменную из формулы Z подобрать с помощью двух вариантов:
1. Программно, используя один из методов (простой итерации, половинного
деления, Ньютона)
2. С помощью Microsoft Excel
? K Рr, % Z
20 30
******************************************************************
1 program iter;
2 var x: array[1..2,1..20] of real;
3 y: real;
4 i: integer;
5 v: text;
6 const k=20;
7 begin
8 Assign(v,'c:\var4.dat');
9 rewrite(v);
10 Writeln ('x:':16,'z:':16,'y:':16);
11 x[1,1]:=1;
12 y:=1;
13 x[2,1]:=(x[1,1]+y)/(x[1,1]+1)-(x[1,1]*y-12)/(34+x[1,1]);
14 Writeln (x[1,1]:16:3,x[2,1]:16:3,y:16:3);
15 Writeln (v,'x:':8,'z:':9,'y:':9);
16 Writeln (v, x[1,1]:7:3,x[2,1]:7:3,y:7:3);
17 for i:=2 to k do
18 begin
19 y:=y+y*0.3;
20 x[1,i]:=x[1,i-1]+x[2,i-1];
21 x[2,i]:=(x[1,i]+y)/(x[1,i]+1)-(x[1,i]*y-12)/(34+x[1,i]);
22 WriteLn (x[1,i]:16:3, x[2,i]:16:3, y:16:3);
23 WriteLn (v, x[1,i]:7:3,x[2,i]:7:3,y:7:3);
24 end; close(v);
25 WriteLn('Данные скопированы на диск. Нажмите <Enter>');
26 readln;
27 end.
Меня интересует почему график получается такой корявый? Что-то неправильно в
самом цикле?
И еще: если выражение
(строка 13) x[2,1]:=(x[1,1]+y)/(x[1,1]+1)-(x[1,1]*y-12)/(34+x[1,1])
изменить прибавив x2, т.е.
x[2,1]:=(x[1,1]+y)/(x[1,1]+1)-(x[1,1]*y-12)/(34+x[1,1]) + sqr (x[1,x]) ,
появляется сообщение об ошибке (error 205 : Floating point overflow ). Что
делать?
Посылаю iter.pas где присутствует именно x2.
С пожеланием всего наилучшего, Forester. Писать: Isdm***@m*****.ru
Проект "Информационная сеть Пермского края" - http://ispk.narod.ru
Номер выпуска : 2889
Возраст листа : 211 (дней)
Количество подписчиков : 385
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/129638
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru
-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru
http://subscribe.ru/ mailto:ask@subscribe.ru
Тема: Паскаль. Вопрос.
Как раз x2-то и нет в этом коде. Так что вопрос отпадает.
Корявость:
ИМХО: не надо ограничивать вывод по длине. Происходит округление не в лучшую
строну :((
И еще, добавляйте пробелы между числами - у Вас в двух последних строках Z и
Y слились в Var4.dat