Int main(){
double a, b, h, x, res, s, y;
int n, k, zn=-1;
// Ввод исходных данных
cout << "Vvedite a b h n: " << endl;
cin >> a >> b >> h >> n;
// Вычисление суммы
for (x=a; x<=b; x+=h){
res = s = x;
for (k=1; k<=n; k++){
s *= zn * pow(x,2) / ((2*k+1)*2*k);
res += s;
}
y = sin(x);
cout << res << " \tY(x) = sin(" << x << ") = " << y;
cout << "\t|Y(x) - S(x)| = " << fabs(y-res) << endl;
}
// Вывод результата
cout << "Press any key..." << endl;
getch();
return 0;
}
Результат выполнения программы.

Задание №4
В одномерном целочисленном массиве (размер массива (не более 20) и значения его элементов вводить с клавиатуры) вычислить произведение элементов массива, расположенных между максимальным и минимальным элементами.
Листинг 4.1
#include <iostream.h>
#include <conio.h>
Int main(){
typedef int mas[20]; // определение типа массив
mas a; // определение массива А
unsigned short int iMaxA, iMinA, n, p, i, k, min, max;
cout << "Input n(<=20):\t";
cin >> n;
cout << "\nArray a:" << endl;
for (i=0; i<n; i++){
cout << "\nInput value of a[" << i+1 << "]:\t";
cin >> a[i];
}
min = max = 0;
p = 1;
for (i=0; i<n; i++){
for (k=1; k<n-1; k++){
iMaxA = (a[i] > a[k]) ? i : k;
iMinA = (a[i] < a[k]) ? i : k;
}
if (a[iMaxA] > a[max]) max = iMaxA; // были ли уже числа больше
if (a[iMinA] < a[min]) min = iMinA; // были ли уже числа меньше
}
cout << "\nMax value of array \"a\" is:\t" << a[max] << endl;
cout << "Min value of array \"a\" is:\t" << a[min] << endl;
while(max != min){
if (max > min){ // максимальный элемент расположен после минимального
p *= a[max];
max--;
}
else { // максимальный элемент перед минимальным
p *= a[max];
max++;
}
}
p *= a[min];
cout << "\nProizvedenie = " << p << endl;
cout << "\n\nPress any key to exit" << endl;
getch();
return 0;
}
Результат выполнения программы.

Задание №5
В двухмерном целочисленном массиве (размеры массива N, M и значения его элементов вводить с клавиатуры) найти указанное значение.
Массив в памяти разместить динамически (с использованием операций new и delete), ввод исходных данных и вывод полученных результатов выполнить в основной функции, а решение задачи оформить в виде отдельной функции пользователя. Не использовать глобальных переменных.
Найти сумму элементов, расположенных на главной диагонали.

Т.к. нужно определить сумму элементов, расположенных на главной диагонали, то матрица является квадратной, поэтому M=N.
Листинг 5.1. Функция main
#include <iostream.h>
#include <conio.h>
int summ_main_diag(int n, int **a);
Int main(){
int **a, i, j, n, m, summ;
cout << "Input N (M=N):\t";
cin >> n;
// Значение M=N, т.к. матрица квадратная
m = n;
a = new int *[n];
for (i=0; i<n; i++)
a[i] = new int [m];
cout << "\nInput A" << endl;
for (i=0; i<n; i++)
for (j=0; j<m; j++){
cout << "a[" << i+1 << "][" << j+1 << "] = ";
cin >> a[i][j];
}
cout << "\nMatrix A:" << endl;
for (i=0; i<n; i++){
for (j=0; j<m; j++)
cout << "\t" << a[i][j];
cout << endl;
}
summ = summ_main_diag(n, a);
cout << "Summa zna4eniy glavnoj diagonali = " << summ << endl;
delete []a;
cout << "\nPress any key to exit..." << endl;
getch();
return 0;
}
Листинг 5.2. Функция summ_main_diag
int summ_main_diag(int n, int **a){
int i, s=0;
for (i=0; i<n; i++)
s += a[i][i];
return s;
}
Результат выполнения программы.

Задание №6
Написать программу обработки файла типа запись, содержащую следующие пункты меню: «Создание», «Просмотр», «Коррекция» (добавление новых данных или редактирование старых), «Решение индивидуального задания».
Каждая запись должна содержать следующую информацию о студентах:
- фамилия и инициалы;
- год рождения;
- номер группы;
- оценки за семестр: по физике, математике, информатике, химии;
- средний балл.
Организовать ввод исходных данных, средний балл рассчитать по введенным оценкам.
Содержимое всего файла и результаты решения индивидуального задания записать в текстовый файл.
Распечатать анкетные данные студентов, сдавших сессию на 8, 9 и 10.
Листинг 6.1
#include <io.h>
#include <stdio.h>
#include <conio.h>
struct Students{
char FIO[30];
int year_birthday;
int num_group;
int balls[4];
double s_ball;
};
Students student;
FILE *Fs, *Ft; // файл структуры и текстовый соответственно
char fs_name[] = "students.dat";
char ft_name[] = "result.txt";
int size = sizeof(Students);
// прототипы функций
void create();
void add();
bool view();
void out(Students, int);
void edit(int);
void save(Students *, int);
void zadanie();
void main(){
int kod, kod_edit, edit_number;
Ft = fopen(ft_name, "w");
while(1){
puts("\n1 - Create\t2 - View\t3 - Edit\t4 - Zadanie\t0 - Exit\n");
puts("Input the code here: ");
scanf("%d", &kod);
switch(kod){
case 0:
fclose(Ft);
return;
case 1: // Create File
create();
if(!Fs){
puts("\nCreate Error!");
return;
}
break;
case 2: // View
if (!view()){
puts("\n\nError View!\n");
return;
}
break;
case 3: // Edit
puts("\n1 - Add\t2 - Edit\n");
scanf("%d", &kod_edit);
switch(kod_edit){
case 1: // Add new record
add();
puts("Add a new line");
break;
case 2:
// Edit record
view();
printf("\n\nVvedite nomer izmenyaemoj zapisi:\t");
scanf("%d", &edit_number);
edit(edit_number);
///////
break;
}
break;
case 4:
zadanie();
break;
}
}
getch();
}
/*
* Функция для создания нового пустого файла структуры
*/
void create(){
Fs = fopen(fs_name, "wb");
puts("\nFile Created!\n");
}
/*
* Функция для добавления новой записи в структуру
*/
void add(){
double fiz, mat, inf, khi, sball;
Fs = fopen(fs_name, "ab");
printf("\nFIO - ");
fflush(stdin);
gets(student.FIO);
printf("\nBirthday Year, Number Group - ");
scanf("%d %d", &student.year_birthday, &student.num_group);
printf("\nInput Balls: fizik, matem, informatic, khimya - ");
scanf("%d %d %d %d", &student.balls[0], &student.balls[1],
&student.balls[2], &student.balls[3]);
fiz = student.balls[0];
mat = student.balls[1];
inf = student.balls[2];
khi = student.balls[3];
sball = (fiz + mat + inf + khi) / 4;
printf("%6.2lf", sball);
student.s_ball = sball;
fwrite(&student, size, 1, Fs);
fclose(Fs);
}
/*
* Отобржажение файла структуры на дисплее
*/
bool view(){
int i = 1;
Fs = fopen(fs_name, "rb");
if (!Fs)
return false;
printf("\n\t--------------- Informations ---------------\n");
fprintf(Ft, "\n\n\n\t--------------- Informations ---------------\n");
while(1){
if(!fread(&student, size, 1, Fs)) break;
out(student, i);
i++;
}
puts("\n\n\n");
fclose(Fs);
return true;
}
/*
* Отображение одной записи на дисплее
* Вх. параметры:
* - s типа структуры Students
* - i - для отображения порядкового номера (счётчик) ->
* ->исп. для вывода номера записи, в файл не записывается
*/
void out(Students s, int i=0){
printf("\n%d. %s - %d, group: %d; Fizik: %d, Matem: %d, Informatic: %d, Khimiya: %d, Sredni ball: %1.2lf", i, s.FIO, s.year_birthday, s.num_group, s.balls[0], s.balls[1], s.balls[2], s.balls[3], s.s_ball);
fprintf(Ft, "\n%s - %d, group: %d; Fizik: %d, Matem: %d, Informatic: %d, Khimiya: %d, Sredni ball: %1.2lf", s.FIO, s.year_birthday, s.num_group, s.balls[0], s.balls[1], s.balls[2], s.balls[3], s.s_ball);
}
void edit(int edit_number){
Students *st, newStudent;
int descriptor, i, kol;
long len;
printf("\nEdit student:\nFIO - ");
fflush(stdin);
gets(newStudent.FIO);
printf("\nBirthday Year, Number Group - ");
scanf("%d %d", &newStudent.year_birthday, &newStudent.num_group);
printf("\nInput Balls: fizik, matem, informatic, khimya - ");
scanf("%d %d %d %d", &newStudent.balls[0], &newStudent.balls[1], &newStudent.balls[2], &newStudent.balls[3]);
newStudent.s_ball = (newStudent.balls[0]+newStudent.balls[1] + newStudent.balls[2] + newStudent.balls[3]) / 4;
Fs = fopen(fs_name, "rb");
descriptor = fileno(Fs);
len = filelength(descriptor);
kol = len/size;
st = new Students[kol]; // 138
for (i=0; i<kol; i++){
fread((st+i), size, 1, Fs);
}
fclose(Fs);
st[edit_number-1] = newStudent;
for (i=0; i<kol; i++)
out(st[i], i+1);
save(st, kol);
delete []st;
}
void save(Students *st, int num){
int i;
Fs = fopen(fs_name, "wb");
for (i=0; i<num; i++)
fwrite(&st[i], size, 1, Fs);
fclose(Fs);
}
/**
* Выполнение индивидуального задания
* 1 Вариант:
* - Распечатать анкетные данные студентов, сдавших ->
* ->сессию на 8, 9 и 10.
*/
void zadanie(){
Students *st;
int descriptor, i, j=0, kol;
long len;
printf("\n ------- Studenti sdavwie sesiyu na 8, 9, 10 ------- ");
fprintf(Ft, "\n ------- Studenti sdavwie sesiyu na 8, 9, 10 ------- ");
Fs = fopen(fs_name, "rb");
descriptor = fileno(Fs);
len = filelength(descriptor);
kol = len/size;
st = new Students[kol];
for (i=0; i<kol; i++){
fread((st+i), size, 1, Fs);
}
fclose(Fs);
for (i=0; i<kol; i++){
if (st[i].balls[0]>=8 && st[i].balls[1]>=8 && st[i].balls[2]>=8 && st[i].balls[3]>=8)
out(st[i],0);
}
delete []st;
}
Результат выполнения программы.

