Реферат: Алгоритмічні мови програмування: мова С

Міністерствоосвіти і науки УкраїниБердичівський політехнічний коледж

 

 

 

 

 

 

 

 

 

 

 

 

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

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

2010 рік.


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

Завдання №1. Скласти блок схему та програму обчисленнязначення функції y=f(x) у точці x0<sub/>з точністю<sub/>/>. Вхідні дані x0та<sub/>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

/>

1 0.25

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

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

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

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

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

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

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

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

№ варіанту F (x)

X0

A

/>

2

/>

1.2876

/>

0.00001

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

 

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

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

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

#include<stdio.h>

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

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

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

{

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

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

 int epsilon;

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

 a=PI/3;

 printf("\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\n",epsilon,y);

 printf("\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 (floatx); /*объявление функции вычисления полинома*/

int main(void)

 {

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

 int n, v;

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

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

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

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

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

 scanf("%d", &v);

 if (v ==1)

 {

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

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

 fprintf(stderr,«Нельзя открыть файл.\n»);

 return 1;

 }

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

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

 else

 {

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

 printf("\nX1=");

 scanf("%f",&x1);

 printf(«Введите значение Х2\n»);

 printf("\nX2=");

 scanf("%f",&x2);

 };

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

 y2 = F(x2);

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

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

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

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

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

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

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

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

}

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

{

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

/>

1 0.25

Відповідь№3


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

 

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

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

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

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

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

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

 {

 floata,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\n»);

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

 scanf("%f", &a);

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

 scanf("%f", &b);

 printf("\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("\nx = %.3f\t y = %.3f", i,y); /*виведення значень У на екран*/

 i=i+h;

 }

 while (i<= b);

 printf("\n\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("\nПомилка графiки: %s\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);

 getch(); /*зчитування символу з клавiатури*/

 closegraph();/*закриття графiчноi системи*/

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

}

float F (floatx) /*обчислення значення заданоi функцii в точцi X*/

{

return sin(x)/x;

}

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

 

Програматабулювання функцii Y на промiжку [a,b] з кроком h

Введiтьзначення початку промiжку табуляцii: а = 0

Введiтьзначення кiнця промiжку табуляцii: b = 1

Введiтьзначення кроку табуляцii: h = 0.25

x = 0.000 y =1.000

x = 0.250 y =0.990

x = 0.500 y =0.959

x = 0.750 y =0.909

.Для виведенняграфіка функції натисніть будь-яку клавішу

 

Графік длязавдання №3.

 

/>


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

/>


/> />

/> /> /> /> /> <td/> /> /> /> /> />

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

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

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

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

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

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

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

Відповідь №4

 

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

 

#include<stdio.h>

#include<conio.h>

#include<math.h>

#include<stdlib.h>

void main(void)

{

intA[20][20],i,j,a,y,w,x,v;

clrscr();

printf("\nЗавдання№4: Кількість невід'ємних елементів в квадратній матриці\n");

printf ("\nВвести значення Х з клавіатури(1) або з файлу zad4.dat(2):");

scanf("%d",&a);

if (a==1)

{

printf("\nВведіть розмірність матриці:");

scanf("%d",&w);

for(j=0;j<w;j++)

{

for(i=0;i<w;i++)

{

clrscr();

printf("\nВведіть[%d][%d] елемент матриці:",j+1,i+1);

scanf("%d",&A[i][j]);

}

}

clrscr();

}

else

{

FILE *fp;

fp=fopen(«zad4.dat»,«r»);

if(fopen(«zad4.dat»,«r»)==NULL)

{

printf("\nНе можливо відкрити файл, бо його нема");

goto

end;

}

else

{

fscanf(fp,"%d",&w);

for(j=0;j<w;j++)

{

for(i=0;i<w;i++)

{

fscanf(fp,"%d",&A[i][j]);

}

}

fclose(fp);

}

}

printf("\nMатриця має такий вигляд:\n");

for(j=0;j<w;j++)

{

printf("\n");

for(i=0;i<w;i++)

{

printf("%d",A[i][j]);

}

}

v=0;y=0;

for(j=0;j<w;j++)

{

for(i=0;i<v;i++)

{

if (A[i][j]>0)

{ y++;

}

else{;}

}v++;

if (w<v) gotook;

}ok:

printf ("\nЕлементів невід'ємних під головною діагоналлю:%d",y);

FILE *fp;

fp=fopen(«zad4.res»,«w»);

fprintf(fp,"\nЕлементів невід'ємних під головною діагоналлю:%d",y);

fclose(fp);

printf("\nРезультат в файлі zad4.res ");

end:printf("\nНатисніть будь-яку клавішу для завершення \n ");

getch();

clrscr();}

 

Результатвиконання

 

Завдання №4:Кількість невід'ємних елементів в квадратній матриці

Ввести значення Хз клавіатури(1) або з файлу zad4.dat(2):2

Mатриця має такийвигляд:

3 1 2 3

4 5 6 7

8 9 10 11

12 13 14 15

Елементівневід'ємних під головною діагоналлю:6

Результат в файліzad4.res

Натиснітьбудь-яку клавішу для завершення


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

/> 


такні

/> /> /> /> /> /> /> /> /> /> <td/> /> /> /> /> /> /> /> /> <td/> />

/>/>Література

1. Герберд Шилдт«Си для профессиональных программистов»

2. Ал. Стивенс«Техника програмирования на Турбо Си»

3. Шолмов Л.И.«Техника програмирования на Си»

4. Б.В. Керниган, Д.М.Ричи. «Язык Си»

5. Мюррэй Хилл, НьюДжерси Бьярн Страустрап «C++»

6. Громов, Титаренко«Программирование на Си»

7. Марченко А.Л C++.Бархатный путь

8. С.С. ГайсарянОбъектно-ориентированные технологии проектирования прикладных программныхсистем

еще рефераты
Еще работы по информатике, программированию