BESofБиблиотека рефератов и курсовых

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

Обновлено

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

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

Студентка групи Пзс-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); //Считать число знаков epsilony=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)*********Сколько знаков после запятой вывести на экран 61.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; //показатель на структуру типа FILEprintf("\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.txtelse{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.txtreturn 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Введите значение Х10.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); //Объявление функции Yint 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); //табуляция Yif (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 и Ysetbkcolor(0); //Установка цвета фонаsetcolor(14); // Установка текущего цвета рисованияsetlinestyle(0,0,2); // Установка стиля линий: тип - сплошная, толщина=2line(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.2x = 1.600 y = 2.719x = 1.800 y = 2.792x = 2.000 y = 3.003x = 2.200 y = 3.445x = 2.400 y = 4.395x = 2.600 y = 6.958x = 2.800 y = 19.790x = 3.000 y = 1195.346x = 3.200 y = 0.000x = 3.400 y = 0.020x = 3.600 y = 0.104x = 3.800 y = 0.195x = 4.000 y = 0.267x = 4.200 y = 0.317x = 4.400 y = 0.350x = 4.600 y = 0.366x = 4.800 y = 0.366x = 5.000 y = 0.352x = 5.200 y = 0.322x = 5.400 y = 0.274x = 5.600 y = 0.205x = 5.800 y = 0.116x = 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.