Неисправность функции на языке c - PullRequest
0 голосов
/ 20 апреля 2020

Когда функция суммы вызывается с тем же аргументом из основной функции, она работает нормально, но когда эта функция суммы вызывается из функции проверки, она начинает работать со сбоями ??

Функция проверки имеет вид:

void check(int sum1, int sum2, int sum3) {
    int position;
    while (!(sum1 == sum2 && sum2 == sum3)) {
            position = sum_array(sum1, sum2, sum3);

            switch(position) {
            case 0 :
                pop(stack1);
                sum1 = sum(stack1);
                break;
            case 1 :
                pop(stack2);
                sum2 = sum(stack2);
                break;
            case 2 :
                pop(stack3);
                sum3 = sum(stack3);
                break;
   }
}
    printf("%d is the height", sum1);
}

Функция суммы:

int sum(struct stack* stack) {
    int temp_sum = 0;
    struct stack *stack1;
    stack1 = stack;
    while (stack1 -> top != -1)
        temp_sum = temp_sum + stack1 -> array[stack1 -> top --];
    return temp_sum;
}

Основная функция:

int main(void) {
    int n1, n2, n3, sum1, sum2, sum3;
    scanf("%d %d %d",&n1, &n2, &n3);

    stack1 = create_stack(n1);
    input(stack1, n1);
   // traverse(stack1);
    sum1= sum(stack1);
    printf("sum1 = %d",sum1);

    stack2 = create_stack(n2);
    input (stack2, n2);
    sum2 = sum(stack2);
    printf("sum2 = %d",sum2);


    stack3 = create_stack(n3);
    input (stack3, n3);
    sum3 = sum(stack3);
    printf("sum3 = %d",sum3);


    check(sum1, sum2, sum3);

    return 0;
}

Функция всплывающего окна:

void pop(struct stack* stack) {
    stack -> top --;
    printf("Poped\n");
}
...