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

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

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

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

23.07.2010, 21:56. Просмотров 3308. Ответов 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;
}
}
}
}

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


в чем ошибка
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.07.2010, 21:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Делители числа (C++):

Даны целые числа р и q. Получить все делители числа q, взаимно простые с р - C++
Получить все делители числа q, взаимно простые с р.

Даны натуральные числа p и q. Получить все делители числа q, взаимно простые к p. - C++
Даны натуральные числа p и q. Получить все делители числа q , взаимно простые к p.

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

Даны целые числа р и q. Получить все делители числа q, взаимно простые с р. - C++
Даны целые числа р и q. Получить все делители числа q, взаимно простые с р. Решите на С++. Заранее спасибо!

не могу понять задачку :) Даны натуральные числа p и q. Получить все делители числа q, взаимно простые с p - C++
Даны натуральные числа p и q. Получить все делители числа q, взаимно простые с p.

Даны натуральные числа N, K, L (K<L). Вывести на экран все делители числа N, которые меньше K или больше L - C++
Даны натуральные числа N, K, L (K&lt;L). Вывести на экран все делители числа N, которые меньше K или больше L.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
besstiaa
94 / 94 / 7
Регистрация: 04.06.2010
Сообщений: 223
23.07.2010, 22:18 #2
Деление на 0.

Добавлено через 2 минуты
i = 1 изначально, x = 1/2, причем именно целочисленное деление, т.е. в x запишется только целая часть от деления, в данном случае 0. Ну а дальше... деление на ноль и ошибка.
0
neske
1495 / 862 / 82
Регистрация: 26.03.2010
Сообщений: 2,951
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;
}
0
Wera
1 / 1 / 0
Регистрация: 21.07.2010
Сообщений: 11
24.07.2010, 00:00  [ТС] #4
Спасибо !
0
Mr.X
Эксперт С++
3049 / 1694 / 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;
}
1
neske
1495 / 862 / 82
Регистрация: 26.03.2010
Сообщений: 2,951
24.07.2010, 22:05 #6
Mr.X, к чему такие сложности ?)
0
Mr.X
Эксперт С++
3049 / 1694 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
24.07.2010, 22:43 #7
Цитата Сообщение от neske Посмотреть сообщение
Mr.X, к чему такие сложности ?)
Вообще-то для тренировки в применении алгоритмов. Что-то здесь действительно код получился длиннее, чем казалось на первый взгляд. Но если учесть, что в реальном программировании все такие функторы должны уже быть в библиотеке, то ситуация полегче.
0
CyBOSSeR
24.07.2010, 22:58
  #8

Не по теме:

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

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

Не по теме:

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

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

Не по теме:

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

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.07.2010, 17:41
Привет! Вот еще темы с ответами:

Определить являются ли два целых числа взаимно простыми ,если числа имеют общие делители - C++
Зравствуйте Люди знающие свое дело))) я студент первого курса и мало разбираюсь пока. Суть задания: Составить программу...

Числа Фибоначчи, простые числа и делители - C++
Write a menu() function that prints the following menu and returns the selected choice: 1. Fibonacci series 2. Prime numbers 3....

Вывести делители числа n - C++
Нужно вывести делители числа n, НО по три елемента в каждой сттроке. Помогите, пожалуйста)

Делители натурального числа - C++
Привет всем) завтра экзамен ... не могли бы помочь мне сделать задание? или хотя бы натолкнуть на мысль. буду благодарен Дано...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
25.07.2010, 17:41
Ответ Создать тему
Опции темы

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