- •Міністерство освіти і науки України Машинобудівний коледж Сумського державного університету Циклова комісія спеціальності 5.05010101
- •Щоденник-звіт з навчальної практики База практики________________________________________________________
- •Завдання на навчальну практику студента
- •1 Теоретичні відомості
- •2 Практичне завдання
- •2.1 Завдання № 1.
- •2.2 Завдання № 2. Програмування алгоритмів, що розгалужуються.
- •2.3 Завдання № 3. Програмування циклічних алгоритмів.
- •2.4 Завдання № 4. Програмування з використанням одновимірних масивів.
- •2.5 Завдання № 5. Покажчики. Програмування з використанням динамічних двовимірних масивів.
- •2.6 Завдання № 6. Програмування з використанням рядків.
- •2.7 Завдання № 7. Програмування з використанням Структур.
- •2.8 Завдання № 8. Програмування з використанням функцій.
- •2.9 Завдання № 9. Програмування з використанням рекурсії.
- •2.10 Завдання № 10. Програмування з використанням файлів.
- •2.11 Завдання № 11.
- •Висновок
- •Література
2.8 Завдання № 8. Програмування з використанням функцій.
Вивести на екран таблицю значень функції Y(x) і її розкладання в ряд S(x) з точністю 0,1 таблиць. 8.1. Вивести число ітерацій, необхідне для досягнення заданої точності. Обчислення S(x) і Y(x) оформити у вигляді функцій.
Код програми:
#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <iomanip>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
typedef double(*uf)(double, double, int &);
void tabl(double, double, double, double, uf);
double y(double, double, int &);
double s(double, double, int &);
int main(){ setlocale(0, "rus"); cout << setw(8) << "x" << setw(15) << "y(x) " << setw(10) << "k" << endl; tabl(0.1, 0.8, 0.1, 0.1, y); cout << endl;
cout << setw(8) << "x" << setw(15) << "s(x) " << setw(10) << "k" << endl; tabl(0.1, 0.8, 0.1, 0.1, s);
cout << endl; system("pause"); return 0;}
void tabl(double a, double b, double h, double eps, uf fun)
{b = 2,5; int k = 0;double sum;
for (double x = a; x<b + h / 2; x += h)
{sum = fun(x, eps, k);
cout << setw(8) << x << setw(15) << sum << setw(10) << k << endl; }}
double y(double x, double eps, int &k){ double p;
p = 3.14; return (3*pow(x,2)-6*p*x+2*pow(p,2))/12;}
double s(double x, double eps, int &k){ double a, c, sum;
sum = a = c = x;k = 1;while (fabs(c) >eps) {
c = cos(k*x)/pow(k,2);
a *= -c;sum += a;k++;} return sum;}
Рис. 8 Результат 8 завдання
2.9 Завдання № 9. Програмування з використанням рекурсії.
Обчислити середнє значення елементів одновимірного масиву.
Код програми:
#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <stdio.h>
#include <time.h>
using namespace std;
double sz(int);double szr(int);double s;
int a[100], i, n;int main()
{srand((unsigned)time(NULL));
cout << "vvedite razmer mass: n=";
cin >> n;cout << endl;
for (i = 0; i < n; i++){
a[i] = rand() % 100 - 32; // рандомное заполнение массива
cout << a[i] << " ";}cout << endl;
cout << "s(ne rekurs)=" << sz(i) << endl;
cout << "s(rekurs)=" << szr(i) << endl;
system("pause");return 0;}
double sz(int i){s = 0;
for (i = 0; i <= n; i++) s += a[i];
s /= n;return s;}
double szr(int i)
{if (i<0) return 0;
else return s += a[i];}
Рис. 9 Результат 9 завдання
2.10 Завдання № 10. Програмування з використанням файлів.
Ведомость студентів, що здавали сесію, містить ФІО і оцінки по чотирьох предметах. Вивести список студентів, що здали сесію з середнім балом більше 7.
Код програми:
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
using namespace std;
FILE *fl;
typedef struct
{
char fio[30];
int matem;
int fiz;
int pro;
int php;
} TStudent;
TStudent stud[30]; // Массив структур
char name[20]; // Имя файла
int nst = 0; // Число введенных структур
int menu(); // Меню
void nnf(); // Ввести имя файла
void newf(); // Создать новый файл
void spisok(); // Ввести список
void opf(); // Открыть файл
void resc(); // Вывести результат на экран
void resf(); // Вывести результат в файл
int main()
{
setlocale(0, "rus");
while (true)
{
switch (menu())
{
case 1: nnf(); break;
case 2: newf(); break;
case 3: spisok(); break;
case 4: opf(); break;
case 5: resc(); break;
case 6: resf(); break;
case 7: return 0;
default: cout << "Даного пункта не существует, попробуйте еще раз!";
}
cout << endl;
system("pause");
system("cls");}
}
int menu() // Меню
{
setlocale(0, "rus");
cout << "Выберите действие:" << endl;
cout << "1. Ввести имя файла" << endl;
cout << "2. Зоздать новый файл" << endl;
cout << "3. Ввести даные" << endl;
cout << "4. Открыть файл" << endl;
cout << "5. Вывести результат" << endl;
cout << "6. Вывести в файл" << endl;
cout << "7. Выход" << endl;
int i;
cout << endl;
cout << "---> ";
cin >> i;
return i;
}
void nnf() // Ввести имя файла
{
cout << "Введите имя файла" << endl;
cin >> name;
}
void newf() // Создать новый файл
{
if ((fl = fopen(name, "wb")) == NULL)
{
cout << "Ошибка при создании файла" << endl;
system("pause");
exit(1);
}
cout << "Файл создан" << endl;
fclose(fl);
}
void spisok() // Ввести список
{
if ((fl = fopen(name, "rb+")) == NULL)
{
cout << "Ошибка при создании файла" << endl;
system("pause");
exit(1);
}
cout << "Введите число студентов " << endl;
cin >> nst;
for (int i = 0; i<nst; i++)
{
cout << "Введите имя: ";
cin >> stud[i].fio;
cout << "Введите оценку по математике: ";
cin >> stud[i].matem;
cout << "Введите оценку по физике: ";
cin >> stud[i].fiz;
cout << "Введите оценку по проектированию: ";
cin >> stud[i].pro;
cout << "Введите оценку по PHP: ";
cin >> stud[i].php;
fwrite(&stud[i], sizeof(TStudent), 1, fl);
}
fclose(fl);
}
void opf() // Открыть файл
{
if ((fl = fopen(name, "rb")) == NULL)
{
cout << "Ошибка при открытии " << endl;
system("pause");
exit(1);
}
nst = 0; TStudent std;
while (true)
{
int nwrt = fread(&std, sizeof(TStudent), 1, fl);
if (nwrt != 1) break;
stud[nst] = std;
cout << stud[nst].fio << " " << stud[nst].matem << " " << stud[nst].fiz << " " << stud[nst].pro << " " << stud[nst].php <<" " <<endl;
nst++;
}
fclose(fl);
}
void resc() // Вывести результат на экран
{
cout << "Студенты в которых средний бал больше 7 - " << endl;
double sbal[99];
int k = 7;
for (int i = 0; i < nst;i++)
{
sbal[i] = (stud[i].fiz + stud[i].matem + stud[i].php + stud[i].pro) / 4;
if (sbal[i] > k)
{
cout << stud[i].fio <<" "<< sbal[i] << endl;
}
}
}
void resf() // Вывести результат в файл
{
char namet[30];
FILE *ft;
cout << "Введите имя файла" << endl;
cin >> namet;
if ((ft = fopen(namet, "w")) == NULL)
{
cout << "Ошибка при создании " << endl;
system("pause");
exit(1);
}
char s[80];
double sbal;
int k = 7;
for (int i = 0; i < nst; i++)
{
sbal = (stud[i].fiz + stud[i].matem + stud[i].php + stud[i].pro) / 4;
if (sbal > k)
{
strcpy(s, stud[i].fio);
strcat(s, "\n"); // Добавление разделителя строк
fputs(s, ft);
}
}
fclose(ft);}
Рис. 10 Результат головне меню завдання
Рис. 11 Ввод даних
Рис. 12 Вивід даних на екран
Рис. 13 Вивід результата на екран
Рис. 14 Вивід даних в файл