Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
LabraLady
0 / 0 / 0
Регистрация: 17.05.2016
Сообщений: 11
1

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

20.05.2016, 17:03. Просмотров 304. Ответов 9
Метки нет (Все метки)

Есть задача написать программу, которая считывая из входного файла два числа вычисляет их НОД и НОК и записывает в выходной файл. Программа работает отлично, есть одно <НО>: когда на входе числа 13 1000000000 ответ выводится не верный, так как число получается слишком большое. Вывод осуществляю функцией fprintf_s, буду очень благодарна за помощь.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2016, 17:03
Ответы с готовыми решениями:

Ввод и вывод больших чисел
Столкнулся с проблемой ввода и вывода чисел. Нужно ввести и вывести числа -0.9589243e26 и...

Не выводится результат вычислений
Программа должна находит a,b а выдаёт ошибку с очисткой экрана. #include&lt;conio.h&gt;...

Объясните результат вычислений
Объясните , пожалуйста, почему получается 4-- #include&lt;stdio.h&gt; #include&lt;math.h&gt;...

Метод Зейделя. Не выводится результат вычислений
Программа должна считать систему уравнений методом Зейделя. Программа запускается, вводятся все...

Программа выдает некорректный результат вычислений
Товарищи программисты, срочно нужна Ваша помощь. Это переоформленный кусочек большой программы, не...

9
Njkzy
30 / 30 / 23
Регистрация: 29.04.2011
Сообщений: 152
Завершенные тесты: 1
20.05.2016, 17:08 2
ну так исходник киньте, что бы мы могли посмотреть в чем проблема.
0
LabraLady
0 / 0 / 0
Регистрация: 17.05.2016
Сообщений: 11
20.05.2016, 17:10  [ТС] 3
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#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;
}
как то так
0
Njkzy
30 / 30 / 23
Регистрация: 29.04.2011
Сообщений: 152
Завершенные тесты: 1
20.05.2016, 17:58 4
Цитата Сообщение от LabraLady Посмотреть сообщение
когда на входе числа 13 1000000000 ответ выводится не верный
Само собой разумеется т. к. НОК от 13 1000000000 будет 13000000000, и не в Си не в C++ нету таких переменных которые могли бы хранить такие значения.

Добавлено через 7 минут
хотя нет есть, извиняюсь что наврал long long или unsigned long long
0
LabraLady
0 / 0 / 0
Регистрация: 17.05.2016
Сообщений: 11
20.05.2016, 18:07  [ТС] 5
в том то и дело, что эти типы данных тоже не позволяют вывести корректный ответ.
0
Evg
Эксперт CАвтор FAQ
19789 / 7429 / 560
Регистрация: 30.03.2009
Сообщений: 20,705
Записей в блоге: 30
28.05.2016, 19:20 6
Цитата Сообщение от LabraLady Посмотреть сообщение
в том то и дело, что эти типы данных тоже не позволяют вывести корректный ответ
Думается, проблема в том, что ты попросту не умеешь этого делать. Почитай в любой книге/мануле о том, как правильно пользоваться printf'ом, потому как даже в твоей программе в посте #3 в этом месте присутствуют ошибки
0
LabraLady
0 / 0 / 0
Регистрация: 17.05.2016
Сообщений: 11
29.05.2016, 17:58  [ТС] 7
не знаю, в каком месте вы нашли там ошибку, так как ее не видит даже компилятор. а проблема была в том, что требовалось использовать другой спецификатор формата ввода и вывода. если не можете подсказать, то лучше вообще ничего не отвечать.
0
HighPredator
5693 / 2014 / 723
Регистрация: 10.12.2010
Сообщений: 5,787
Записей в блоге: 3
29.05.2016, 18:30 8
Цитата Сообщение от LabraLady Посмотреть сообщение
требовалось использовать другой спецификатор формата ввода и вывода
О чем вам и было сказано в:
Цитата Сообщение от Evg Посмотреть сообщение
Почитай в любой книге/мануле о том, как правильно пользоваться printf'ом
Цитата Сообщение от LabraLady Посмотреть сообщение
если не можете подсказать, то лучше вообще ничего не отвечать
С учетом вышесказанного, вам лучше подобные мысли держать при себе.
0
LabraLady
0 / 0 / 0
Регистрация: 17.05.2016
Сообщений: 11
29.05.2016, 18:59  [ТС] 9
с учетом выше сказанного, в выводе была не доработка, а неточность, и тут была просьба подсказать, а не опустить. И в мануле тоже надо знать, что искать. Если бы могла найти, тут бы о помощи не просила.
0
LFC
730 / 535 / 416
Регистрация: 17.09.2015
Сообщений: 1,598
29.05.2016, 19:27 10
Цитата Сообщение от LabraLady Посмотреть сообщение
была просьба подсказать, а не опустить
зря вы так,это никому даже в голову не приходило,а уж тем более тем уважаемым людям которые вам отвечали.
0
29.05.2016, 19:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.05.2016, 19:27

Найти число, если известен результат вычислений с ним
Кароче есть вот такая задача: С оператором While она решалась так: #include &lt;stdio.h&gt;...

Умножение больших чисел, как вывести результат?
есть незаконченная программа умножения больших чисел, а как можно еще вывести получившийся...

Компилятор при делении больших чисел выдает не верный результат
Здравствуйте. Я только осваиваю азы программирования на С++. Компилятор используется g++ Нужно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru