Смекни!
smekni.com

Алгоритмічні мови програмування мова С (стр. 1 из 2)

Міністерство освіти і науки України

Бердичівський політехнічний коледж

Контрольна робота

з предмету “Алгоритмічні мови програмування: мова С”

2010 рік.

Завдання до контрольної роботи №2.

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

. Вхідні дані x0таaмістяться у самій програмі, точність вводиться з клавіатури.
№ варіанту F (x) X0 A
2
1.2876
0.00001

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

№ варіанту Поліном Значення x
2 x5-2.22x4+3.33x3-4.44x2+5.55x-6.66 x1=0.111; x2=-0.999

Завдання №3. Скласти блок-схему та програму табулювання функції на проміжку [a, b] з заданим кроком hз використанням циклу з після умовою. Програма, крім того, повинна побудувати графік функції на вказаному проміжку з побудовою всіх точок, обчислених при табулюванні.

№ варіанту Функція a b h
2
0 1 0.25

Завдання №4. Скласти блок-схему та програму розв’язання задачі, згідно свого варіанту. Програма повинна передбачити можливість введення вхідних даних як з клавіатури, так і з файлу ZAD4.DAT. Результати роботи повинні виводитись як на екран, так і у файл ZAD4.REZ.

Вхідні данні, розміщені у текстовому файлі, мають такий формат:

· спочатку в одному рядку через пропуск йдуть два числа M та N –розмірність матриці, якщо матриця прямокутна та одне число N – якщо матриця квадратна;

· далі у M (N для квадратної матриці) рядках через пропуск йдуть N- чисел – дані відповідних комірок матриці;

· якщо в умові є вказівки, то у вказаному форматі можуть бути зміни.

Вхідні дані повинні мати формат, передбачений умовою задачі.

№ варіанту Умова задачі
2 У квадратній матриці підрахувати кількість невід’ємних елементів під головною діагоналлю.

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

. Вхідні дані x0таaмістяться у самій програмі, точність вводиться з клавіатури.
№ варіанту F (x) X0 A
2
1.2876
0.00001

Відповідь №1.

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

/*Задача №1 програма вычисления значения функции*/

#include<conio.h> /*Для ввода символов с клавиатуры*/

#include<stdio.h>

#include <math.h> //Для ввода математических функций

const double PI=3.1415926; /*Вводконстанты*/

main() /*Начало программы*/

{

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

float x,a,y; /*Описание переменных*/

int epsilon;

x=1.2876; /*Описание переменных первого порядка*/

a=PI/3;

printf("&bsol;nСколько знаков после запятой вывести на экран ");

scanf("%d",&epsilon); /*Считать число знаков epsilon*/

y=(cos(x+3*a)/sin(x+3*a))/sqrt(1+(sin(x+1.5*PI)*sin(x+1.5*PI)));

printf("%.*f&bsol;n",epsilon,y);

printf("&bsol;n Нажмителюбуюклавишу");

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

return 0;

}

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

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

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

0.28028

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

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



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

№ варіанту Поліном Значення x
2 x5-2.22x4+3.33x3-4.44x2+5.55x-6.66 x1=0.111; x2=-0.999

Відповідь №2

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

/*Задание №2*/

/*Заголовочные файлы*/

#include <stdio.h> /*объявление библиотечных функций для ввода-вывода */

#include <conio.h> /*считывание символов с клавиатуры*/

float F (float x); /*объявление функции вычисления полинома*/

intmain(void)

{

float x1,x2,y1,y2; /*описание типов переменных*/

intn, v;

FILE *infile; /*показатель на структуру типа FILE*/

printf("&bsol;n&bsol;n***Программа вычисления значения функции полинома в заданной точке X***&bsol;n&bsol;n");

printf("Сколько знаков после запятой выводить на экран? ");

scanf("%d", &n); /*считывание с клавиатуры значения точности выведения результата*/

printf("&bsol;nВвести значение Х: &bsol;n 1) из файла; &bsol;n 2) с клавиатуры?&bsol;n");

scanf("%d", &v);

if (v == 1)

{

if ((infile = fopen("input.txt", "rt"))== NULL)

{ /*открытие файла input.txt для чтения*/

fprintf(stderr, "Нельзя открыть файл.&bsol;n");

return 1;

}

fscanf (infile, "%f %f", &x1, &x2);

} /*чтение значений х1 и х2 из файла input.txt*/

else

{

printf("Введите значение Х1&bsol;n"); /*чтение значений х1 и х2 с клавiатури*/

printf("&bsol;nX1=");

scanf("%f", &x1);

printf("Введите значение Х2&bsol;n");

printf("&bsol;nX2=");

scanf("%f", &x2);

};

y1 = F(x1); /*вызов функции F()*/

y2 = F(x2);

printf("&bsol;nЗначение полинома в точке X1=%1.3f равно: ", x1);

printf("%.*f&bsol;n", n, y1);

printf("&bsol;nЗначение полинома в точке X2=%1.3f равно: ", x2);

printf("%.*f&bsol;n", n, y2);

printf("&bsol;nНажмите любую клавишу...");

getch(); /*считывание символа с клавиатуры*/

fclose(infile); /*закрытие файла input.txt*/

return 0; /*завершение роботы программы*/

}

float F (float x) /*определение функции вычисления полинома*/

{

return ((((x-2.22)*x+3.33)*x-4.44)*x+5.55)*x-6.66;

}

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

***Программа вычисления значения функции полинома в заданной точке X***

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

Ввести значение Х:

1) из файла;

2) с клавиатуры?

Значение полинома в точке X1=0.111 равно: -6.094421

Значение полинома в точке X2=-0.999 равно: -23.161737

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


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


Завдання №3. Скласти блок-схему та програму табулювання функції на проміжку [a, b] з заданим кроком hз використанням циклу з після умовою. Програма, крім того, повинна побудувати графік функції на вказаному проміжку з побудовою всіх точок, обчислених при табулюванні.

№ варіанту Функція a b h
2
0 1 0.25

Відповідь №3

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

#include <stdio.h> /*об'явлення бiблiотечних функцiй для вводу-виводу*/

#include <graphics.h> /*виводу графiки*/

#include <math.h> /*математичних обчислень*/

#include <conio.h> /*зчитування символiв з клавiатури*/

float F (float x); /*об'явлення функцii обчислення Y*/

int main() /*початок програми*/

{

float a,b,h,y,max,i; /*опис типiв змiнних*/

int g; /*помилка графiки*/

int g_driver, g_mode; /*графiчний драйвер та режим*/

int q, w,j; /*ширина та висота графiка*/

char m[5];

printf("Програма табулювання функцii Y на промiжку [a,b] з кроком h&bsol;n");

printf("&bsol;nВведiть значення початку промiжку табуляцii: а = ");

scanf("%f", &a);

printf("&bsol;nВведiть значення кiнця промiжку табуляцii: b = ");

scanf("%f", &b);

printf("&bsol;nВведiть значення кроку табуляцii: h = ");

scanf("%f", &h);

a=a+0.000000000000000001; /*вводимо значення вiдмiнне вiд нуля*/

i=a;

max=0;

do

{

y=F(i); /*табуляцiя Y*/

if (fabs(y)>max) max=fabs(y);

printf("&bsol;nx = %.3f&bsol;t y = %.3f", i, y); /*виведення значень У на екран*/

i=i+h;

}

while (i <= b);

printf("&bsol;n&bsol;nДлявиведенняграфiкафункцii натиснiтьбудь-якуклавiшу...");

getch();

detectgraph(&g_driver, &g_mode); /*визначенняграфiчногоадаптерутаграфiчногорежиму*/

initgraph(&g_driver, &g_mode, ""); /*iнiцiалiзацiяграфiчноi системи*/

if ((g = graphresult()) != grOk)

printf("&bsol;nПомилкаграфiки : %s&bsol;n", grapherrormsg(g)); /*видачаповiдомленнявразi помилкивiдкриттяфайлу */

cleardevice(); /* очисткаекрану */

q=getmaxx();

w=getmaxy(); /* визначення максимальних значень X та Y*/

setbkcolor(0); /*встановлення кольору фону - чорний*/

setcolor(15); /* встановлення поточного кольору малювання - бiлий*/

setlinestyle(0,0,2); /* встановлення стилю лiнiй: тип -суцiльна, товщина=2*/

line(0,w/2,q,w/2); /*побудова координатних вiсей*/

line(q,w/2,q-10,w/2-10);

line(q,w/2,q-10,w/2+10);

line(q/2,0,q/2,w);

line(q/2,0,q/2-10,10);

line(q/2,0,q/2+10,10);

i=a;

j=0;

settextstyle(2,0,0);

setusercharsize(1, 1, 3, 2);

do

{

y=F(i);

setcolor(15);

setlinestyle(1,0,3);

circle(j*q*h/(b-a),(w/2-y*w/(2*max)),2); /*виведенняточоктабуляцii*/

sprintf(m, "%.2f", i);

outtextxy(j*q*h/(b-a),w/2,m); /*значеннянавiсi Х*/

setcolor(15);

setlinestyle(0,0,2);

line(j*q*h/(b-a), w/2-3,j*q*h/(b-a), w/2+3); /*розмiткавiсi Х*/

j=j+1;

i=i+h;

}

while (i <= b);

for (i=a,j=0; i<=b;j++, i=i+(b-a)/q) /*виведенняусiхточокграфiкунапромiжку [a,b]*/

putpixel(j,(w/2-F(i)*w/(2*max)),14);