Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на C / C++


РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты в разделе

Коцюрбенко Алексей aka Жерар
Статус: Мастер-Эксперт
Рейтинг: 433
∙ повысить рейтинг »
Асмик Гаряка
Статус: Советник
Рейтинг: 78
∙ повысить рейтинг »
CradleA
Статус: Профессионал
Рейтинг: 75
∙ повысить рейтинг »

∙ С / С++

Номер выпуска:1875
Дата выхода:05.06.2016, 15:51
Администратор рассылки:Андрей Кузнецов aka Dr_Andrew (Старший модератор)
Подписчиков / экспертов:19 / 14
Вопросов / ответов:1 / 1

Консультация # 189502: Здравствуйте! Прошу помощи в следующем вопросе: #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; fl...

Консультация # 189502:

Здравствуйте! Прошу помощи в следующем вопросе:

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



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

Дата отправки: 25.05.2016, 18:32
Вопрос задал: Посетитель - 399158 (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует CradleA (Профессионал):

Здравствуйте, Посетитель - 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 - это для сравнения строк в ашей программе функция используется чтобы сравнивать введенное имя с уже существующими.

Структура объявляется для удобства использования и читабельности кода.

Консультировал: CradleA (Профессионал)
Дата отправки: 30.05.2016, 09:39
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное