Деление двух длинных чисел - 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;
}

Объяснение кода листинга программы

Этот код выполняет деление двух длинных чисел. Вот список, объясняющий, что происходит на каждом шаге:

  1. В функции main() пользователь вводит делимое и делитель с помощью функций scanf().
  2. Функция validate() проверяет, является ли введенное делимое действительным положительным целым числом. Если это не так, программа выводит сообщение об ошибке и завершается.
  3. Функция division() выполняет деление делимого на делитель. Она использует статическое буферное пространство для хранения результата.
  4. В функции main(), после того как делимое и делитель были проверены и считаны корректными, вызывается функция division(), чтобы выполнить деление.
  5. Результат деления выводится с помощью функции printf().
  6. В функции main(), после вывода результата деления, выводится остаток от деления с помощью функции printf().

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.3 из 5
Похожие ответы