Исключение с плавающей точкой C. Почему? - PullRequest
0 голосов
/ 27 марта 2019

Я написал простой код на C о трафике кассового аппарата, но я всегда получаю «Исключение с плавающей точкой». Я знаю, что это происходит при переполнении и делении на ноль, но я думаю, что в этом случае не содержат ничего из этого. Вот код:

#include <stdio.h>
#include <stdlib.h>

int main(void) 
{
    int kassza[32] = {0};
    int a;
    int ossz = 0;

    scanf("%d", &a);
    printf("meg ok");

    while (a != 0) 
    {
        kassza[a - 1]++;
        ossz++;
        scanf("%d", &a);
    }

    int max = 0;
    for (int a = 1; a < 32; a++)
    {
        if (kassza[a] > kassza[max]) 
        {
            max = a;
        }
    }
    printf("%d. kassza: %d %%-a az osszes vevonek\n", max + 1, kassza[max], kassza[max] / (ossz / 100));
    return 0;
}

так вот почему, пожалуйста, помогите мне!

1 Ответ

0 голосов
/ 03 апреля 2019

Код подвергается делению на ноль из-за kassza[max] / (ossz / 100) и ossz < 100.

В этом случае ossz/100 -> 0 из-за целочисленного деления, а затем kassza[max] / 0 делится на ноль.

Целочисленное деление на 0 часто (ошибочно) сообщается как Исключение с плавающей запятой .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...