首页 > 解决方案 > 输入变量使用随机值而不是我希望它们使用的值

问题描述

主函数中的输入 V、A 和 e 采用随机值。相反,我想通过输入给它们赋值。我认为这是因为变量未在图形函数中初始化,但这些值来自结构。我做错了什么?

完整代码:

struct Edge {
    int src, dest, weight;
};

struct Graph {
    int V;
    int E;
    struct Edge* edge;
};

struct Graph* createGraph(int V, int E)
{
    struct Graph* graph = malloc(sizeof *graph);
    graph->V = V;
    graph->E = E;
    graph->edge = (struct Edge*)malloc(E * sizeof(struct Edge));
    return graph;
};

...

int main()
{
    int V = 0;
    int A = 0;
    int e = 0;
    int E = 0;
    int cidade = 0;
    int aeroporto = 0;
    int cidade1 = 0;
    int cidade2 = 0;
    int custo = 0;

    printf("Caso haja aeroportos, o vertice 0 e o ceu onde todos os aeroportos se ligam.\n");
    printf("Caso nao haja aeroportos, o vertice 0 e uma cidade.\n\n");
    printf("Introduza o numero de cidades: \n");
    scanf("%d", &V);
    printf("Introduza o numero de aeroportos: \n");
    scanf("%d", &A);
    printf("Introduza o numero de estradas: \n");
    scanf("%d", &e);
    printf("\n");

    E = A + e;

    struct Graph* graph = createGraph(V, E);

    for (int i = 0; i < A; i++) {
        printf("Introduza a cidade e o custo de construcao do aeroporto: \n");
        scanf("%d %d", &cidade, &aeroporto);

        graph->edge[i].src = cidade;
        graph->edge[i].dest = 0; // vértice "céu"
        graph->edge[i].weight = aeroporto;
    }

    for (int j = 0; j < e; j++) {
        printf("Introduza as cidades e o custo da estrada: \n");
        scanf("%d %d %d", &cidade1, &cidade2, &custo);

        graph->edge[j].src = cidade1;
        graph->edge[j].dest = cidade2;
        graph->edge[j].weight = custo;
    }

    KruskalMST(graph);

    return 0;
}

标签: cdebuggingcodeblocks

解决方案


推荐阅读