Вывод больших чисел искажает результат вычислений - 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;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д