Как вывести в программе конечные значения программы в виде таблицы

Простейшими примерами применения операторов цикла на практике являются программы вычисления значений функций при изменяющихся значениях аргумента и вывода данных в виде таблиц с заголовками. В качестве аргумента обычно выступает

«Практикум по программированию на языке C в среде VS C++»

переменная, изменяющаяся в цикле по требуемому закону. Она может быть как допол-нительным, так и основным параметром в циклах for,while и dowhile.

При работе с вещественными данными необходимо иметь в виду, что их значения могут представляться с ошибкой, что эти ошибки могут зависеть от типа переменных, накапливаться при выполнении арифметических операций и приводить к непредусмот-ренному программистом выполнению программы. Рассмотрим два фрагмента програм-мы вывода таблицы значений аргумента и функции, где аргумент — дополнительный па-раметр в цикле является вещественной переменной с именем Х:

floatX,H,Xk;//Все переменные типаfloat

printf(«n%6.2f %8.2f», X,sin(X)); X=X+H;

Программа складского учета Склад ПРО 5.1: приход, расход, остаток. Склад в excel

H=1.0/3.0; X=-H; Xk=5.0/3.0; do

printf(«n%6.2f %8.2f», X,sin(X)); >while (X!=Xk);

«Практикум по программированию на языке C в среде VS C++»

Казалось бы, оба фрагмента выведут на экран таблицы значений синуса для аргу-мента Х, изменяющегося от 0 до 5/3 включительно с шагом 1/3. Но в действительности первый фрагмент не выведет значения 5/3 и sin(5/3), а второй не обеспечит завершение выполнения цикла при Х равном 5/3, так что цикл продолжит выполняться и при боль-ших значениях Х.

Во избежание подобных ситуаций следует вместо проверок вещественных данных на равенство использовать проверки на (меньше) и/или > (больше) с некоторым доста-точно малым запасом, превышающим точность представления чисел данного типа и не нарушающим логику работы программы. Например, рассмотренные фрагменты про-граммы можно изменить так

floatX,H,Xk;//Все переменные типаfloat

printf(«n%6.2f %8.2f», X,sin(X)); X=X+H;

//Запас в H/2.0 больше ошибки

«Практикум по программированию на языке C в среде VS C++»

//представления вещественных чисел

printf(«n%6.2f %8.2f», X,sin(X));

Результат выполнения будет таким же, как и для предыдущего фрагмента программы.

Рассмотрим решение этой же задачи вывода таблицы значений синуса, но при ис-пользовании оператора цикла for с параметром целого типа. Для этого потребуется за-ранее вычислить, сколько раз цикл должен выполняться, воспользовавшись формулой

Читайте также:
Обзор программ для dvd

N = X 1 − X 0 +1, H

N – искомое число повторений цикла,

X0 и X1 – начальное и конечное значения аргумента, H – шаг изменения аргумента,

а cкобки ] [ в формуле обозначают округление.

Округление вещественного числа можно получить, добавив к нему 0,5 и приме-нив к результату библиотечную функцию ceil (она возвращает наименьшее целое, не меньшее аргумента), или вычев из него 0,5 и применив к результату библиотечную функцию floor (она возвращает наибольшее целое, не большее аргумента).

Мгновенные отчеты в сводных таблицах

Дополним условие задачи требованием сохранения значений аргумента и функ-ции в массивах и вычисление очередного значения аргумента не методом накопления суммы, а умножением параметра цикла на шаг приращения аргумента. Так как в нашем случае Х0=0,Х1=5/3 и H=1/3, фрагмент программы с циклом for будет следующим

floatX,H,Xk;//Все переменные типаfloat

floatx[6], y[6];//Мссивы для сохранения значений//аргумента и функции

«Практикум по программированию на языке C в среде VS C++»

//Вычисление количества повторений цикла

N=ceil(5.0/3.0/H-0.5)+1;//или так,//N=floor(5.0/3.0/H+0.5)+1;//или так for(i=0;i

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:

Источник: studopedia.ru

Вычислить и вывести на экран в виде таблицы значения функции — Pascal (80352)

Ребят, помогите решить задачку через рекуррентное уравнение, желательно с подробными объяснениями! Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда, на интервале от Хнач до Хкон с шагом dx и точностью. Таблицу снабдить заголовком и шапкой. Строка таблицы должна содержать значение аргумента, значение функции и количество просуммированных членов ряда: Написал программу, но она не рабочая.. В чем ошибка(-и).

program lab2; uses crt; var xn, xk, dx, eps, ch, y, x:real; n: integer; begin clrscr; writeln(‘Введите x начальное, x конечное, шаг и точность’); readln(xn, xk, dx, eps); if(xn>xk) then begin writeln(‘Начальное значение аргумента больше конечного, программа сменит их местами’); x:=xn; xn:=xk; xk:=x; end; xn поменяем их местами> if(xn writeln(‘+——+——————-+——+’); ch:=pi/2; y:=ch; x:=xn; xk:=xk+dx/2; n:=0; while abs(ch)>eps do begin ch:=ch*((-1)*((((2*n+1)*(2*n+1)*(x*x))/((2*n+2)*(2*n+3))))); n:=n+1; y:=y+ch; if (abs(ch) ch:=pi/2; y:=ch; x:=x+dx; n:=0; end; end; writeln; writeln(‘Нажмите Enter для выхода из программы’); readln; end; end.

Читайте также:
В чем состоит отличие мультимедийной обучающей программы от учебного видеофильма

Буду благодарен любой помощи

Код к задаче: «Вычислить и вывести на экран в виде таблицы значения функции»

Листинг программы

uses math; function readln_check(s: string; a, b: extended): extended; var t: extended; begin repeat write(s, ‘: (‘, a:0:15, ‘..’, b:0:15, ‘]; ‘, s, ‘ = ‘); readln(t) until (t > a) and (t < b); readln_check := t end; function arccos_Taylor(x, eps: extended; var n: integer): extended; var a, t: extended; begin a := x; t := a; n := 0; while abs(a) >= eps do begin inc(n); a := (n — 0.5) / n * (n — 0.5) / (n + 0.5) * x * x * a; t := t + a end; arccos_Taylor := pi / 2 — t; inc(n) end; const lin = ‘+———————+——————-+————+——————-+’; var x, xn, xk, dx, eps: extended; n: integer; begin writeln(‘Введите границы интервала табуляции:’); xn := readln_check(‘Граница 1’, -1, 1); xk := readln_check(‘Граница 2’, -1, 1); if xn > xk then begin x := xn; xn := xk; xk := x end; dx := readln_check(‘Шаг’, 0, 1); xk := xk + dx / 2; eps := readln_check(‘Точность’, 0, 1); writeln(‘Таблица:’); writeln(lin); writeln(‘| x | y(x) | n | arccos(x) |’); writeln(lin); x := xn; while x < xk do begin writeln(‘| ‘, x:18:15, ‘ | ‘, arccos_Taylor(x, eps, n):0:15, ‘ | ‘, n:10, ‘ | ‘, arccos(x):0:15, ‘ |’); x := x + dx end; write(lin); readln end.

Источник: studassistent.ru

Вычисление и вывод данных в виде таблицы

Простейшими примерами применения операторов цикла на практике являются программы вычисления значений функций при изменяющихся значениях аргумента и вывода данных в виде таблиц с заголовками. В качестве аргумента обычно выступает переменная – дополнительный параметр, изменяющаяся в цикле по требуемому закону. В циклах whileиrepeatэта переменная используется в условиях завершения цикла.

При работе с вещественными данными необходимо иметь в виду, что их значения могут представляться с ошибкой, что эти ошибки могут зависеть от типа переменных, накапливаться при выполнении арифметических операций и приводить к непредусмотренному программистом выполнению программы. Рассмотрим два фрагмента программы вывода таблицы значений аргумента и функции, где аргумент — дополнительный параметр в цикле является вещественной переменной с именем Х:

X:=0; H:=1/3; Xk:=5/3;//Все переменные типаExtended

Казалось бы, оба фрагмента выведут на экран таблицы значений синуса для аргумента Х, изменяющегося от 0 до 5/3 включительно с шагом 1/3. Но в действительности первый фрагмент не выведет значения 5/3 и sin(5/3), а второй не обеспечит завершение выполнения цикла при Х=5/3, так что цикл продолжит выполняться и при больших значениях Х.

Читайте также:
Ведущая роль в построении новых моторных программ принадлежит

Во избежание подобных ситуаций следует вместо проверок вещественных данных на равенство использовать проверки на (меньше) и/или>(больше) с некоторым достаточно малым запасом, превышающим точность представления чисел данного типа и не нарушающим логику работы программы. Например, в рассмотренные фрагменты программы можно изменить так

//Запас в H/2=1/6 больше ошибки представления вещественных чисел

//Запас в H/2 больше ошибки представления вещественных чисел

until X>Xk; //и выход из цикла будет, и будет только при Х,

//равном 5/3, что больше Xk.

Рассмотрим решение этой же задачи вывода таблицы значений синуса, но при использовании оператора цикла for. Для этого потребуется заранее вычислить, сколько раз цикл должен выполняться, воспользовавшись формулой

,

где скобки обозначают округление,

N – искомое число повторений цикла,

X0 и X1 – начальное и конечное значения аргумента,

H – шаг изменения аргумента.

Так как в нашем случае Х0=0, Х1=5/3 и H =1/3, фрагмент программы с циклом forбудет следующим

Пример 3.1.1 выполнения задания с использованием цикла while

Упростив вычисления за счет использования дополнительных переменных и/или скобочных форм, вычислить значения функции

и ее производной

на интервале значений Х от 40 o до 50 o с шагом (1/3) o .

Для проверки правильности вычислений вычислить её значение по формуле без преобразований, а также поразностной схеме при ΔX=10 -8 .

Вычисленные значения вывести с предшествующими порядковыми номерами и соответствующими значением аргумента Х в виде таблицы с заголовками столбцов.

A=40/180*Pi; //Начальное значение аргумента

H=Pi/180; //Шаг изменения аргумента

B=50/180*Pi+H/2; //Конечное значение аргумента

//Вывод заголовка таблицы

X:=A;//ПеременнаяXбудет представлять текущее значение аргумента

I:=0;//ПеременнаяIбудет представлять номер строки таблицы

I:=I+1; //Увеличение значения счетчика строк таблицы

//Вычисление значений дополнительных переменных

//Вычисление Y- значения функции иP- ее производной

//с использованием дополнительных переменных.

//Вычисление P1 — контрольного значения производной

//без использования дополнительных переменных.

//Вычисление F1 — контрольного значения производной

//по разностной схеме.

//Вывод в строку таблицы вычисленных значений

WriteLn(I:3, X*180/Pi:10:2,Y:12:5,P:14:5,P1:10:5, F1:14:5 );

X:=X+H; //Увеличение значения аргумента

Источник: studfile.net

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru