@zakatzakatom

Почему программа на языке С не выводит результат?

Все было нормально, все работало, но при очередном запуске при вводе данных (1 2 3 4 5 6 7 8 9) программа просто стоит и ничего не выводит, и не на что не реагирует, пробовал написать и на CLion и в онлайн компиляторы и в терминале через gcc, программа просто простаивает и не реагирует
#include <stdio.h>
#include <locale.h>

int FindIndexFirstNegative(int arr[], int size)
{
    for (int index = 0; index < size; index++)
    {
        if (arr[index] < 0)
        {
            return index;
        }
    }
    return -1;
}

int FindIndexLastNegative(int arr[], int size)
{
    for (int index = size - 1; index >= 0; index--)
    {
        if (arr[index] < 0)
        {
            return index;
        }
    }
    return -1;
}

int MultiplyArrayElementsInRange(int arr[], int start, int end)
{
    int mul = 1;
    for (int index = start; index < end; index++)
    {
        mul *= arr[index];
    }
    return mul;
}

int MultiplyArrayElementsInRangeDifference(int arr[], int start, int end, int size)
{
    int mul = 1;
    for (int index = 0; index < start; index++)
    {
        mul *= arr[index];
    }
    for (int index = end; index < size; index++)
    {
        mul *= arr[index];
    }
    return mul;
}

void Menu()
{
    int size = 0;
    int choise = -1;
    int arr[20];
    int num;
    if (scanf("%d", &num) == 1)
    {
        choise = num;
        while (scanf( "%d", &num) == 1)
        {
            arr[size] = num;
            size++;
        }
    }
    switch (choise) {
        case 0: {
            printf("%d\n", FindIndexFirstNegative(arr, size));
            break;
        }
        case 1: {
            printf("%d\n", FindIndexLastNegative(arr, size));
            break;
        }
        case 2: {
            int first = FindIndexFirstNegative(arr, size);
            int second = FindIndexLastNegative(arr, size);
            printf("%d\n", MultiplyArrayElementsInRange(arr, first, second));
            break;
        }
        case 3: {
            int first = FindIndexFirstNegative(arr, size);
            int second = FindIndexLastNegative(arr, size);
            printf("%d\n", MultiplyArrayElementsInRangeDifference(arr, first, second, size));
            break;
        }
        default:
            printf("Данные некорректны");
    }
}

int main()
{
    Menu();
}


UPD: segmentation fault
  • Вопрос задан
  • 116 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы