Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
3й курс гр.904тн отчет задания 1 Камалов.docx
Скачиваний:
1
Добавлен:
20.11.2019
Размер:
67.05 Кб
Скачать

Листинг

League.h

#include <fstream>

#ifndef LEAGUE_H

#define LEAGUE_H

using namespace std;

class league {

public:

char t[30];

int p;

int w;

int d;

int l;

int pts;

int gf;

int ga;

int gd;

void read_table (league*,int &n, ifstream&);

void write_table (league*, int);

void write_table_to_file (league*, int, ofstream&);

void sorting_pts (league*, int);

void sorting_gf (league*, int);

void find_team (league*, char*, char*, int);

void round_result (league*,league, league, int);

};

void league:: read_table (league a[],int &n, ifstream &in)

{

int i=0;

while (!in.eof()) {

in>>a[i].t>>a[i].p>>a[i].w>>a[i].d>>a[i].l>>a[i].gf>>a[i].ga;

a[i].pts=a[i].w*3+a[i].d;

a[i].gd=a[i].gf-a[i].ga;

i++;

}

n=i;

}

void league:: write_table (league a[], int n)

{

ofstream fout("in.txt");

fout<<a[0].t<<' '<<a[0].p<<' '<<a[0].w<<' '<<a[0].d<<' ';

fout<<a[0].l<<' '<<a[0].gf<<' '<<a[0].ga;

for (int i=1; i<n; i++)

{

fout<<endl;

fout<<a[i].t<<' '<<a[i].p<<' '<<a[i].w<<' '<<a[i].d<<' ';

fout<<a[i].l<<' '<<a[i].gf<<' '<<a[i].ga;

}

fout.close();

}

void league:: write_table_to_file (league a[], int n, ofstream &f)

{

//table's head

f.width(49);

f.fill('-');

f<<'-';

f<<'\n';

f.fill(' ');

f<<'|';

f.setf(ios::left);

f.width(15);

f<<"Team";

f.width(1);

f<<'|';

f.width(3);

f<<"P";

f.width(1);

f<<'|';

f.width(3);

f<<"W";

f.width(1);

f<<'|';

f.width(3);

f<<"D";

f.width(1);

f<<'|';

f.width(3);

f<<"L";

f.width(1);

f<<'|';

f.width(3);

f<<"PTS";

f.width(1);

f<<'|';

f.width(3);

f<<"GF";

f.width(1);

f<<'|';

f.width(3);

f<<"GA";

f.width(1);

f<<'|';

f.width(3);

f<<"GD";

f.width(1);

f<<'|';

f<<'\n';

f.width(49);

f.fill('-');

f<<'-'<<'\n';

f.fill(' ');

int i;

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

{

f<<'|';

f.width(15);

f<<a[i].t;

f.width(1);

f<<'|';

f.width(3);

f<<a[i].p;

f.width(1);

f<<'|';

f.width(3);

f<<a[i].w;

f.width(1);

f<<'|';

f.width(3);

f<<a[i].d;

f.width(1);

f<<'|';

f.width(3);

f<<a[i].l;

f.width(1);

f<<'|';

f.width(3);

f<<a[i].pts;

f.width(1);

f<<'|';

f.width(3);

f<<a[i].gf;

f.width(1);

f<<'|';

f.width(3);

f<<a[i].ga;

f.width(1);

f<<'|';

f.width(3);

f<<a[i].gd;

f.width(1);

f<<'|';

f<<'\n';

}

f.width(49);

f.fill('-');

f<<'-'<<'\n';

}

void league:: sorting_pts (league a[], int n)

{

int i,j;

league c;

for (i=0; i<n-1; i++) {

for (j=0; j<n-1-i; j++) {

if (a[j].pts<a[j+1].pts) {

c=a[j];

a[j]=a[j+1];

a[j+1]=c;

}

if (a[j].pts==a[j+1].pts){

if (a[j].gd<a[j+1].gd){

c=a[j];

a[j]=a[j+1];

a[j+1]=c;

}

}

}

}

}

void league:: sorting_gf (league a[], int n)

{

int i,j;

league c;

for (i=0; i<n-1; i++) {

for (j=0; j<n-1-i; j++) {

if (a[j].gf<a[j+1].gf) {

c=a[j];

a[j]=a[j+1];

a[j+1]=c;

}

if (a[j].gf==a[j+1].gf){

if (a[j].pts<a[j+1].pts){

c=a[j];

a[j]=a[j+1];

a[j+1]=c;

}

}

}

}

}

void league:: find_team (league a[], char *b1, char *b2, int n)

{

int i;

int min=a[0].d;

int max=a[0].gd;

strcpy(b1,a[0].t);

strcpy(b2,a[0].t);

for (i=1; i<n; i++) {

if (a[i].d<min) {

strcpy(b1,a[i].t);

min=a[i].d;

}

if (a[i].gd>max) {

strcpy(b2,a[i+1].t);

max=a[i].gd;

}

}

}

void league:: round_result (league a[], league b1, league b2, int n)

{

int i;

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

if (strcmp(b1.t,a[i].t)==0) {

if (b1.gf>b2.gf) {

a[i].p++;

a[i].w++;

a[i].gf=a[i].gf+b1.gf;

a[i].ga=a[i].ga+b2.gf;

}

if (b1.gf==b2.gf) {

a[i].p++;

a[i].d++;

a[i].gf=a[i].gf+b1.gf;

a[i].ga=a[i].ga+b2.gf;

}

if (b1.gf<b2.gf) {

a[i].p++;

a[i].l++;

a[i].gf=a[i].gf+b1.gf;

a[i].ga=a[i].ga+b2.gf;

}

}

if (strcmp(b2.t,a[i].t)==0){

if (b2.gf>b1.gf) {

a[i].p++;

a[i].w++;

a[i].gf=a[i].gf+b2.gf;

a[i].ga=a[i].ga+b1.gf;

}

if (b2.gf==b1.gf) {

a[i].p++;

a[i].d++;

a[i].gf=a[i].gf+b2.gf;

a[i].ga=a[i].ga+b1.gf;

}

if (b2.gf<b1.gf) {

a[i].p++;

a[i].l++;

a[i].gf=a[i].gf+b2.gf;

a[i].ga=a[i].ga+b1.gf;

}

}

}

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

a[i].pts=a[i].w*3+a[i].d;

a[i].gd=a[i].gf-a[i].ga;

}

}

#endif

Unit1.cpp

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

#include "League.h"

#include <fstream>

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

league a[30];

league b1, b2;

int n=0;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

ifstream fin ("in.txt");

//создаем шапку таблицы

StringGrid1->RowCount=2;

StringGrid1->Cells[0][0]="Team";

StringGrid1->Cells[1][0]='P';

StringGrid1->Cells[2][0]='W';

StringGrid1->Cells[3][0]='D';

StringGrid1->Cells[4][0]='L';

StringGrid1->Cells[5][0]="PTS";

StringGrid1->Cells[6][0]="GF";

StringGrid1->Cells[7][0]="GA";

StringGrid1->Cells[8][0]="GD";

a->read_table (a, n, fin);

//строим таблицу и записываем данные по строкам

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

{

StringGrid1->RowCount ++;

StringGrid1->Cells[0][i+1]=a[i].t;

StringGrid1->Cells[1][i+1]=a[i].p;

StringGrid1->Cells[2][i+1]=a[i].w;

StringGrid1->Cells[3][i+1]=a[i].d;

StringGrid1->Cells[4][i+1]=a[i].l;

StringGrid1->Cells[5][i+1]=a[i].pts;

StringGrid1->Cells[6][i+1]=a[i].gf;

StringGrid1->Cells[7][i+1]=a[i].ga;

StringGrid1->Cells[8][i+1]=a[i].gd;

}

StringGrid1->RowCount --;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button5Click(TObject *Sender)

{ //считываем текст с Edit1 и Edit2 и записываем в функции

strcpy (b1.t, AnsiString (Edit1->Text).c_str());

strcpy (b2.t, AnsiString (Edit2->Text).c_str());

b1.gf=StrToInt(Edit3->Text);

b2.gf=StrToInt(Edit4->Text);

a->round_result(a, b1, b2, n);

a->write_table (a, n);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)

{ //сортируем по очкам

a->sorting_pts (a, n);

a->write_table (a, n);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)

{ //сортируем по GF

a->sorting_gf (a,n);

a->write_table (a, n);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button4Click(TObject *Sender)

{ //поиск команд

char team_d[30];

char team_gd[30];

a->find_team (a, team_d, team_gd, n);

Memo1->Text=team_d;

Memo2->Text=team_gd;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button6Click(TObject *Sender)

{ //записываем в документ

ofstream out ("out.txt");

a->write_table_to_file(a,n,out);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button7Click(TObject *Sender)

{ //слияние двух списков

Memo3->Lines->Add(Memo1->Text);

Memo3->Lines->Add(Memo2->Text);

}

//---------------------------------------------------------------------------