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

Проверить образуют ли введённые цифры последовательность Фибоначчи

22.05.2018, 17:46. Показов 1818. Ответов 5

Студворк — интернет-сервис помощи студентам
Задание: дана строка, содержащая числа и строчные латинские буквы. Проверить образуют ли введённые цифры последовательность Фибоначчи.

Не могу решить данную задачу. Запрет на ввод других символов, кроме строчных букв и цифр уже реализовал.
Идея на данный момент такая:
1) Отделить цифры в отдельный массив. При этом сделать чтобы числа записались в него как числа, а не цифры. Ну то есть 12 как 12, а не 1 и 2 отдельно. (Тоже не знаю как)
2) Проверять уже этот массив на порядок Фибоначчи. Проблема в том что его можно было бы сравнивать с каким то эталоном, но это же бесконечный ряд, это невозможно. Плюс ко всему я так понимаю нужно сделать условие что если чисел меньше трех то это уже не последовательность Фибоначчи.
Буду благодарен за любые идеи решения / подсказки / ссылки на подобные темы.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.05.2018, 17:46
Ответы с готовыми решениями:

Проверить образуют ли введенные числа последовательность Фибоначчи
В первой строчке вводится сколько всего элементов последовательности(до ста) Во второй строчке n натуральных чисел (n<10^9) (Числа...

Верно ли, что цифры данного числа образуют строго возрастающую последовательность
Помогите составить программу, печатающую значение true, если указанное высказывание является истинным, и false в противном случае: цифры...

Верно ли, что цифры данного числа образуют возрастающую или убывающую последовательность
Задачи на использование логических операторов, операторов отношения. Во всех заданиях данной группы требуется вывести логическое значение...

5
1 / 1 / 0
Регистрация: 11.05.2016
Сообщений: 12
22.05.2018, 18:28
Laymik,
для начала стоит отделить только цифры, это можно сделать используя только substring, 2 цикла for и 1 переменную типа string заменяя буквы на, например, пробелы

дальше смотрим сколько чисел у нас в строке (после первого действия у нас осталось что то вроде (2....3..5..........8)) и начинаем проверять, если > 3 и число = сумме 2х предыдущих ( используем неравенство с " " что бы использовать конкретно цифры) тогда условия выполняются и так пока не закончатся цифры


Это все теория, но попробуй сам посмотреть и попробовать, если не получиться, тогда помогу с кодом
1
228 / 165 / 110
Регистрация: 09.11.2015
Сообщений: 454
22.05.2018, 19:20
Лучший ответ Сообщение было отмечено Laymik как решение

Решение

Laymik, выбираешь числа из строки
C#
1
2
string str = "sf1dfd1dfd2dd3feeewe5ewer8dssddfs13efs";
int[] mas = Regex.Matches(str, @"\d+").Cast<Match>().Select(x => int.Parse(x.Value)).ToArray();
Затем, как написали выше, проходишь циклом с третьего числа, и смотришь, равно ли каждое число сумме двух предыдущих.
Если все удовлетворяют условию, то последовательность есть, но это не значит, что там числа Фибоначчи.

Число n является числом Фибоначчи, если https://www.cyberforum.ru/cgi-bin/latex.cgi?5{n}^{2}+4 или https://www.cyberforum.ru/cgi-bin/latex.cgi?5{n}^{2}-4 является квадратом.
Достаточно проверить первые три числа
1
 Аватар для EveKS
601 / 485 / 185
Регистрация: 19.04.2016
Сообщений: 1,885
22.05.2018, 19:29
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Numerics;
using System.Text.RegularExpressions;
 
namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            var p = new Program();
 
            var text = "2gghg3ghgh5ghgh8fgfg13gfdgdfg21fdfdfs";
 
            var numberCollection = p.StringToNumberCollection(text);
 
            var fibonacciCollection = p.Fibonacci(numberCollection.Count() + 2).Skip(2);
 
            Console.WriteLine(string.Join(" ", numberCollection));
 
            Console.WriteLine(string.Join(" ", fibonacciCollection));
 
            Console.ReadKey(false);
        }
 
        private IEnumerable<BigInteger> StringToNumberCollection(string text)
        {
            return Regex.Split(text, @"\D+", RegexOptions.CultureInvariant)
                .Where(s => !string.IsNullOrWhiteSpace(s))
                .Select(BigInteger.Parse);
        }
 
        private IEnumerable<BigInteger> Fibonacci(int count)
        {
            BigInteger f1 = 1, f2 = 1, f3;
            while (count-- > 0)
            {
                yield return f1;
                f3 = f1 + f2;
                f1 = f2;
                f2 = f3;
            }
        }
    }
}
Остаётся сравнить 2 коллекции ))
1
0 / 0 / 0
Регистрация: 01.05.2018
Сообщений: 4
25.05.2018, 20:58  [ТС]
Не могли бы вы подробней рассказать что происходит во второй строке?
Хоть я и решил свой вопрос с её помощью, хотелось бы узнать подробней чтобы использовать в будущем.
0
228 / 165 / 110
Регистрация: 09.11.2015
Сообщений: 454
26.05.2018, 00:05
Laymik, Regex.Matches(str, @"\d+") ищет в строке все вхождения регулярного выражения и возвращает MatchCollection
Cast<Match>() приводит элементы указанного типа к последовательности IEnumerable
Дальше с помощью Linq парсим значение каждого элемента последовательности

вторая строка то же самое, что и
C#
1
2
3
4
5
6
7
string str = "sf1dfd1dfd2dd3feeewe5ewer8dssddfs13efs";
MatchCollection mc = Regex.Matches(str, @"\d+");
 
int[] mas = new int[mc.Count];
 
for (int i = 0; i < mc.Count; i++)
      mas[i] = int.Parse(mc[i].Value);
P.S. объяснять я не мастак, если честно. Может быть кто-нибудь получше сможет объяснить.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.05.2018, 00:05
Помогаю со студенческими работами здесь

Проверить образуют ли введенные числа возрастающую или убывающую последовательность
Ввести N вещественных чисел. Проверить образуют ли эти числа возрастающую или убывающую последовательность. Буду очень благодарен если...

Проверить образуют ли введенные числа возрастающую или убывающую последовательность
Ввести N вещественных чисел. Проверить образуют ли эти числа возрастающую или убывающую последовательность. Написать код без...

Верно ли, что цифры данного трехзначного числа образуют возрастающую или убывающую последовательность
Суть проблемы:Если ввести четырехзначное число,то программа выведет всё равно True или False.И ещё:если ввести буквы,то программа тоже...

Проверить истинность высказывания: «Цифры данного трехзначного числа образуют геометрическую прогрессию»
Не получается никак.

В заданной матрице проверить, что элементы каждой строки образуют возрастающую последовательность
В заданной матрице проверить, что элементы каждой строки образуют возрастающую последовательность. Результат дл я каждой строки вывести на...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru