繁体   English   中英

气泡排序和计数char数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM