кодесурса
«C

Упражнения на Си: разделите два заданных целых числа без использования умножения, деления и оператора мод

script1adsense2code
script1adsense3code

Программирование на C: упражнение 15 с решением

Напишите C-программирование, чтобы разделить два заданных целых числа без использования умножения, деления и оператора мод. Вернуть частное после деления.

Код C:

#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
int divide_two(int dividend_num, int divisor_num)
{
    int sign = (float) dividend_num / divisor_num > 0 ? 1 : -1;
    unsigned int dvd = dividend_num > 0 ? dividend_num : -dividend_num;
    unsigned int dvs = divisor_num > 0 ? divisor_num : -divisor_num;
    unsigned int bit_num[33];
    unsigned int i = 0;
    long long d = dvs;
    bit_num[i] = d;
    while (d <= dvd) {
        bit_num[++i] = d = d << 1;
    }
    i--;
    unsigned int result = 0;
    while (dvd >= dvs) {
        if (dvd >= bit_num[i]) {
            dvd -= bit_num[i];
            result += (1<<i);
        } else {
            i--;
        }
    }
    if (result > INT_MAX && sign > 0) {
        return INT_MAX;
    }
    return (int) result * sign;
}
int main(void)
{
    int dividend_num = 15;
	int divisor_num = 3;
	printf("Quotient after dividing %d and %d : %d", dividend_num, divisor_num, divide_two(dividend_num, divisor_num));
    return 0;
}

Пример вывода:

 Коэффициент после деления 15 и 3: 5

Иллюстрированная презентация:

«C

Блок - схема:

«C

Решение

Внесите свой код и комментарии через Disqus.

Previous: написать программу на C, чтобы найти индекс первого вхождения данной строки в другой данной строке. Если не найдено, верните -1.
Далее: Написать программу на C, чтобы найти длину самой длинной допустимой (правильно сформированной) скобки в данной строке.

Каков уровень сложности этого упражнения?

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code