Форум программистов, компьютерный форум CyberForum.ru

Ошибка в коде(нахождение делителей) - C++

Восстановить пароль Регистрация
 
ZaMaZaN4iK
Мой лучший друг-отладчик!
 Аватар для ZaMaZaN4iK
163 / 163 / 9
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
Завершенные тесты: 1
20.07.2012, 13:33     Ошибка в коде(нахождение делителей) #1
Здравсвуйте! Я тут писал прогу кому то на форуме, и натолкнулся на проблему.Вот код
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
// zadachka.cpp: главный файл проекта.
 
#include "stdafx.h"
#include <iostream>
#include <cmath>
 
using namespace std;
 
int main()
{
    system("chcp 1251");
    int a,c;
    float b,v,n;
    cout<<"Введите натуральное число ";
    cin>>a;
    for(c=a/2;c>0;c--)
    {
        b=a/c;
        v=modf(b,&n);
        if(v==0)
        cout<<c<<endl;
    }
    system("pause");
}
Так вот, прога должна выводить делители.при введенном числе 12 должна выводить 6,4,3,2,1. Но она у меня выводит 6,5,4,3,2,1. Посмотрел отладчиком, а у меня почему то когда делится 12 на 5, в переменную b загоняется 2,0000000. Почему так работает??? Ведь должно же загонятся 2.4. Help me? please.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.07.2012, 13:33     Ошибка в коде(нахождение делителей)
Посмотрите здесь:

В чём ошибка.В коде там где коментарий там ошибка поучается. C++
быстрое нахождение количества делителей натурального числа C++
нахождение делителей числа C++
C++ нахождение делителей числа
Ошибка в коде C++
C++ Нахождение max в файле чисел. Ошибки в коде
Нахождение суммы элементов массива, найти ошибку в коде C++
C++ Ошибка в коде

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
20.07.2012, 13:40     Ошибка в коде(нахождение делителей) #2
Цитата Сообщение от ZaMaZaN4iK Посмотреть сообщение
когда делится 12 на 5, в переменную b загоняется 2,0000000.
А как иначе?

a - типа int, b - типа int, при их делении получается целое число, т.е. 2. А потом при присваивании b оно преобразуется во float.

Добавлено через 1 минуту
На самом деле зачем тут мудрить, когда можно проще:
C++
1
2
if(a % c == 0)
     cout << c << endl;
Yandex
Объявления
20.07.2012, 13:40     Ошибка в коде(нахождение делителей)
Ответ Создать тему
Опции темы

Текущее время: 08:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru