Министерство образования Российской Федерации
КРАСНОЯРСКАЯ ГОСУДАРСТВЕННАЯ АКАДЕМИЯ
ЦВЕТНЫХ МЕТАЛЛОВ И ЗОЛОТА
Институт Металлургии
Кафедра АПП
Группа АМЦ–00–2
Дисциплина ПОА
Отчет о лабораторной работе №1
Вариант №5
Проверил преподаватель ____________________ Ратушняк В.С.
(подпись, дата)
Выполнил студент ____________________ Дембицкий Ю.С.
(подпись, дата)
Красноярск, 2004 год.
1. Написать программу расчета 512 точек функции в указанном диапазоне. Результат оформить в виде таблицы. Таблицу постранично вывести на экран и записать в файл.
2. Построить график функции на указанном диапазоне.
3. Найти все нули функции (точки разрыва, любого рода, входящие в диапазон – нулями не считаются).
Каждый пункт задания предполагает создание отдельной подпрограммы, отвечающей основным требованиям, предъявляемым к алгоритмам: минимизация объема, универсальность, читаемость и т.д.
А именно:
1. Программа расчета 512 точек функции и построение таблицы значений, должна использовать подпрограмму расчета значений у(х), подпрограмма должна быть универсальной, т.к. предполагается ее использование при нахождении нулей функции при выполнении пункта задания №3. Запись таблицы в файл производить в текстовом формате, с использованием буферизированных файловых потоков данных. Постраничный вывод на экран можно организовывать в произвольной форме, «шапку» таблицы не обязательно каждый раз выводить на экран. Вывод осуществлять так же с использованием буферизированных потоков ввода-вывода.
2. Построение графика функции по таблице значений записанных в файл, необходимо сделать полностью универсальной подпрограммой. (Пример такой подпрограммы подробно описан в методических указаниях к курсовому проектированию по дисциплине «Программирование и основы алгоритмизации»). Желательно так же выполнять такую подпрограмму в виде включаемого в модуль main() файла, для более удобного последующего использования в курсовой работе.
3. Нахождение нулей выполнять с помощью подпрограмм «метод деления на 2» с оценкой результата либо по знаку у(х), либо по знаку у’(х) в зависимости от вида нулевой точки.
в диапазоне [-1.5;2].
Блок-схемы данных алгоритмов представлена на рисунках 1–5.
1. Главная программа
Рисунок 1 – Главная программа (расчета 512 точек, построение таблицы значений)
Рисунок 2 – Подпрограмма расчета значений y(x) (f_y(x))
2. Подпрограмма построения графика
Рисунок 3 – Подпрограмма построения нрафика функции по таблице значений записанных в файл (gr(char *fn))
3. Подпрограмма нахождения нулей методом половинного деления с оценкой результата по знаку функции y(x).
Рисунок 4 – Подпрограмма нахождения нулей методом половинного деления с оценкой результата по знаку функции y(x)
Рисунок 5 – Подпрограмма определения знака функции (sig(y))
Текст главной программы (файл laba1.cpp):
//При помощи препроцессорных директив подключаем необходимые функции
#include <iostream.h> //Потоки ввода-вывода
#include <graphics.h> //Работа с графикой
#include <stdio.h> //Функции ввода-вывода
#include <conio.h> //Работа с терминалом
#include <math.h> //Математические функции
#include <fstream.h> //Работа с файловыми потоками
#include "gr_lab1.cpp"//Программа построения графика
void main(void) //Тело программы
{ void gr(char *fn); //Подключение функции построения графика
textcolor(15);
clrscr();
double f_y(double); //Подключение подпрограммы вычисления функции
double x1=-1.5, x2=2, c=(x2-x1)/511.1;
int i=0;int t=0;
char *fn="my_f.dat";
fstream f; //Создание файлового потока
f.open (fn, ios::out); //Присоединение указателя на файл к потоку f
cout <<"x= "<<"y= "<<"№п/п"<<'\n';
for (double x=x1; x<=x2; x+=c)
{ i++;t++;
double y=f_y(x);
f<<x<<','<<y<<'\n';
cout.precision(5);//Обращение к объекту cout с целью округления
//выводимых значений до пятого знака дробной части
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.