Isaac David Ответов: 2

Как я могу так кодировать?


я хочу закодировать коэффициенты числа в порядке убывания
Я хочу использовать только 3 функции без рекурсий
Я хочу получить коэффициенты числа в порядке убывания в качестве вывода

Что я уже пробовал:

я попытался сделать это без рекурсии.Потому что я не хочу рекурсии

Patrice T

Здесь мы поможем вам подделать ваш код.
Покажите свой код и укажите проблемы, которые у вас есть.

Isaac David

#include <iostream>

использование пространства имен std;

инт get_number(ничтожным);
пустота print_divisors (инт input_integer);
боол user_repeat (ничтожным);

тап_п (недействительными)
{
инт input_integer;

делать
{
input_integer = get_number();
print_divisors(input_integer);
}
пока (user_repeat());
}

инт get_number(ничтожным)
{
инт кол-во;
cout<<"введите число\n";
Кин&ГТ;&ГТ;кол-во;
if(num<1)
cout<<"это число неприемлемо. Пожалуйста, введите другой номер"<<endl;
="" еще
="" return="" num;
=""
}

пустота="" print_divisors(инт="" input_integer)
{

="" для(int="" коэффициент="1;фактор&ЛТ;=input_integer;фактор++)
" {
="" if(input_integer%factor="=" 0)
= "cout<<factor<<"="" ";
="" }
}

bool="" user_repeat="" (void)
{
="" char="" ответ;
="" если((ответ="" !="г" ||Ответ="" )||(Ответ="" ))
="" соиь<&ЛТ;"пожалуйста,="" реагировать="" с="" г="" (или="" г)="" Для="" да="" и="" н="" н)="" нет"на<<епси;
="" делать
= "cout<<"would=" you=" like=" to=" try=" another=" integer="" (y="" n)?\n=" cin=" " >>ответ;;
if(answer=='Y' || answer == 'y')
cout<< main();


}while(answer =='N' || answer == 'n');

}


Я хочу этот выход
Пожалуйста, введите положительное целое число: 18
18 9 6 3 2 1
Хотите попробовать другое целое число (Y/N)? y
Пожалуйста, введите положительное целое число: -44
-44 не является положительным целым числом.
Пожалуйста, введите положительное целое число: 109
109 1
Хотите попробовать другое целое число (Y/N)? m
Пожалуйста, ответьте Y (или y) для да и N (или n) для Нет.
Хотите попробовать другое целое число (Y/N)? N

Patrice T

Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.
Чтобы каждый мог обратить внимание на эту информацию.

Patrice T

Не забудьте рассказать, в чем проблема с кодом.

Dave Kreskowiak

Вы имеете в виду, что ваше домашнее задание говорит, что вы не можете использовать рекурсию.

Isaac David

да

Richard MacCutchan

Вы можете начать с другого направления. Разделите на 2, затем 3, затем 4 ... продолжая, пока не дойдете до значения числа / 2. очевидно, что при построении списка вы можете игнорировать те, которые уже были найдены. Вы также можете избежать всех четных чисел, если исходное число нечетное.

2 Ответов

Рейтинг:
4

OriginalGriff

Мы более чем готовы помочь тем, кто застрял, но это не значит, что мы здесь, чтобы сделать все это для вас! Мы не можем сделать всю работу, вам либо платят за это, либо это часть ваших оценок, и было бы совсем несправедливо, если бы мы сделали все это за вас.

Поэтому нам нужно, чтобы вы сделали работу, и мы поможем вам, когда вы застряли. Это не значит, что мы дадим вам пошаговое решение, которое вы можете сдать!
Начните с объяснения, где вы находитесь в данный момент и каков следующий шаг в этом процессе. Затем расскажите нам, что вы пытались сделать, чтобы этот следующий шаг сработал, и что произошло, когда вы это сделали.


Patrice T

Привет ОГ,
код находится в комментариях.

OriginalGriff

Да, я видел.
Вы его читали?

cout << main();

О, МОЙ БОГ...

Patrice T

Да, я знаю :) типично для очень начинающих.
Но, по крайней мере, он хоть что-то сделал.

Isaac David

йо, чувак, это не мои оценки. Просто практика найдет. Программа, которую я отправил, - это моя версия программы. Мне тоже не платят

Рейтинг:
18

Patrice T

Я вижу ваш код в комментариях, обратите внимание, что он был поврежден во время вставки в комментарий.
Код содержит множество синтаксических ошибок, даже не говоря о его логике.
Несколько правил:
- Никогда не вызывайте main() из любого места в коде.

cout<< main();

- Любая команда заканчивается точкой с запятой
cout<<"would you like to try another integer (y n)?\n cin>>answer;;  // 2 semicolon at the end is an error
// prefer
cout<<"would you like to try another integer (y n)?\n; cin>>answer;

- Совет: не помещайте несколько команд в одну строку кода, это работает, но также затрудняет чтение кода.
cout<<"would you like to try another integer (y n)?\n ;
cin>>answer;

- Котировки всегда идут парами
cout<<"would you like to try another integer (y n)?\n";
cin>>answer;

-
int get_number(void)
{
	int num;
	cout<<"Enter a number\n";
	cin>>num;
	if(num<1)
		cout<<"This number is unacceptable. Please enter another number"<<endl;
		// this code path is missing a return command
	else
		return num;
}


Совет: перепишите программу как единый фрагмент кода в main (), пока она не заработает, а затем проанализируйте код, чтобы увидеть, какую часть можно сделать функцией (часть, которая делает функцию, будет заменена в основном коде именем функции.
Как создать функцию для фрагмента кода-это навык, которому вы должны научиться.

Изучите отладчик как можно скорее.
Отладчик - Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010 - YouTube[^]

1.11 — отладка программы (пошаговое выполнение и останова) | выучить C++[^]

Отладчик здесь только для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.


Stefan_Lang

Есть 5.

Вы также можете упомянуть, что вызов main() в конце цикла-это рекурсия! Разве он не говорил, что не должен использовать рекурсию? ;-p

Patrice T

Спасибо.
вы вольны сказать это в своем собственном решении.