Добавил:
polinakrasnoselskaya@mail.ru Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Контрольная работа Вариант 15 (Николаенко).docx
Скачиваний:
5
Добавлен:
31.05.2020
Размер:
1.81 Mб
Скачать

Int _tmain(int argc, _tchar* argv[])

{

setlocale(LC_ALL,"RUS");

int **a, i, j, n, m, max;

cout<<"Введите размерность матрицы ";

cin>>n>>m;

a=new int *[n];

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

a[i] = new int [m];

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

{

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

{

cout<<"a["<<i<<"]["<<j<<"]=";

cin>>a[i][j];

}

}

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

{

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

cout<<a[i][j]<<" ";

cout<<endl;

}

max=max_ngd(n,m,a);

cout<<"Максимальный элемент, лежащий ниже главной диагонали, равен "<<max<<endl;

delete []a;

system("pause");

}

Задание 6. Написать программу обработки файла типа запись, содержащую следующие пункты меню: «Создание», «Просмотр», «Коррекция» (добавление новых данных или редактирование старых), «Решение индивидуального задания».

Каждая запись должна содержать следующую информацию о студентах:

– фамилия и инициалы;

– год рождения;

– номер группы;

– оценки за семестр: по физике, математике, информатике, химии;

– средний балл.

Организовать ввод исходных данных, средний балл рассчитать по введенным оценкам.

Содержимое всего файла и результаты решения индивидуального задания записать в текстовый файл.

Распечатать анкетные данные студентов интересующей вас группы, имеющих средний балл выше введенного с клавиатуры.

#include "stdafx.h"

#include <iostream>

#include <io.h>

#include <stdio.h>

#include <conio.h>

using namespace std;

struct Students

{

char fio[100];

int god;

int grup;

int balls[4];

double sb;

};

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()

{

setlocale(LC_ALL,"rus");

int kod, kod_edit, edit_number;

Ft = fopen(ft_name, "w");

while(1)

{

puts("Введите пункт меню: ");

puts("\n1 - Создание\t2 - Просмотр\t3 - Коррекция\t4 - Индивидуальное задание\t0 - Выход\n");

scanf("%d", &kod);

switch(kod)

{

case 0:

fclose(Ft);

return;

case 1:

create();

if(!Fs)

{

puts("\nОшибка создания!");

return;

}

break;

case 2:

if (!view())

{

puts("\n\nОшибка создания!\n");

return;

}

break;

case 3:

puts("\n1 - Добавление новых данных\t2 - Редактирование старых данных\n");

scanf("%d", &kod_edit);

switch(kod_edit)

{

case 1:

add();

break;

case 2:

view();

printf("\n\nВведите номер студента:\t");

scanf("%d", &edit_number);

edit(edit_number);

break;

}

break;

case 4:

zadanie();

break;

}

}

getch();

}

void create()

{

Fs = fopen(fs_name, "wb");

puts("\nФайл создан!\n");

}

void add()

{

double fiz, mat, inf, khi, sball;

Fs = fopen(fs_name, "ab");

printf("Фамилия и инициалы - ");

fflush(stdin);

gets(student.fio);

printf("Год рождения - ");

scanf("%d", &student.god);

printf("Номер группы - ");

scanf("%d", &student.grup);

printf("Оценка по физике - ");

scanf("%d", &student.balls[0]);

printf("Оценка по математике - ");

scanf("%d", &student.balls[1]);

printf("Оценка по информатике - ");

scanf("%d", &student.balls[2]);

printf("Оценка по химии - ");

scanf("%d", &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.sb = sball;

fwrite(&student, size, 1, Fs);

fclose(Fs);

cout<<endl<<endl;

}

bool view()

{

int i = 1;

Fs = fopen(fs_name, "rb");

if (!Fs)

return false;

printf("\n\t--------------- Информация ---------------\n");

fprintf(Ft, "\n\n\n\t--------------- Информация ---------------\n");

while(1)

{

if(!fread(&student, size, 1, Fs)) break;

out(student, i);

i++;

}

puts("\n\n\n");

fclose(Fs);

return true;

}

void out(Students s, int i=0)

{

printf("\n%d. %s - %d, Группа: %d; Физика: %d, Математика: %d, Информатика: %d, Химия: %d, Средний балл: %1.2lf", i, s.fio, s.god, s.grup, s.balls[0], s.balls[1], s.balls[2], s.balls[3], s.sb);

fprintf(Ft, "\n%s - %d, Группа: %d; Физика: %d, Математика: %d, Информатика: %d, Химия: %d, Средний балл: %1.2lf", s.fio, s.god, s.grup, s.balls[0], s.balls[1], s.balls[2], s.balls[3], s.sb);

}

void edit(int edit_number)

{

Students *st, newStudent;

int descriptor, i, kol;

long len;

printf("\nРедактирование студента:\nФИО - ");

fflush(stdin);

gets(newStudent.fio);

printf("Год рождения - ");

scanf("%d", &newStudent.god);

printf("Номер группы - ");

scanf("%d", &newStudent.grup);

printf("Оценка по физике - ");

scanf("%d", &newStudent.balls[0]);

printf("Оценка по математике - ");

scanf("%d", &newStudent.balls[1]);

printf("Оценка по информатике - ");

scanf("%d", &newStudent.balls[2]);

printf("Оценка по химии - ");

scanf("%d", &newStudent.balls[3]);

newStudent.sb = (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];

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);

}

void zadanie()

{

Students *st;

int descriptor, i, j=0, kol, gr, sr;

long len;

printf("\n ------- Студенты интересующей группы и имеющие средний балл выше введенного с клавиатуры ------- ");

fprintf(Ft, "\n ------- Студенты интересующей группы и имеющие средний балл выше введенного с клавиатуры ------- ");

Fs = fopen(fs_name, "rb");

descriptor = fileno(Fs);

len = filelength(descriptor);

kol = len/size;

st = new Students[kol];

printf("Введите группу - ");

scanf("%d", &gr);

printf("Введите средний балл - ");

scanf("%d", &sr);

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

{

fread((st+i), size, 1, Fs);

}

fclose(Fs);

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

{

if (st[i].grup==gr && st[i].sb>sr)

out(st[i],0);

}

delete []st;

}