Алгоритмічні мови програмування
Контрольна робота з теми:
“Алгоритмічні мови програмування”
Студентка групи Пзс-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.