Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
44 / 1 / 0
Регистрация: 26.04.2017
Сообщений: 54
1

Генерация чисел Фибоначчи

04.12.2018, 20:32. Показов 2834. Ответов 3

Author24 — интернет-сервис помощи студентам
Здравствуйте, помогите, пожалуйста, решить следующую проблему. Имеется программа, суть которой выводить на экран числа Фибоначчи по 3 штуки таким образом, что сначала должны отобразиться различные, не следующие друг за другом, числа из 1-ой цифры( типа 0 3 5 ), затем числа, состоящие из 2-ух цифр и т.д.
Вот что пока получилось сделать
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
private void StartButton_Click(object sender, EventArgs e)
        {
            n = new Random((int)DateTime.Now.Ticks).Next(1, 7); // 7 - т.к. первое 3 числа должны состоять из 1 цифры 
 
            StartButton.Enabled = false;
            LoadResults();
            StartGame();
        }
 
        // сработал таймер
        private void timer1_Tick(object sender, EventArgs e)
        {
            
            Times++;
            if (Times > HowManyNumbers) // конец уровня, ввод с клавиатуры чисел
            {
                timer1.Enabled = false;
                NumberLabel.Visible = false;
                InputPanel.Visible = true;
                tabControl1.SelectedTab = tabPage3;
                AnswerEdit.Focus();
                AnswerEdit.Text = "";
            }
            else // показать следующее число
            {
                
                NumberLabel.Text = (new Random((int)DateTime.Now.Ticks)).Next(
                     Convert.ToInt32(fibonacci.GetNumber(n,0,1)),
                     Convert.ToInt32(fibonacci.GetNumber(n++, 0, 1))).ToString();
 
                /*NumberLabel.Text = (new Random(System.DateTime.Now.Millisecond)).Next(
                    Convert.ToInt32(Math.Pow(10, Level - 1)), // с обычными числами работает нормально
                    Convert.ToInt32(Math.Pow(10, Level) - 1)).ToString();*/
               
 
                shown = shown + " " + NumberLabel.Text;
                Thread.Sleep(20);
                n = new Random((int)DateTime.Now.Ticks).Next(1, 7).; // 7 - т.к. первое 3 числа должны состоять из 1 цифры 
            }
           
        }
 class Fibonacci
    {
        public int GetNumber(double n, int p1 = 0, int p2 = 1)
        {
            if (n <= 1) return p1;
            int p;
            for (int j = 2; j < n; j++)
            {
                p = p1;
                p1 = p2;
                p2 = p2 + p;
            }
            
            return p2;
        }
        
    }
Проблема заключается в том, что отображаемые числа повторяются, как генерировать уникальные числа без повторов?
И как сделать так, чтобы отображать числа не идущие друг за другом последовательно?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.12.2018, 20:32
Ответы с готовыми решениями:

Генерация списка Фибоначчи не работает
Создаю список чисел фибоначчи, данный код генерирует такой...

Генерация чисел Фибоначчи с задержкой
Определить класс с помощью которого реализовать случайную генерацию чисел методом Фибоначчи с...

Генерация первых n чисел Фибоначчи
Создать программу, которая способна генерировать первые n чисел Фибоначчи (где n -- параметр,...

Одномерные массивы (генерация чисел первыми 15 числами Фибоначчи, функции)
Объявите одномерный целочисленный массив, в котором 15 элементов. Выполните генерацию массива...

3
644 / 528 / 324
Регистрация: 20.05.2015
Сообщений: 1,469
06.12.2018, 07:18 2
Лучший ответ Сообщение было отмечено Yavorsky как решение

Решение

Как вариант сделать как-то так:
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
            List<List<int>> fib_mas = fib2(10);
            int kol = 3;
            for (int i = 0; i < fib_mas.Count(); i++)
            {
                string s = "";
                if (fib_mas[i].Count() >= kol * 2 - 1)
                {
                    int rows = fib_mas[i].Count() / kol;
                        for (int k = 0; k < rows; k++)
                        {
                            s = "";
                            for (int j = 0 + k; j < fib_mas[i].Count(); j += 2)
                            {
                                s += fib_mas[i][j] + " ";
                            }
                            listBox2.Items.Add(s);
                        }
                }
        private List<List<int>> fib2(int n)
        {
            List<List<int>> st = new List<List<int>>();
            int len=10;
            int last=0;
            int next=1;
            int buf = 1;
            for (int i = 0; i < n; i++)
            {
                st.Add(new List<int>());
                do
                {
                    next = buf;
                    if (st[i].Contains(last)==false)
                    st[i].Add(last);
                    buf = next + last;
                    last = next;
                } while ( next / len == 0);
                len *= 10;
            }
            return st;
        }
1
44 / 1 / 0
Регистрация: 26.04.2017
Сообщений: 54
08.12.2018, 14:52  [ТС] 3
Aferuga, спасибо!
0
9 / 5 / 5
Регистрация: 08.02.2019
Сообщений: 32
29.03.2019, 04:56 4
46 строку надо поместить под 49, тогда условие внутрь цикла попадёт. Иначе у вас это условие (46) никогда не выполнится.
0
29.03.2019, 04:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.03.2019, 04:56
Помогаю со студенческими работами здесь

Сумма первых 15 нечетных чисел Фибоначчи с первыми 5 четными числами Фибоначчи
Ребята вообщем такое задание :Напишите программу для вычисления сумму первых 15 нечетных чисел...

Вычисление чисел Фибоначчи и номера числа Фибоначчи с накопителями
Требуется три накопителя - текущий номер, само число Фибонначи и предыдущее число...

Определить номер N числа Фибоначчи, при котором сумма N первых чисел Фибоначчи превышает заданное число М
Определить номер N числа Фибоначчи, при котором сумма N первых чисел Фибоначчи превышает заданное...

Набрать с чисел Фибоначчи в интервале от 1 до 100, только просто числа, а также их порядковые номера в ряду Фибоначчи
Помогите с задачкой Набрать с чисел Фибоначчи в интервале от 1 до 100, только просто числа, а...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru