Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2021, 17:34   #1
Vladix1
Пользователь
 
Регистрация: 27.10.2021
Сообщений: 13
По умолчанию C, Гипотеза Коллатца

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

Задание:

Возьмём любое положительное целое число n. Если n парное число, поделим надвое, получим таком образом n/2. Если n непарное число, умножим на 3 и прибавим 1, получив таким образом 3n+1. Над полученным числом выполняем те же самые действия, и так далее.

Гипотеза Коллатца (3n+1 дилемма, сиракузская проблема) — одна из нерешённых проблем математики. Получила широкую известность благодаря простоте формулировки. Названа по имени немецкого математика Лотара Коллатца. Парадокс заключается в том, что независимо от того, какое n мы выберем - конечная последовательно всегда когда-то придёт к 1. Например, для числа n=20 последовательно чисел выглядит так:

20, 10, 5, 16, 8, 4, 2, 1
Создайте функцию int collatz(const int number) с параметром:

const int number - Положительное ненулевое число (начало последовательности).
Функция вернет длину последовательности для числа n. Для приведённого примера числу 20 соответствует результат 8.

Function Call Example
printf("%d\n", collatz(20));
// prints: 8
printf("%d\n", collatz(35));
// prints: 14


Имею такой код:

Код:
#include <stdio.h>

 int collatz(const int);
 
int main(){
    printf("%d\n", collatz(20));
    
    return 0;
}
 
int collatz(const int number){
     int collatz = 1;
     while (number != 1){
         if (number % 2 == 0){
             int number = number / 2;
         }
         else {
             int number = number * 3 + 1;
         }
         collatz++;
     }

     return collatz;
 }

Последний раз редактировалось BDA; 27.10.2021 в 18:18.
Vladix1 вне форума Ответить с цитированием
Старый 27.10.2021, 18:20   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,322
По умолчанию

У вас получился бесконечный цикл. Раз параметр функции константный, то заведите новую переменную, запишите в нее значение number и её меняйте в цикле.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 27.10.2021, 18:30   #3
Vladix1
Пользователь
 
Регистрация: 27.10.2021
Сообщений: 13
По умолчанию

BDA, добавил переменную, но результат тот же, я не знаю в каком месте делаю не правильно, не могли бы вы мне указать на мою ошибку, Спасибо.
Изображения
Тип файла: jpg Снимок экрана 2021-10-27 172851.jpg (55.0 Кб, 7 просмотров)
Vladix1 вне форума Ответить с цитированием
Старый 27.10.2021, 18:33   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,322
По умолчанию

Внутри цикла не надо делать int j, а просто j.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 27.10.2021, 18:35   #5
Vladix1
Пользователь
 
Регистрация: 27.10.2021
Сообщений: 13
По умолчанию

BDA, <большое спасибо за предоставленную помощь
Vladix1 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Python] Гипотеза Гольдбах Чертенок7 Помощь студентам 7 04.07.2017 10:18
Гипотеза Симона Lotos_45 JavaScript, Ajax 1 06.03.2013 11:06
Гипотеза Римана kolobochino Общие вопросы C/C++ 0 27.11.2012 21:52
ABC гипотеза. Вопрос простой. А вы понимаете смысл этой и около этой гипотез и теорем? :) Alar Свободное общение 5 17.09.2012 17:51