Деление двух длинных чисел - C (СИ)
Формулировка задачи:
Есть ли реализация алгоритма деления двух длинных чисел на чистом Си без плюсов? А то опираться как-то не на что, разве что исходники на Паскале
Решение задачи: «Деление двух длинных чисел»
textual
Листинг программы
#include<stdio.h> #include<string.h> #define MAX 10000 int validate(char []); char * division(char[],long); long int remainder; int main(){ char dividend[MAX],*quotient; long int divisor; printf("Enter dividend: "); scanf("%s",dividend); if(validate(dividend)) return 0; printf("Enter divisor: "); scanf("%ld",&divisor); quotient = division(dividend,divisor); while(*quotient) if(*quotient ==48) quotient++; else break; printf("Quotient: %s / %ld = %s",dividend,divisor,quotient); printf ("\nRemainder: %ld",remainder); return 0; } int validate(char num[]){ int i=0; while(num[i]){ if(num[i] < 48 || num[i]> 57){ printf("Invalid positive integer: %s",num); return 1; } i++; } return 0; } char * division(char dividend[],long divisor){ static char quotient[MAX]; long temp=0; int i=0,j=0; while(dividend[i]){ temp = temp*10 + (dividend[i] -48); if(temp<divisor){ quotient[j++] = 48; } else{ quotient[j++] = (temp / divisor) + 48;; temp = temp % divisor; } i++; } quotient[j] = '\0'; remainder = temp; return quotient; }
Объяснение кода листинга программы
Этот код выполняет деление двух длинных чисел. Вот список, объясняющий, что происходит на каждом шаге:
- В функции
main()
пользователь вводит делимое и делитель с помощью функцийscanf()
. - Функция
validate()
проверяет, является ли введенное делимое действительным положительным целым числом. Если это не так, программа выводит сообщение об ошибке и завершается. - Функция
division()
выполняет деление делимого на делитель. Она использует статическое буферное пространство для хранения результата. - В функции
main()
, после того как делимое и делитель были проверены и считаны корректными, вызывается функцияdivision()
, чтобы выполнить деление. - Результат деления выводится с помощью функции
printf()
. - В функции
main()
, после вывода результата деления, выводится остаток от деления с помощью функцииprintf()
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д