#include <iostream>
using namespace std;
unsigned long Chisla(unsigned long number);
int main()
{
setlocale(LC_ALL, "Rus");
unsigned long number, numberf;
cout << "Введите число" << endl;
cin >> number;
numberf = Chisla(number);
cout << "Номер: " << numberf << endl;
system("pause");
return 0;
}
unsigned long Chisla(unsigned long number) {
if ((number == 1) || (number == 2))
{
cout<< (number);
}
else
{
cout << (Chisla(number - 1) + Chisla(number - 2));
cout << "/";
cout << (Chisla(number - 2) + Chisla(number - 4));
}
}
Итог: вводим любое число например 7
Выводит: 21
Должно выводить: 21/13
C/C++
Почему не выводится часть кода?
Тип функции не void, значит в её логическом конце должна быть инструкция return и какое-то значение. В данном случае значение типа unsigned long.
Я попробовал изменить код. Но он выводит не тот результат, что в у вас. Подумайте теперь, что в нём нужно изменить.
#include <iostream>
using namespace std;
unsigned long Chisla(unsigned long number);
int main()
{
setlocale(LC_ALL, "Rus");
unsigned long number, numberf;
cout << "Введите число" << endl;
cin >> number;
numberf = Chisla(number);
cout << "Номер: " << numberf << endl;
system("pause");
return 0;
}
unsigned long Chisla(unsigned long number) {
unsigned long n;
if ((number == 1) || (number == 2))
{
cout<< (number) << endl;
n = number;
}
else
{
cout << (number - 1) + (number - 2);
cout << "/";
cout << (number - 2) + (number - 4) << endl;
n = (number - 1) + (number - 2);
if((number - 1) + (number - 2) != 0)
n /= ((number - 1) + (number - 2));
}
return n;
}
Я попробовал изменить код. Но он выводит не тот результат, что в у вас. Подумайте теперь, что в нём нужно изменить.
#include <iostream>
using namespace std;
unsigned long Chisla(unsigned long number);
int main()
{
setlocale(LC_ALL, "Rus");
unsigned long number, numberf;
cout << "Введите число" << endl;
cin >> number;
numberf = Chisla(number);
cout << "Номер: " << numberf << endl;
system("pause");
return 0;
}
unsigned long Chisla(unsigned long number) {
unsigned long n;
if ((number == 1) || (number == 2))
{
cout<< (number) << endl;
n = number;
}
else
{
cout << (number - 1) + (number - 2);
cout << "/";
cout << (number - 2) + (number - 4) << endl;
n = (number - 1) + (number - 2);
if((number - 1) + (number - 2) != 0)
n /= ((number - 1) + (number - 2));
}
return n;
}
а что хотите подсчитать? Как это другой вопрос
Дмитрий ***
рекурсия хотелось бы, но... и выводит ХРЕНЬ, но не 21
Функция Chisla ничего не возвращает, но код явно пытается использовать ее результат.
Chisla(7-4) = Chisla(3) в ней идет вызов Chisla(3-4) и из-за переполнения получаем Chisla(4294967295)
P.s. транслит - это плохо
Chisla(7-4) = Chisla(3) в ней идет вызов Chisla(3-4) и из-за переполнения получаем Chisla(4294967295)
P.s. транслит - это плохо
Дмитрий ***
рекурсия налицо но ЧТО хотели подсчитать... По -моему искали общий множитель, но не факт
Похожие вопросы
- Подскажите почему не работает элементарнейший код на ардуино
- Помогите найти ошибки в коде на C++, не выводится последняя строчка
- [c++] Почему при возврате строки по ссылке(const), она не выводится в консоль? Подробности внизу.
- Ошибки в коде. Почему не работает и как сделать чтобы заработало ?
- С++. Почему в методе set_union единица повторяется несколько раз? Код и скриншот ниже
- Что не так выводится одна цена
- Напишите пожалуйста код на 5 вариант очень простой я на 1 курсе вуза и нужен простой код.
- Что за числа выводятся при переполнении int в C++?
- Написать код на языке C++
- Почему не работает код?