Текстовый файл содержит информацию о команде софтбола. Каждая строка содержит данные, расположенные следующим образом:C Primer 5th - Task 14-6
4 JESSIE Joybat 5 2 1 1
Первый элемент является номером игрока, обычно в диапазоне 0-18. Второй элемент - имя игрока, а третья - фамилия игрока. Каждое имя - это одно слово. Следующий пункт - это официальные времена игрока на летучей мыши, за которым следует количество хитов, прогулок и пробегов в матче (ИКР). Файл может содержать данные для более чем одной игры, поэтому у одного и того же игрока может быть более одной строки данных, и могут быть данные для других игроков между этими линиями. Напишите программу, которая хранит данные в массиве структур. Структура должна иметь членов для представления имени и фамилии, бит летучих мышей, хитов, прогулок и ИКР (работает с ошибкой) и среднего значения ватин (для расчета позже). Номер игрока можно использовать как индекс массива. Программа должна читать до конца файла, и она должна содержать кумулятивные итоговые значения для каждого игрока.
Мир бейсбольной статистики - это задействованный. Например, прогулка или достижение базы при ошибке не засчитывается как бит-бит, но может привести к созданию RBI. Но все, что нужно сделать этой программе, - это прочитать и обработать файл данных, как описано ниже, не беспокоясь о том, насколько реалистичны данные.
Самый простой способ для продолжения программы - инициализировать содержимое структуры нулями, прочитать данные файла во временные переменные и затем добавить их в содержимое соответствующей структуры. После того, как программа закончит чтение файла, он должен затем вычислить среднее значение ватин для каждого игрока и сохранить его в соответствующем члене структуры. Среднее значение ватин рассчитывается путем деления совокупного количества обращений игрока на кумулятивное количество бит-бит; это должен быть расчет с плавающей запятой. Затем программа должна отображать кумулятивные данные для каждого игрока вместе с линией, показывающей комбинированную статистику для всей команды.
team.txt (текстовый файл, я работаю с):
4 Jessie Joybat 5 2 1 1
4 Jessie Joybat 7 3 5 3
7 Jack Donner 6 3 1 2
11 Martin Garder 4 3 2 1
15 Jaime Curtis 7 4 1 2
2 Curtis Michel 3 2 2 3
9 Gillan Morthim 9 6 6 7
12 Brett Tyler 8 7 4 3
8 Hans Gunner 7 7 2 3
14 Jessie James 11 2 3 4
12 Brett Tyler 4 3 1 3
Так как я новичок в C, или я неправильно задание от того, что было предложено изначально или это несправедливо сложно (я считаю, что это первый случай). Я так потерялся, что не могу придумать, как я могу заполнить по критерию индекса (номер игрока) каждую часть данных, следить за тем, имеет ли он больше одной игры, вычисляет и получает средний бат и затем распечатайте.
То, что я до сих пор:
#define LGT 30
struct profile {
int pl_num;
char name[LGT];
char lname[LGT];
int atbat[LGT/3];
int hits[LGT/3];
int walks[LGT/3];
int runs[LGT/3];
float batavg;
};
//It's wrong obviously but it's a starting point
int main(void)
{
FILE *flx;
int i,jc,flow=0;
struct profile stat[LGT]={{0}};
if((flx=fopen("team.txt","r"))==NULL) {
fprintf(stderr,"Can't read file team!\n");
exit(1);
}
for(jc = 0; jc < 11; jc++) {
fscanf(flx,"%d",&i);
stat[i].pl_num=i;
fscanf(flx,"%s",&stat[i].name);
fscanf(flx,"%s",&stat[i].lname);
fscanf(flx,"%d",&stat[i].atbat[flow]);
fscanf(flx,"%d",&stat[i].hits[flow]);
fscanf(flx,"%d",&stat[i].walks[flow]);
fscanf(flx,"%d",&stat[i].runs[flow]);
flow++;
}
}
Просто проверить: Если бы я был напечатать этот список для вас, вы могли бы решить эту проблему с ручкой и бумагой? Если нет, что вы не понимаете? Если бы вы могли, что вы не понимаете о написании кода, чтобы сделать это за вас? – Bart
Как я уже сказал, я новичок, это все, что я могу сказать вам, либо дать несколько треков, либо не беспокоить! – highlevelcoder
Ничего себе, успокойтесь, сделайте глубокий вдох ... выдохните. Особенно, когда начинающие задают домашние вопросы, приятно знать, понимают ли они проблему и просто испытывают трудности с ее переводом в код или если они еще не поняли, что именно они просят сделать. Я просто пытался проверить, кто из этих двух, потому что они требуют разных ответов. Кроме того, мой опыт показывает, что надежные старые ручки и бумага слишком мало используются новыми программистами, которые часто увязли, пытаясь запрограммировать свой выход из проблемы. Как только вы действительно высокого уровня, вы получите это. – Bart