Вывод больших чисел искажает результат вычислений - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Есть задача написать программу, которая считывая из входного файла два числа вычисляет их НОД и НОК и записывает в выходной файл. Программа работает отлично, есть одно <НО>: когда на входе числа 13 1000000000 ответ выводится не верный, так как число получается слишком большое. Вывод осуществляю функцией fprintf_s, буду очень благодарна за помощь.

Решение задачи: «Вывод больших чисел искажает результат вычислений»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <conio.h>
  4.  
  5. unsigned long int NOD(unsigned long int a, unsigned long int b) {
  6.  
  7.     while (b) b ^= a ^= b ^= a %= b;
  8.     return a;
  9. }
  10.  
  11. unsigned long int main(void)
  12. {
  13.     unsigned long int a, b, GCD, LCM;
  14.     FILE * fin;
  15.     FILE * fout;
  16.  
  17.     fopen_s(&fin, "D:\\input.txt", "r");
  18.     fopen_s(&fout, "D:\\output.txt", "w");
  19.  
  20.     printf("Openning file...");
  21.     if (fin == NULL)
  22.     {
  23.         printf_s("\nError! Can not open file. Press any key to exit.");
  24.         _getch();
  25.         return 0;
  26.     }
  27.  
  28.     if (fout == NULL) {
  29.         printf_s("Error! Can not create file: '%s'. Press any key to exit.");
  30.         _getch();
  31.         return 0;
  32.     }
  33.  
  34.     fscanf_s(fin, "%d %d", &a, &b);
  35.  
  36.     if ((a >= 1) && (a <= (pow(10, 9))) && (b >= 1) && (b <= (pow(10, 9))))
  37.     {
  38.  
  39.         GCD = NOD(a, b);
  40.  
  41.         LCM = (a * b) / GCD;
  42.         fprintf_s(fout, "%d %d", GCD, LCM);
  43.  
  44.     }
  45.     else
  46.     {
  47.  
  48.         printf("\nError! Input data not correct. Press any key to exit.");
  49.         _getch();
  50.         return 0;
  51.     }
  52.     fclose(fin);
  53.  
  54.     fclose(fout);
  55.     return 0;
  56. }

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


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

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

13   голосов , оценка 4.077 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы