首页 > 解决方案 > 为什么这种卡片分类方法不起作用?

问题描述

作为更大计划的一部分,我被要求进行卡片分类练习。

我必须使用函数“aleatorio”(在练习中提供)并通过交换对总共 100 次来对它们进行排序。该套牌是西班牙套牌,所以这就是它具有这些价​​值的原因。

我使用一个简单的 for 循环完成了它,并认为这已经足够了,但是当我调试它时,通常牌组的某些条目的值为6.9533558075915288e-310. 代码有什么问题?

#include <stdlib.h>
#include <time.h>

#define AS 1
#define DOS 2
#define TRES 3
#define CUATRO 4
#define CINCO 5
#define SEIS 6
#define SIETE 7
#define SOTA 0.5
#define CABALLO 0.5
#define REY 0.5

int aleatorio(int a, int b) {
    return a + rand() % (b - a + 1);
}

int main() {
    double cartas[40] = {
        AS, DOS, TRES, CUATRO, CINCO, SEIS, SIETE, SOTA, CABALLO, REY,
        AS, DOS, TRES, CUATRO, CINCO, SEIS, SIETE, SOTA, CABALLO, REY,
        AS, DOS, TRES, CUATRO, CINCO, SEIS, SIETE, SOTA, CABALLO, REY,
        AS, DOS, TRES, CUATRO, CINCO, SEIS, SIETE, SOTA, CABALLO, REY
    }, carta;
    int k,i,j;
    srand((unsigned) time(NULL));

    /*Bucle de barajar*/
    for (k = 0;k < 100; k++){
        i = aleatorio(1, 40);
        j = aleatorio(1, 40);
        carta = cartas[i];
        cartas[i] =  cartas[j];
        cartas[j] = carta;
    }

    return 0;
}

标签: c

解决方案


推荐阅读