1 / 1 / 0
Регистрация: 27.05.2012
Сообщений: 16
1

Функция должна выводить несколько значений, но выводить только одно. Почему?

20.01.2017, 20:58. Показов 1044. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Мне нужно создать рекурсивную функцию, которая выводит на экран все простые
множители числа n (единицу не учитывать) в Windows Forms.
Функция должна выводить несколько значений, но выводит только одно. Почему? Как сделать что бы выводились все значения? Подскажите, пожалуйста.
Я сделал 2 текстовых поля, в одном вводится число, в другом выдается результат, после нажатия на кнопку. И проверку на правильность введенных данных.
Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
private: System::Void btnCalculate_Click(System::Object^  sender, System::EventArgs^  e) {
        int InputNumber;
        bool result = Int32::TryParse(this->txtInput->Text, InputNumber);
        if (result) {
            errorProvider->SetError( this->txtInput, String::Empty);
            if(InputNumber > 28812){
                this->txtOutput->Text = "";
                errorProvider->SetError( this->txtInput, "Слишком большое число" );
                }
            if(InputNumber < 0){
                this->txtOutput->Text = "";
                errorProvider->SetError( this->txtInput, "Это отрицательное число" );
                }           
            
            double OutputNumber = rec(InputNumber); 
            this->txtOutput->Text = System::Convert::ToString(OutputNumber);
                    }
        else {
            this->txtOutput->Text = "";
            errorProvider->SetError( this->txtInput, "Это не число" );
             }
             }
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#pragma once
#include "stdafx.h"
 
long double rec(int n)
{
    
      for(int b = 2; b <= n;b++)
        if(n%b==0)
        {
            return b;
            rec(n/b);
            
        }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.01.2017, 20:58
Ответы с готовыми решениями:

Программа должна выводить на DataGrid несколько значений, но выдает ошибку
Программа должна выводить на DataGrid несколько значений, но выдает какую-то ошибку =( Честно не...

Почему у меня все метки выходят по очереди...хотя должна выводить только 1
label m1,m2,m3; var a,b,h : Integer; s : real; g : string; begin...

Можно ли через DataTextField выводить не одно значение, а сразу несколько?
&lt;asp:CheckBoxList runat=&quot;server&quot; ID=&quot;CheckboxList2&quot; DataSourceID=&quot;src1&quot; DataTextField=&quot;Имя&quot;...

Если искомых букв несколько, то программа должна выводить на экран первую из них по алфавиту
1)На вход программы подается текст на английском языке, заканчивающийся точкой (другие символы “.”...

2
Администратор
Эксперт .NET
16329 / 12818 / 5060
Регистрация: 17.03.2014
Сообщений: 26,086
Записей в блоге: 1
21.01.2017, 14:45 2
NightVVanderer, функция возвращает одно значение потому что return означает "закончи выполнение функции и верни значение в точку вызова". Это верно даже если return находится внутри цикла. То есть тебе нужно переписать функцию так чтобы она сначала получила все возможные делители и вернула их. Для этого тебе понадобится коллекция. Можно использовать vector из STL или дотнетовский List<T>. Одновременно стоит избавиться от рекурсии т.к. она здесь не нужна.
0
1 / 1 / 0
Регистрация: 27.05.2012
Сообщений: 16
21.01.2017, 18:48  [ТС] 3
Мне по заданию нужно через рекурсию сделать. Остальное попробую, спасибо.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.01.2017, 18:48
Помогаю со студенческими работами здесь

Программа выводит только 1 знак после запятой, хотя должна выводить больше
#include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;iomanip&gt; using namespace std; int main(){...

Есть программа, которая должна выводить график max и min функции, но она почему то не работает
Program Graphik; uses Graph; Type T=array of real; gt=string; var Gd,Gm: integer; z1,z2,z3:...

Написать функцию. Функция должна выводить сообщение об ошибке, если было введено два слова и более
Если непонятно задание, то напишу подробнее.

Можно ли в рамках ЕСЛИ рассчитывать и выводить сразу несколько значений
Смысл в следующем. Необходимо решить квадратное уравнение при определенных условиях. Решения...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru