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