Главная Учебники - Разные Лекции (разные) - часть 32
Контрольна робота з теми:
“Алгоритмічні мови програмування”
Студентка групи Пзс-402 Завдання №1.
Скласти блок схему та програму обчислення значення функції y
=
f
(
x
)
у точціx
0
з точністю Текст програми
. //Программа вычисления значения функции #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("%.*f\n",epsilon,y); cout<<"\n"<<" Нажмите любую клавишу"; getch(); //Считать символ с клавиатуры return 0; } Результати виконання програми.
**********Программа вычисления значения функции F(x)********* Сколько знаков после запятой вывести на экран 6 1.357433 Нажмите любую клавишу Блок-схема№1 до завдання №1 Завдання
№
2.
Використовуючи схему Горнера обчислити два значення поліному. Скласти блок-схему та програму. У програмі передбачити можливість введення вхідних даних як з клавіатури, так і з файлу INPUT.TXT, що міститься в поточній директорії, та використання функцій або процедур користувача. Текст програми.
//Программа вычисления значения полинома #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("Введите значение Х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.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 Нажмите любую клавишу на клавиатуре Блок-схема до завдання №2 Завдання
№
3.
Скласти блок-схему та програму табулювання функції на проміжку [a
,
b
] з заданим кроком h
з використанням циклу з після умовою. Програма, крім того, повинна побудувати графік функції на вказаному проміжку з побудовою всіх точок, обчислених при табулюванні. Текст програми.
// Программа табуляции функции на // промежутке с заданным шагом и построением графика #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 = %.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 и 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- чисел – дані відповідних комірок матриці; · якщо в умові є вказівки, то у вказаному форматі можуть бути зміни. Вхідні дані повинні мати формат, передбачений умовою задачі. Текст програми.
#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.
|