Контрольная работа: Алгоритмічні мови програмування
Контрольна робота з теми:
“Алгоритмічні мови програмування”
Студентка групи Пзс-402
Казюка Олена
Завдання №1. Скласти блок схему та програму обчислення значення функції y=f(x) у точці x0 з точністю
. Вхідні дані x0та a містяться у самій програмі, точність вводиться з клавіатури.
| № варіанту |
F (x) |
X0 |
A |
|
| 13 |
|
0.4652 |
|
0.000001 |
Текст програми.
//Программа вычисления значения функции
#include<iostream.h> //Открытие библиотек
#include<conio.h>
#include<stdio.h>
#include <math.h>
const double PI=3.1415926; //Ввод константы
main()
{
cout<<«n»<<«**********Программа вычисления значения функции F(x)*********»;
float x,a,y; //Описание переменных
int epsilon;
x=0.4652; //Описание переменных первого порядка
a=PI/6;
cout<<«n»<<» Сколько знаков после запятой вывести на экран «;
scanf(«%d»,ε); //Считать число знаков epsilon
y=1-(cos(x-a))/(sqrt(a+(cos(x+a)/sin(x+a))))+exp(a*x); //функция, значение которой надо найти
printf(«%.*fn»,epsilon,y);
cout<<«n»<<» Нажмите любую клавишу»;
getch(); //Считать символ с клавиатуры
return 0;
}
Результати виконання програми.
**********Программа вычисления значения функции F(x)*********
Сколько знаков после запятой вывести на экран 6
1.357433
Нажмите любую клавишу
Блок-схема№1 до завдання №1
Завдання №2. Використовуючи схему Горнера обчислити два значення поліному. Скласти блок-схему та програму. У програмі передбачити можливість введення вхідних даних як з клавіатури, так і з файлу INPUT.TXT, що міститься в поточній директорії, та використання функцій або процедур користувача.
| № варіанту | Поліном |
Значення x |
| 13 |
|
x1=0,321; x2=-0,889 |
Текст програми.
//Программа вычисления значения полинома
#include <stdio.h> //подключение библиотек
#include <conio.h> //библиотека считывания значений с клавиатуры
float y (float x); //объявление функции
int main(void)
{
float x1,x2,y1,y2; //описание переменных
int a,b;
FILE *infile; //показатель на структуру типа FILE
printf(«n*****Программа вычисления значения полинома*****»);
printf(«nСколько знаков после запятой вывести на экран? «);
scanf(«%d», &a); //Считывается с клавиатуры точность выведения
printf(«nВвести значение Х: n 1) из файла»);
printf(«n 2) с клавиатурыn»);
scanf(«%d», &b); //считывание с клавиатуры начальных данных
if (b == 1) //указание на то, что b равно 1
{
if ((infile = fopen(«input.txt», «rt»))== NULL)
{ //открыли файл для чтения
fprintf(stderr, «Нельзя открыть файл.n»);//Выдаёт сообщение при ошибке
return 1;
} //открытие файла
fscanf (infile, «%f»,&x1);
fscanf (infile, «%f»,&x2);
} //считывание значений х1 и х2 из файла input.txt
else
{
printf(«Введите значение Х1n»); //считывание значений х1 и х2 с клавиатуры
scanf(«%f», &x1);
printf(«Введите значение Х2n»);
scanf(«%f», &x2);
};
y1 = y(x1);
y2 = y(x2);
printf(«nЗначение полинома в точке X1=», x1);
printf(«%.*fn»,a, y1);
printf(«Значение полинома в точке X2=», x2);
printf(«%.*fn»,a, y2);
printf(«nНажмите любую клавишу на клавиатуре»);
getch(); //читается символ с клавиатуры
fclose(infile); //Закрывается файл input.txt
return 0; //Завершение работы программы
}
float y (float x) //обозначение функции вычисления полинома
{
return ((((2.4*x+4.6)*x+6.8)*x+8.0)*x+0.2)*x+2.4;//сама функция (полином)
}
Результати виконання програми.
*****Программа вычисления значения полинома*****
Сколько знаков после запятой вывести на экран? 6
Ввести значение Х:
1) из файла
2) с клавиатуры
2
Введите значение Х1
0.321
Введите значение Х2
-0.889
Значение полинома в точке X1=3.570466
Значение полинома в точке X2=5.307651
Нажмите любую клавишу на клавиатуре
Блок-схема до завдання №2
![]()
![]()
![]()
![]()
![]()
![]()
![]()
Завдання №3. Скласти блок-схему та програму табулювання функції на проміжку [a, b] з заданим кроком h з використанням циклу з після умовою. Програма, крім того, повинна побудувати графік функції на вказаному проміжку з побудовою всіх точок, обчислених при табулюванні.
| № варіанту | Функція |
a |
b |
h |
| 13 |
|
1 | 6 | 0.2 |
Текст програми.
// Программа табуляции функции на
// промежутке с заданным шагом и построением графика
#include <stdio.h> //Открытие библиотечных функций
#include <graphics.h> //Функция подключения графики
#include <math.h> //Функция подключения математических вычислений
#include <conio.h> //Чтение символов с клавиатуры
float F (float x); //Объявление функции Y
int main()
{
float a,b,h,y,max,i; //Описание переменных
int gerr; //Ошибка графики
int g_driver, g_mode; //Графический драйвнр и режим
int XMAX, YMAX,j; //Ширина и высота графика
char msg[5];
printf(«*****Программа табуляции функции Y на промежутке [a,b] с шагом h*****n»);
printf(«nВведите значение начала табуляции: а = «);
scanf(«%f», &a);
printf(«nВведите значение конца табуляции: b = «);
scanf(«%f», &b);
printf(«nВведите значение шага табуляции: h = «);
scanf(«%f», &h);
i=a; max=0;
do
{
y=F(i); //табуляция Y
if (fabs(y)>max) max=fabs(y);
printf(«nx = %.3ft y = %.3f», i, y);//Выведение значения У на экран
i=i+h;
}
while (i <= b);
printf(«nnДля выведения графика нажмите любую клавишу»);
getch();
detectgraph(&g_driver, &g_mode); //Определение графического адаптера и графического режима
initgraph(&g_driver, &g_mode, «»); //Инициализация графической системы
if ((gerr = graphresult()) != grOk)
printf(«nОшибка графики: %sn», grapherrormsg(gerr)); //Выдача сообщения об ошибке
cleardevice(); //Очистка экрану
XMAX=getmaxx(); YMAX=getmaxy(); //Определение максимальных значений X и Y
setbkcolor(0); //Установка цвета фона
setcolor(14); // Установка текущего цвета рисования
setlinestyle(0,0,2); // Установка стиля линий: тип — сплошная, толщина=2
line(0,YMAX/2,XMAX,YMAX/2);//Построение осей координат
line(XMAX,YMAX/2,XMAX-10,YMAX/2-10);
line(XMAX,YMAX/2,XMAX-10,YMAX/2+10);
line(XMAX/2,0,XMAX/2,YMAX);
line(XMAX/2,0,XMAX/2-10,10);
line(XMAX/2,0,XMAX/2+10,10);
i=a;
j=0;
settextstyle(1,0,0);
setusercharsize(1, 1, 3, 2);
do
{
y=F(i);
setcolor(14);
setlinestyle(1,0,3);
circle(j*XMAX*h/(b-a),(YMAX/2-y*YMAX/(2*max)),2); //Выведение точек табуляции
sprintf(msg, «%.2f», i);
outtextxy(j*XMAX*h/(b-a),YMAX/2,msg); //Значения на оси Х
setcolor(15);
setlinestyle(0,0,2);
line(j*XMAX*h/(b-a), YMAX/2-3,j*XMAX*h/(b-a), YMAX/2+3); //Розметка на оси Х
j=j+1;
i=i+h;
}
while (i <= b);
for (i=a,j=0; i<=b;j++, i=i+(b-a)/XMAX) //Выведение всех точек на промежутке [a,b]
putpixel(j,(YMAX/2-F(i)*YMAX/(2*max)),14);
getch(); //Чтение символа с клавиатуры
closegraph(); //Закрытие графического режима
return 0; //Завершение работы программы
}
float F (float x) //Вычисление функции в заданной точке X
{
return exp(1/sin(x)); //Сама функция
} //Конец программы
Результати виконання програми.
*****Программа табуляции функции Y на промежутке [a,b] с шагом h*****
Введите значение начала табуляции: а = 1
Введите значение конца табуляции: b = 6
Введите значение шага табуляции: h = 0.2
x = 1.600 y = 2.719
x = 1.800 y = 2.792
x = 2.000 y = 3.003
x = 2.200 y = 3.445
x = 2.400 y = 4.395
x = 2.600 y = 6.958
x = 2.800 y = 19.790
x = 3.000 y = 1195.346
x = 3.200 y = 0.000
x = 3.400 y = 0.020
x = 3.600 y = 0.104
x = 3.800 y = 0.195
x = 4.000 y = 0.267
x = 4.200 y = 0.317
x = 4.400 y = 0.350
x = 4.600 y = 0.366
x = 4.800 y = 0.366
x = 5.000 y = 0.352
x = 5.200 y = 0.322
x = 5.400 y = 0.274
x = 5.600 y = 0.205
x = 5.800 y = 0.116
x = 6.000 y = 0.028
Для выведения графика нажмите любую клавишу.
Графік для завдання №3

Блок-схема для завдання № 3
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
Завдання №4. Скласти блок-схему та програму розв’язання задачі, згідно свого варіанту. Програма повинна передбачити можливість введення вхідних даних як з клавіатури, так і з файлу ZAD4.DAT. Результати роботи повинні виводитись як на екран, так і у файл ZAD4.REZ.
Вхідні данні, розміщені у текстовому файлі, мають такий формат:
-
спочатку в одному рядку через пропуск йдуть два числа M та N –розмірність матриці, якщо матриця прямокутна та одне число N – якщо матриця квадратна;
-
далі у M (N для квадратної матриці) рядках через пропуск йдуть N- чисел – дані відповідних комірок матриці;
-
якщо в умові є вказівки, то у вказаному форматі можуть бути зміни.
Вхідні дані повинні мати формат, передбачений умовою задачі.
-
№ варіанту Умова задачі 13 У квадратній матриці знайти кількість нульових елементів, для яких сума індексів парна.
Текст програми.
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
void main(){
int ar[20][20],i,j,a,e,l,m,sum;
div_t x;
clrscr();printf(«n Програма визначення нульових елементўв матрицўn»);
printf («n ввести матрицю з клавiатури(1) чи з файлу zad4.dat(2):»);
scanf («%d»,&a);
if (a==1)
{printf(«введтiь розмiрнiсть квадратноi матрицi:»);
scanf(«%d»,&e);clrscr();
for (j=0;j<e;j++)
{for(i=0;i<e;i++)
{ printf(«n Введiть[%d][%d] елемент матрицi:»,j+1,i+1);
scanf(«%d»,&ar[i][j]);clrscr();
}}}else {
FILE *fp;
fp=fopen(«zad4.dat»,»r»);
if (fopen(«zad4.dat»,»r»)==NULL)
{printf(«n не можу вiдкрити файл»);
goto end;}else{
fscanf(fp,»%d»,&e);
for (j=0;j<e;j++)
{for (i=0;i<e;i++)
{ fscanf(fp,»%d»,&ar[i][j]);
}}fclose(fp);
}}
printf(«n Mатриця виглядить так:n»);
for (j=0;j<e;j++)
{ printf(«n «);
for(i=0;i<e;i++)
{printf(«%d «,ar[i][j]);
}} j=0;i=0;sum=0;
for (j=0;j<e;j++){
for(i=0;i<e;i++)
{m=i+j;
x = div(m,2);
if(x.rem==0)
{if (ar[i][j]==0){sum++;}}}}
printf(«n нульових елементўв матрицў=%d»,sum);
FILE *fp;
fp=fopen(«zad4.res»,»w»);
fprintf(fp,»n нульових елементўв матрицў=%d»,sum);fclose(fp);
printf(«n Результат у файлi zad4.res «);
end:
printf(«n press anykey «);
getch(); clrscr();}
Результат виконання.
Програма визначення нульових елементів матриці ввести матрицю з клавiатури(1) чи з файлу zad4.dat(2):2
Матриця виглядить так:
3 1 2 3
4 5 6 7
8 9 10 11
12 13 14 15
нульових елементів матриці=0
Результат у файлi zad4.res
press any key
Блок-схема
Так ні
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
Список використаної літератури
1. Петров В.Н. Информационные системы. – СПб.: Питер, 2002.
2. Культин Н.Б. Программирование на Object Pascal в Delphi5. – Спб.: БХВ – Санкт – Петербург, 2000.
3. Жоголев Е.А. Введение в технологию программирования. — М.:»ДИАЛОГ МГУ», 1998.
