Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 1
Регистрация: 30.12.2012
Сообщений: 88
1

Как выполнить задание (написать две функции getAllDivisors и getLowestDivisor)

30.12.2012, 16:08. Показов 588. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Надо написать две функции getAllDivisors и getLowestDivisor. Функция main должна вызывать функцию getAllDivisors, которая в свою очередь имеет цикл: функция getAllDivisors повторно вызывает функцию getLowestDivisor, каждый раз заменяя значение n результатом выражения n / i, где i - это найденный делитель. Если возвращается само число n, значит, число является простым и цикл должен быть прекращен. Если написать бесконечный цикл, то его надо будет прервать оператором break.


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
#include <iostream.h>
#include <conio.h>
#include <math.h>
 
void getDivisors(int n);
 
int main()
{
  int n;
  
  while(1)
  {
    cout << "Enter a number (0 to exit) and press ENTER: ";
    cin >> n;
    
    if(n == 0)
      break;
    else
    {
      getDivisors(n);
      cout << endl;
    } 
  }
  
  getch();
  return 0;
}
 
void getDivisors(int n)
{
  int i;
  double sqrtOfN = sqrt((double) n);
  
  for(i = 2; i <= sqrtOfN; i++)
    if(n % i == 0)
    {
      cout << i << ", ";
      getDivisors(n / i);
      return;
    }
    cout << n;  
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.12.2012, 16:08
Ответы с готовыми решениями:

Поток.Или как выполнить две функции одновременно
Мне надо в одно время выполнить два действия. Функция которая получает координаты клика и и что...

Требуется написать программу, определяющую, можно ли выполнить данное задание
Помогите решить задачу! &quot;Васю попросили написать, проверяющую можно ли получить строку T только...

Выполнить задание, оформив его в виде шаблона функции
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; const int MAXARRSIZE = 10000; ...

Вывести таблицу значений функции f(x). Задание нужно выполнить используя оператор цикла с параметром (for)
Задание нужно выполнить используя оператор цикла с параметром (for) Даны действительные a, b и...

3
ComfyMobile
401 / 282 / 34
Регистрация: 24.07.2012
Сообщений: 916
30.12.2012, 21:41 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void getDivisors(int n)
{
  int i;
  double sqrtOfN = sqrt((double) n);
  
  for(i = 2; i <= sqrtOfN; i++)
    if(n % i == 0)
    {
      cout << i << ", ";
      getDivisors(n / i);
      return;
    }
    cout << n;  
}
у вас функция возвращает void а вы return пишите да и в теле цикла, у вас n никогда не выведет

Добавлено через 3 минуты
C++
1
2
3
4
5
6
7
8
void getDivisors(int n)
{
  for(int i = 2; i <= n; i++)
    if(n % i == 0){
      cout << i << ", ";
    }
 
}
Добавлено через 10 секунд
вот так будет правильней
1
0 / 0 / 1
Регистрация: 30.12.2012
Сообщений: 88
30.12.2012, 23:25  [ТС] 3
Данная прога должна вывести множители числа, например, если ввести число 20, то прога должна вывести такие множители: 2, 2, 5. Т.е. 2 * 2 * 5 = 20. Исходный код работает отлично. А число n выводит в том случае, если оно окажется простым. В проге используется рекурсивная функция, а мне надо сделать эту задачу обычным способом, без использования рекурсии.
0
ComfyMobile
401 / 282 / 34
Регистрация: 24.07.2012
Сообщений: 916
31.12.2012, 11:15 4
C++
1
2
3
4
5
6
7
8
9
10
11
void getDivisors(int n)
{
  int i;
  for(i = 2; i <= n; i++)
    if(n % i == 0){
      cout << i << ", ";
      n/=i;
      i = 1;
    }
 
}
вот сформулировали более четко задание, вот вам результат
1
31.12.2012, 11:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.12.2012, 11:15
Помогаю со студенческими работами здесь

Написать две пользовательские функции, эквивалентные стандартной функции strlen
Написать программу, содержащую две пользовательские функции определения длины строки, эквивалентные...

Написать программу, содержащую две функции, сравнения строк, эквивалентные стандартной функции strcmp
Добрый вечер, многоуважаемые гуру программирования. Прошу помочь написать одну программу,...

Как выполнить задание с циклом for?
Дано задание 1)S= 1+ 2 + 3+...+ 117;(s=6903) Как его выполнить и что здесь происходит?Увеличивание...

Как правильно выполнить задание?
В программу должно вводиться предложение. Если предложение заканчивается пробелом с точкой, пишем...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru