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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ZaMaZaN4iK
Мой лучший друг-отладчик!
 Аватар для ZaMaZaN4iK
163 / 163 / 9
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
Завершенные тесты: 1
#1

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

20.07.2012, 13:33. Просмотров 249. Ответов 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++ Нахождение max в файле чисел. Ошибки в коде
C++ Ошибка в коде
Нахождение суммы элементов массива, найти ошибку в коде C++
Нахождение количества делителей числа через рекурсию C++
нахождение ошибок в коде, наследование C++
C++ Где тут в коде происходит нахождение корня? (метод половинного деления)
C++ Ошибка в коде
Ошибка в коде C++
Нахождение числа с максимальным количеством делителей из интервала между a и b 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     Ошибка в коде(нахождение делителей)
Ответ Создать тему
Опции темы

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