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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.78
Wera
1 / 1 / 0
Регистрация: 21.07.2010
Сообщений: 11
#1

Делители числа - C++

23.07.2010, 21:56. Просмотров 3136. Ответов 16
Метки нет (Все метки)

надо написать программу что находит количество делителей каждого из целых чисел до 120.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
void main()
{
int i,x;
for (int i=1;i<120;i++)
{
for (x=i/2;x<120;)
{
cin>>i;
if(i/x==2)
{
cout<<x;
}
}
}
}

Выбивает ошибку на этапе выполнения :
Делители числа


в чем ошибка
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.07.2010, 21:56     Делители числа
Посмотрите здесь:

Элементарные делители натурального числа C++
C++ Определить являются ли два целых числа взаимно простыми ,если числа имеют общие делители
Даны натуральные числа p и q. Получить все делители числа q, взаимно простые к p. C++
C++ Даны целые числа р и q. Получить все делители числа q, взаимно простые с р
Даны целые числа р и q. Получить все делители числа q, взаимно простые с р. C++
не могу понять задачку :) Даны натуральные числа p и q. Получить все делители числа q, взаимно простые с p C++
C++ Даны натуральные числа N, K, L (K<L). Вывести на экран все делители числа N, которые меньше K или больше L
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
besstiaa
93 / 93 / 7
Регистрация: 04.06.2010
Сообщений: 223
23.07.2010, 22:18     Делители числа #2
Деление на 0.

Добавлено через 2 минуты
i = 1 изначально, x = 1/2, причем именно целочисленное деление, т.е. в x запишется только целая часть от деления, в данном случае 0. Ну а дальше... деление на ноль и ошибка.
neske
1466 / 833 / 69
Регистрация: 26.03.2010
Сообщений: 2,839
23.07.2010, 22:26     Делители числа #3
Ваш код не смотрел, написал свой.
Это требуется?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
int main (void)
{
    int cnt=0;
 
    for (int i=1; i<=120; i++) {
        cnt=0;
        for (int j=2; j<i; j++) // 1 и само число как делители не рассматриваются.
            if (!(i%j)) ++cnt;
        std::cout << i << ": " << cnt;
        std::cout << std::endl;
    }
 
    system ("pause");
    return 0;
}
Wera
1 / 1 / 0
Регистрация: 21.07.2010
Сообщений: 11
24.07.2010, 00:00  [ТС]     Делители числа #4
Спасибо !
Mr.X
Эксперт С++
3040 / 1685 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
24.07.2010, 21:58     Делители числа #5
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
///////////////////////////////////////////////////////////////////////////
//Надо написать программу, которая находит количество делителей 
//каждого из целых чисел до 120.
///////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <iomanip>
#include <iostream>
#include <vector>
///////////////////////////////////////////////////////////////////////////
typedef std::vector<int>  T_int_vect;
///////////////////////////////////////////////////////////////////////////
struct T_generate_podryad_ot
{
    int i_;
    T_generate_podryad_ot(int i): i_(i)
    {}
 
    int operator() ()
    {
        return i_++;
    }
};
///////////////////////////////////////////////////////////////////////////
class T_print_colich_deliteley
{
    //---------------------------------------------------------------------
    enum
    {
        MAX_NUM = 1000
    };
    //---------------------------------------------------------------------
    struct T_delit
    {
        int delimoe_;
        T_delit(int delimoe) : delimoe_(delimoe)
        {}
        bool operator () (int delitel)
        {
            bool delit = (delimoe_ % delitel == 0);
            if(delit)
            {
                std::cout << delitel
                          << ' ';
            }
            return  delit;           
        }
    };
    //---------------------------------------------------------------------
    T_int_vect  int_vect_;
    //---------------------------------------------------------------------
public:
    //---------------------------------------------------------------------
    T_print_colich_deliteley() : int_vect_(MAX_NUM) 
    {
        std::generate(int_vect_.begin(), int_vect_.end(), T_generate_podryad_ot(1));    
    }
    //---------------------------------------------------------------------
    void print_colich_deliteley_otrezka(int right_bound)
    {
        std::for_each(int_vect_.begin(), int_vect_.begin() + right_bound,
                      T_print_colich_deliteley());        
    }
    //---------------------------------------------------------------------
    int  count_deliteli(int num)
    {        
        return std::count_if(int_vect_.begin(), int_vect_.begin() + num,
                             T_delit(num));                                  
    }
    //---------------------------------------------------------------------
    void operator() (int num)
    {
        std::cout << std::endl
                  << '\t'
                  << "-> всего "
                  << std::setw(2)
                  << count_deliteli(num) - (num == 1 ? 1 : 2)
 
                  << " (без 1 и самого числа)"                  
                  << std::endl;
    }
    //---------------------------------------------------------------------
};
///////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
    T_print_colich_deliteley().print_colich_deliteley_otrezka(120);
    return 0;
}
neske
1466 / 833 / 69
Регистрация: 26.03.2010
Сообщений: 2,839
24.07.2010, 22:05     Делители числа #6
Mr.X, к чему такие сложности ?)
Mr.X
Эксперт С++
3040 / 1685 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
24.07.2010, 22:43     Делители числа #7
Цитата Сообщение от neske Посмотреть сообщение
Mr.X, к чему такие сложности ?)
Вообще-то для тренировки в применении алгоритмов. Что-то здесь действительно код получился длиннее, чем казалось на первый взгляд. Но если учесть, что в реальном программировании все такие функторы должны уже быть в библиотеке, то ситуация полегче.
CyBOSSeR
24.07.2010, 22:58
  #8

Не по теме:

Mr.X, только постарайтесь не использовать транслит. Это плохая привычка.

Mr.X
Эксперт С++
3040 / 1685 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
25.07.2010, 00:07     Делители числа #9
Цитата Сообщение от CyBOSSeR Посмотреть сообщение

Не по теме:

Mr.X, только постарайтесь не использовать транслит. Это плохая привычка.

Замечание справедливое. Кстати, Visual Studio 2008 поддерживает имена функций на кириллице. Интересно, как с этим у других компиляторов, и пользуется ли кто-либо этой возможностью?
M128K145
Эксперт С++
8282 / 3501 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
25.07.2010, 01:27     Делители числа #10
Mr.X, а уж кириллицу и подавно использовать нельзя(не желательно - слишком мягко сказано)
Mr.X
Эксперт С++
3040 / 1685 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
25.07.2010, 12:14     Делители числа #11
Цитата Сообщение от M128K145 Посмотреть сообщение
Mr.X, а уж кириллицу и подавно использовать нельзя(не желательно - слишком мягко сказано)
А можете обосновать это ваше мнение?
CyBOSSeR
Эксперт C++
2299 / 1669 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
25.07.2010, 14:21     Делители числа #12
Цитата Сообщение от Mr.X Посмотреть сообщение
А можете обосновать это ваше мнение?
1. Не все программисты в мире знают русский. Но практически все английский.
2. Программист C++ использующий транслит, а уж тем более кириллицу работодателю не нужен.
Хохол
Эксперт C++
475 / 443 / 13
Регистрация: 20.11.2009
Сообщений: 1,292
25.07.2010, 14:23     Делители числа #13
Цитата Сообщение от Mr.X Посмотреть сообщение
А можете обосновать это ваше мнение?
думаю, код, понятный практически любому программисту мира, это куда круче, чем понятный лишь русскому.
Mr.X
Эксперт С++
3040 / 1685 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
25.07.2010, 16:33     Делители числа #14
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
1. Не все программисты в мире знают русский. Но практически все английский.
2. Программист C++ использующий транслит, а уж тем более кириллицу работодателю не нужен.
Так оно всегда и бывает: упустишь интеллектуальную инициативу – будешь учить тарабарский. Спасибо, пока еще на форумах дозволяют сообщения писать на русском, да еще и на кириллице.
CyBOSSeR
Эксперт C++
2299 / 1669 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
25.07.2010, 17:41     Делители числа #15
Цитата Сообщение от Mr.X Посмотреть сообщение
Так оно всегда и бывает: упустишь интеллектуальную инициативу – будешь учить тарабарский. Спасибо, пока еще на форумах дозволяют сообщения писать на русском, да еще и на кириллице.
Mr.X, английский - язык международного общения. Нравится тебе это или нет. И никакие абсолютно бесполезные рассуждения о интелектуальных инициативах ничего не изменят.
Если уж ты принципиальный патриот - можешь переквалифицироватся в 1С программиста и пиши на кириллице на здоровье.

Не по теме:

Только вот, код с кириллицей, на мой взгляд, выглядит жутковато.

M128K145
Эксперт С++
8282 / 3501 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
25.07.2010, 18:37     Делители числа #16
Mr.X, а вы попробуйте для иностранных заказчиков писать проекты. Возьмем хотя бы Австрию. Для простоты предположим, что австрийский заказчик знает русский и сможет его прочитать и понять без проблем. Вы пишите код на машине с русским языком по умолчанию для не юникодных программ(1251 кажется). Отправляете его заказчику, а у него на машине австрийский язык(ISO 8856-1) и он ничего не увидит кроме конструкций языка и знаков вопроса вместо кириллицы. Ну и кому нужен будет после этого ваш код? Такое обоснование подойдет?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.02.2011, 17:36     Делители числа
Еще ссылки по теме:

C++ Простые делители числа,задачка!
Числа Фибоначчи, простые числа и делители C++
Делители натурального числа C++
Даны натуральные числа p и q. Получить все делители числа q, взаимно простые к p C++
Вывести делители числа n C++

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

Или воспользуйтесь поиском по форуму:
Arlekino
Сообщений: n/a
08.02.2011, 17:36     Делители числа #17
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <cstdlib>
#include <fstream>
using namespace std;
ifstream fin ("input.txt");
ofstream fout ("output.txt");
int main ()
{
    int n,g,i=1,f=1,c;
    fin>>n;
        while(i<=n){f*=i;i++;}
                fout<<f<<" ";
                         for (i=1;i<=f;i++){
                                 if(f/i==0){c++;
                                 }
                                 }
                                 fin>>c>>g;
                                 return 0;
}
Надо найти количество делителей в программе в чем ошибка поиогите !!!
Yandex
Объявления
08.02.2011, 17:36     Делители числа
Ответ Создать тему
Опции темы

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