Консультация № 189502
25.05.2016, 18:32
0.00 руб.
0 4 1
Здравствуйте! Прошу помощи в следующем вопросе:

#include "stdafx.h"
#include <fstream>
#include <string>
#include <stdio.h>
#include <iostream>
#include <time.h>
#include <string>
using namespace std;

struct Sport
{
char Name[10];
int win, lose, draw;
float points;
}Sp[20];

int rec_size = 0;

void write_record()
{
int i = 0;
char path[20] = "sport.txt";
FILE *File; File = fopen(path, "wt");
while (i<rec_size)
{
fprintf(File, "Name: %s\nWins - %d Lose - %d Draw - %d\nPoints = %f\n\n", Sp[i].Name, Sp[i].win, Sp[i].lose, Sp[i].draw, Sp[i].points);
i++;
}
fclose(File);
}

void add_record(char Name[10])
{

for (int i = 0; i <= sizeof(Name); i++)
Sp[rec_size].Name[i] = Name[i];

Sp[rec_size].draw = Sp[rec_size].lose = Sp[rec_size].win = Sp[rec_size].points = 0;
rec_size++;
write_record();
}

bool match_str(char str1[10], char str2[10])
{
bool flag = false;
for (int i = 0; i <= strlen(str2); i++)
if (str1[i] != str2[i])
return false;
return true;


}

void edit_record(char Name[10], int win, int lose, int draw, float pnts)
{
bool flag = false;
for (int i = 0; i < rec_size; i++)
if (match_str(Sp[i].Name, Name))
{
Sp[i].win = win;
Sp[i].lose = lose;
Sp[i].draw = draw;
Sp[i].points = pnts;
flag = true;
}
if (flag)
write_record();
else
printf("Team not found!\n");
}

void Show_record()
{
int i = 0;
while (i< rec_size)
{
printf("Name: %s\n", Sp[i].Name);
printf("Wins - %d Lose - %d Draw - %d\nPoints = %f \n\n", Sp[i].win, Sp[i].lose, Sp[i].draw, Sp[i].points);
i++;
}
}
void task5()
{


int key, w = 0, l = 0, d = 0; char buf[10]; float pnts = 0;

while (1)
{
printf("1 - New team\n2 - Edit team\n3 - Show table\n4 - quit\n");
scanf("%d", &key);
switch (key)
{
case 1: { printf("Enter new team:"); scanf(" %s", &buf); add_record(buf); break; }
case 2: { printf("Enter name team:"); scanf(" %s", &buf); printf("Enter count of w\\l\\d and points\n"); scanf("%d\n%d\n%d\n%f", &w, &l, &d, &pnts); edit_record(buf, w, l, d, pnts); } break;
case 3: {Show_record(); } break;
case 4: exit(0);
default:
break;
}
}
}


int main()
{
task5();
system("pause");
return 0;
}




Можете это объяснить:
struct Sport
{
char Name[10];
int win, lose, draw;
float points;
}Sp[20];

int rec_size = 0;



что тут мы делаем? почему именно так сделали?

Обсуждение

давно
Мастер-Эксперт
325460
1469
26.05.2016, 10:05
общий
Адресаты:
Здравствуйте.

struct Sport
{
char Name[10];
int win, lose, draw;
float points;
}Sp[20];


Объявили структуру
struct Sport
{
char Name[10];
int win, lose, draw;
float points;
}

выигранные проигранные ничьи и очки(float т.к. очки могут быть не целыми)

Sp[20] объявили массив из 20 структур.

Какие еще вопросы?
Об авторе:
to live is to die
давно
Посетитель
399158
228
26.05.2016, 10:16
общий
Для чего вообще обьявлять структуру? И вопрос, что мы делаем в match_str?
давно
Мастер-Эксперт
325460
1469
26.05.2016, 11:11
общий
Адресаты:
match_str - это для сравнения строк в ашей программе функция используется чтобы сравнивать введенное имя с уже существующими.

Структура объявляется для удобства использования и читабельности кода.
Об авторе:
to live is to die
давно
Мастер-Эксперт
325460
1469
30.05.2016, 09:39
общий
это ответ
Здравствуйте, Посетитель - 399158!

Здравствуйте.

struct Sport
{
char Name[10];
int win, lose, draw;
float points;
}Sp[20];


Объявили структуру
struct Sport
{
char Name[10];
int win, lose, draw;
float points;
}

выигранные проигранные ничьи и очки(float т.к. очки могут быть не целыми)

Sp[20] объявили массив из 20 структур.

match_str - это для сравнения строк в ашей программе функция используется чтобы сравнивать введенное имя с уже существующими.

Структура объявляется для удобства использования и читабельности кода.
Об авторе:
to live is to die
Форма ответа