Алгоритмічні мови програмування

Контрольна робота з теми:

“Алгоритмічні мови програмування”

Студентка групи Пзс-402

Казюка Олена

Завдання №1. Скласти блок схему та програму обчислення значення функції y = f ( x ) у точціx 0 з точністю. Вхідні дані x 0 таa містяться у самій програмі, точність вводиться з клавіатури.

№ варіантуF ( x )X 0A
130.46520.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); //Считать число знаков epsilon

Y=1-(cos(x-a))/(sqrt(a+(cos(x+a)/sin(x+a))))+exp(a*x); //функция, значение которой надо найти

Printf(“%.*f\n”,epsilon, y);

Cout<<“\n”<<” Нажмите любую клавишу”;

Getch(); //Считать символ с клавиатуры

Return 0;

}

Результати виконання програми.

**********Программа вычисления значения функции F(x)*********

Сколько знаков после запятой вывести на экран 6

1.357433

Нажмите любую клавишу

Блок-схема№1 до завдання №1

Завдання № 2. Використовуючи схему Горнера обчислити два значення поліному. Скласти блок-схему та програму. У програмі передбачити можливість введення вхідних даних як з клавіатури, так і з файлу INPUT. TXT, що міститься в поточній директорії, та використання функцій або процедур користувача.

№ варіантуПоліномЗначення x
13x1 = 0,321; x2 = -0,889

Текст програми.

//Программа вычисления значения полинома

#include <stdio. h> //подключение библиотек

#include <conio. h> //библиотека считывания значений с клавиатуры

Floaty (floatx); //объявление функции

Intmain(void)

{

Floatx1,x2,y1,y2; //описание переменных

Inta, 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(“Введите значение Х1\n”); //считывание значений х1 и х2 с клавиатуры

Scanf(“%f”, &;x1);

Printf(“Введите значение Х2\n”);

Scanf(“%f”, &;x2);

};

Y1 = y(x1);

Y2 = y(x2);

Printf(“\nЗначение полинома в точке X1=”, x1);

Printf(“%.*f\n”,a, y1);

Printf(“Значение полинома в точке X2=”, x2);

Printf(“%.*f\n”,a, y2);

Printf(“\nНажмите любую клавишу на клавиатуре”);

Getch(); //читается символ с клавиатуры

Fclose(infile); //Закрывается файл input. txt

Return 0; //Завершение работы программы

}

Floaty (floatx) //обозначение функции вычисления полинома

{

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 з використанням циклу з після умовою. Програма, крім того, повинна побудувати графік функції на вказаному проміжку з побудовою всіх точок, обчислених при табулюванні.

№ варіантуФункціяabh
13160.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 = %.3f\t y = %.3f”, i, y);//Выведение значения У на экран

I=i+h;

}

While (i <= b);

Printf(“\n\nДля выведения графика нажмите любую клавишу”);

Getch();

Detectgraph(&;g_driver, &;g_mode); //Определение графического адаптера и графического режима

Initgraph(&;g_driver, &;g_mode, “”); //Инициализация графической системы

If ((gerr = graphresult()) != grOk)

Printf(“\nОшибка графики: %s\n”, 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Результат у файлizad4.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. Культин Н. Б. Программирование наObjectPascalвDelphi5. – Спб.: БХВ – Санкт – Петербург, 2000.

3. Жоголев Е. А. Введение в технологию программирования. – М.:”ДИАЛОГ МГУ”, 1998.


Алгоритмічні мови програмування