Вывод больших чисел искажает результат вычислений - C (СИ)
Формулировка задачи:
Есть задача написать программу, которая считывая из входного файла два числа вычисляет их НОД и НОК и записывает в выходной файл. Программа работает отлично, есть одно <НО>: когда на входе числа 13 1000000000 ответ выводится не верный, так как число получается слишком большое. Вывод осуществляю функцией fprintf_s, буду очень благодарна за помощь.
Решение задачи: «Вывод больших чисел искажает результат вычислений»
textual
Листинг программы
#include <stdio.h> #include <math.h> #include <conio.h> unsigned long int NOD(unsigned long int a, unsigned long int b) { while (b) b ^= a ^= b ^= a %= b; return a; } unsigned long int main(void) { unsigned long int a, b, GCD, LCM; FILE * fin; FILE * fout; fopen_s(&fin, "D:\\input.txt", "r"); fopen_s(&fout, "D:\\output.txt", "w"); printf("Openning file..."); if (fin == NULL) { printf_s("\nError! Can not open file. Press any key to exit."); _getch(); return 0; } if (fout == NULL) { printf_s("Error! Can not create file: '%s'. Press any key to exit."); _getch(); return 0; } fscanf_s(fin, "%d %d", &a, &b); if ((a >= 1) && (a <= (pow(10, 9))) && (b >= 1) && (b <= (pow(10, 9)))) { GCD = NOD(a, b); LCM = (a * b) / GCD; fprintf_s(fout, "%d %d", GCD, LCM); } else { printf("\nError! Input data not correct. Press any key to exit."); _getch(); return 0; } fclose(fin); fclose(fout); return 0; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д