Referat.me

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

Вид работы: контрольная работа

Рубрика: Информатика и программирование

Размер файла: 42.83 Kb

Скачать файл: referat.me-134478.docx

Краткое описание работы: Блок-схема та програма обчислення значення функції y=f(x) у точці x0. Обчислення двох значень поліному з використанням схеми Горнера. Програма табуляції функції Y на проміжку [a,b] з шагом h. Програма визначення нульових елементів квадратної матриці.

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

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

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

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

Казюка Олена


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

№ варіанту F ( x ) X 0 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); //Считать число знаков 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> //библиотека считывания значений с клавиатуры

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("Введите значение Х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; //Завершение работы программы

}

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

№ варіанту Функція 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Результат у файл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.

Похожие работы

  • Проектування ітераційних алгоритмів

    Використання ітерацій для обчислення приблизних значень величин. Розробка ітераційних алгоритмів з перевіркою правильності введення даних. Побудова блок-схеми і програмування мовою Turbo Pascal обчислення значення функції, розкладеної в степеневий ряд.

  • Дослідження чисельних методів інтегрування

    Дослідження методів чисельного інтегрування Чебишева та Трапеції, порівняння їх точності. Способи розробки програми на компіляторі Turbo C++, яка знаходить чисельне значення вказаного інтегралу. Обґрунтування вибору інструментальних засобів програми.

  • Інтерполювання функцій за формулою Лагранжа

    Вираз інтерполяційного многочлена Лагранжа. Методи математичного пакету MathCad. Графічне зображення лінійної інтерполяції. Схема алгоритму прикладної програми lagr.pas. Лістинг модуля користувача та програмного модуля. Результат роботи програми lagr.pas.

  • Аналіз теоретичної бази інтерполювання функції

    Постановка задачі інтерполяції. Аналітичне визначення коефіцієнтів інтерполяційного многочлена. Метод Лагранжа, задача зворотної інтерполяції. Інтерполяційна формула Бесселя. Вибір оптимального алгоритму. Приклад програми обчислення значення функції.

  • Елементи та структура програми мови Паскаль

    Загальні відомості про мову програмування, історія створення та використовування. Програма мовою Паскаль складається з лексем і символів – розділювачів. Робота з масивами, створення алгортимів. Складання програм з використанням процедур та функцій.

  • Чисельне інтегрування та наближення функцій поліномами вищого порядку

    Чисельне інтегрування, формула Сімпсона, значення інтегралу від функцій та формули трапецій. Знаходження коренів рівняння методом Ньютона. Наближення функцій поліномами вищого порядку. Метод Ейлера та його модифікації. Визначення похибок розрахунків.

  • Розробка програми Sierpins, яка реалізує побудову рекурсивних кривих Серпінського

    Розгляд оригінального візерунку, що складається із суперпозиції чотирьох кривих. Проект реалізації алгоритму побудови цих кривих у вигляді програми функціональною мовою програмування Lisp. Головна особливість кривої Серпінського. Створення програми Serp.

  • Знаходження значення функції за допомогою інтерполяційної формули Бесселя

    Основні теоретичні відомості про метод знаходження значення функції у міжвузловій точці за допомогою інтерполяційної формули Бесселя та приклад його застосування. Розробка алгоритму за даним методом. Опис програми, лістинг та результати тестування.

  • Завдання з програмування на Visual Basic

    Обчислення наближеного значення суми спадного ряду. Складання блок-схеми та програми, яка б виводила на друк сгенерований, сформований та впорядкований масиви. Використання операторів умовного переходу If - Then - Else. Розроблення програми на VBA.

  • Реалізація функцій ABS(X), [X], {x}

    Використання математичного сопроцесора або його емулятора при програмуванні на мові асемблера з використанням дробових чисел. Створення програми на мові ASM-86, яка реалізує функції [x], {x}, |X|. Алгоритм перетворення цілого числа в дійсне та навпаки.