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

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

Войти
Регистрация
Восстановить пароль
 
jekmut
0 / 0 / 0
Регистрация: 30.12.2012
Сообщений: 84
#1

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

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

Надо написать две функции 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.12.2012, 16:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как выполнить задание (написать две функции getAllDivisors и getLowestDivisor) (C++):

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

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

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

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

Написать программу содержащую две функции - C++
Написать программу, содержащую две функции. Первая функция, выводящая на экран строку одинаковых символов, располагается до функции main()....

нужно написать драйвер, который имеет две функции: startmyfunc() и stopmyfunc() - C++
Люди, кто писал дрова, помогите плз.... Я даже блин примеры скомпилить не могу... В хэлпе лажи всякой полно, а толком ничего не...

3
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 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
jekmut
0 / 0 / 0
Регистрация: 30.12.2012
Сообщений: 84
30.12.2012, 23:25  [ТС] #3
Данная прога должна вывести множители числа, например, если ввести число 20, то прога должна вывести такие множители: 2, 2, 5. Т.е. 2 * 2 * 5 = 20. Исходный код работает отлично. А число n выводит в том случае, если оно окажется простым. В проге используется рекурсивная функция, а мне надо сделать эту задачу обычным способом, без использования рекурсии.
0
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.12.2012, 11:15
Привет! Вот еще темы с ответами:

Необходимо написать две функции для вычисления площади прямоугольника и круга - C++
Необходимо написать две функции для вычисления площади прямоугольника и круга. Программа должна запрашивать размеры параллелепипеда: a и b...

написать прогу, выводящую таблицу умножения на экран. Прога должна содержать две функции. - C++
помогите пожалууста написать прогу, выводящую таблицу умножения на экран. Прога должна содержать две функции. Первая ф-я, которая...

Написать программу с использованием функции, которая сравнивает две строки, заданные в качестве её аргументов - C++
Написать программу с использованием функции, которая сравнивает две строки, заданные в качестве её аргументов. Если аргумент только один,...

Дан массив целых чисел. Написать две функции ( количество положительных и отрицательных элементов) - C++
Дан массив целых чисел. Написать две функции, которые возвращают количество положительных и отрицательных элементов в массиве.


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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