Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
2
Добавлен:
30.05.2020
Размер:
717.31 Кб
Скачать

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 Вивід даних в файл

Соседние файлы в папке другие