[英]bubble sorting and counting a char array
我为C类编写了该程序。 它基本上将用户带到赛马场,显示不同马匹的赔率,并允许用户下注。 最初,我的讲师只希望我们将结果写入文本或二进制文件,因此,只要用户需要,就可以查看过去的结果。
他最近告诉我们,他希望我们包括气泡排序以将马分组,即,马1,马1,马1,马1,马2,马2 ...等。
我相信我可以使用strcmp()来弄清楚泡沫排序,但他还希望我们显示过去那匹马赢得比赛的次数。
我的问题是:我能否仅对char / string数组进行这样的显示? 我不想花我接下来的四个小时来建立无法解决的解决方案。
提前致谢,
ps这是程序那部分的功能。
void viewWinners() {
FILE *zacksTrackStats;
char horses[MAX_SIZE] = {0};
if ((zacksTrackStats = fopen("zacksTrackStats.txt", "r")) == NULL)
{
perror ("error");
exit (0);
}
while (fgets(horses, sizeof(horses), zacksTrackStats) != NULL)
{
printf ("%s", horses);
}
fclose(zacksTrackStats);
pause;
}
当然可以。 实际名称是“ horse 1”和“ horse 2”吗? 如果是这样,您可以将每匹马的数据存储在一个整数数组中。 如果没有,那么您必须制作一个查询表。 存储每匹马获胜次数的信息并打印结果。
完全有可能将txt转换为数字,反之亦然。
看看这个较早的文章: 将字符串转换为整数C
是的你可以。 要处理文件中的数据,可以使用fscanf
(或sscanf
)。
sscanf(char *source, format, &dest, ...)
例如 :
int occurences[NUMBER_OF_HORSES_MAX];
int count = 0;
int temp = 0;
int i;
for(i = 0; i < NUMBER_OF_HORSES_MAX; ++i)
{
occurences[i] = 0;
}
while (fgets(horses, sizeof(horses), zacksTrackStats) != NULL)
{
sscanf(horses, "%d", &temp);
occurences[temp] += 1;
printf ("Current horse : %s", horses);
count++;
}
for(i = 0; i < count; ++i)
{
printf("Horse %d has won %d times\n", i, occurences[i]);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.