Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МЕТОДИЧКА прикладное ПРОГРАМ.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
1.06 Mб
Скачать

Список представляет собой таблицу

Фамилия и инициалы

Курс

Группа

1

Иванов А.А.

1

ИСТ – 101

2

Сидоров Б.Б.

1

АСУ – 120

.

Каждая строка содержит информацию об одном студенте. Таблица содержит n строк. Предположим, что n не превышает 200 и ее значение вводится в процессе работы программы. Требуется написать программу, которая печатает перечень групп, имеющих задолжников с указанием их количества в группе.

# include <iostream.h>

# include <fstream.h>

# include <string.h>

# include <iomanip.h>

# include <stdlib.h>

const int N=200;

struct student

{

char name[30];

int kurs;

char gr[7];

};

struct group

{

char gr[7];

int ng;

};

class massiv // класс массив структур

{

private:

student st[N]; // исходная таблица задолжников

int n; // n – число строк в исходной таблице

group z[N]; // перечень групп, имеющих задолжников

int k; // к – число групп в перечне

public:

void inputstudentfile (); // ввод массива задолжников из файла

void outputstudent (); // вывод массива задолжников на экран

void outputgroup (); // вывод перечня групп задолжников на экран

void outputgroupfile (); // вывод перечня групп задолжников в файл

void perechengroup (); // формирование перечня групп задолжников

};

// Ввод исходного массива задолжников из файла

void massiv::inputstudentfile ()

{

ifstream fin;

char file[10];

char iniz[7]; // рабочая переменная для инициалов

cout << ”Имя файла:” ;

cin >> file;

fin.open(file);

if( fin==NULL) {cout<<”Файл не открыт.\n”; exit(1);}

n=0;

do {

fin >> st[i].name >> iniz >> st[i].kurs >> st[i].gr ;

strcat( st[i].name, “ “); // добавление инициалов через

strcat( st[i].name, iniz); // пробел к фамилии

n++;

}while (fin.good());

n--;

fin.close();

}

// Вывод массива задолжников на экран

void massiv::outputstudent ()

{

cout<< “Фамилия и инициалы Курс Группа \n”;

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

cout << setw(16)<< st[i].name << setw(7)<< st[i].kurs << setw(8) << st[i].gr << endl ;

}

// Формирование перечня групп, имеющих задолжников

void massiv::perechengroup ()

{

int i,j,fl;

k=0;

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

{

fl=1;

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

if (strcmp(st[i].gr, z[j].gr) == 0) { fl=1; z[j].ng++; }

if (fl==1) { strcpy(z[k].gr, st[i].gr); z[k].ng =1; k++; }

}

}

// Вывод перечня групп, имеющих задолжников, на экран

void massiv::outputgroup ()

{

cout<< “ Группа Кол-во \n”;

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

cout << setw(8)<< z[i].gr << setw(8)<< z[i].ng << << endl ;

}

// Вывод перечня групп, имеющих задолжников, в файл

void massiv::outputgroupfile ()

{

оfstream fout;

char file[10];

int i;

cout << ”Имя файла:” ;

cin >> file;

fout.open(file);

if( !fout.good()) {cout<<”Файл не открыт.\n”; exit(1);}

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

fout << setw(8)<< z[i].gr << setw(8)<< z[i].ng << << endl ;

fout.close();

}

/*основная функция программы */

void main()

{

massiv a; // Объект класса massiv

a.inputstudentfile ();

cout << ” Исходный массив структур. \n” ;

a.outputstudent ();

a.perechengroup ();

cout << ” Перечень групп, имеющих задолжников. \n” ;

a.outputgroup (); a.outputgroupfile (); }