@Vlad242

С++, Как решить такое на с++???

Ребята, хелп.
Смотрите, например я пишу число 8 и оно делится на 1,2,4,8 и мне нужно написать код который сам сможет вывести числа в порядке убывания. Только код должен быть на любое число ( там например 10,6...) программа сама должна найти на что делится число и потом вывести их в порядку убывания.

Я сначала написал так но код не совсем делает, то что мне нужно.

#include <iostream>
using namespace std;
 
void reverse()
{
	double x;
	if (cin >> x)
	{
		reverse();
		cout << x << "\n";
	}
}
 
int main()
{
	reverse();
	return 0;
}
  • Вопрос задан
  • 496 просмотров
Решения вопроса 1
@sddvxd
#include <iostream>

int main(){
  std::cout << "Enter the number: ";
  int number;
  std::cin >> number;
  int buffer = number;
  if(number <= 0) return 1;
  double multi_factor = 1;
  std::cout << std::endl;
  while((buffer = number * multi_factor) >= 1){
    std::cout << buffer << " ";
    multi_factor /= 2;
    if(buffer % 2 != 0) break;
  }

  std::cin.get();
  std::cin.get();

  return 0;
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
demon416nds
@demon416nds
Разработчик на чем попало
зачем тебе double если с целыми числами работать собрался?
простейший вариант в цикле от числа до 1 проверять остаток от деления
и выводить если он равен нулю.
for (int i=x;i>0;i--)
if (x % i==0)
cout << i << "\n";

давно не писал на си такчто могу ошибаться в синтаксисе
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы