|
15 / 15 / 7
Регистрация: 20.11.2013
Сообщений: 92
|
||||||
Поиск чисел Фибоначчи20.11.2013, 02:33. Показов 3090. Ответов 12
Метки нет (Все метки)
Доброго времени суток!
Написал программку, которая находит значение n-элемента в последовательности Фибоначчи. Изначально в ней содержалась ошибка (в последствии исправил). Когда я решил проверить программу, то получилось, что при поиске 20 элемента программа ошибалась на один элемент и показывала значение 19 элемента(но при этом корректно отображала значения). Но если я вводил <= 17 или > 21, то естественно отображался мусор. Объясните, пожалуйста, почему такое происходит?
0
|
||||||
| 20.11.2013, 02:33 | |
|
Ответы с готовыми решениями:
12
Составить программу поиска первых n четных чисел (n - с клавы), в последовательности чисел Фибоначчи |
|
2356 / 1774 / 212
Регистрация: 07.01.2011
Сообщений: 10,342
|
||||||||||||||||||||||||||
| 20.11.2013, 03:07 | ||||||||||||||||||||||||||
|
возможно так:
23 строчка коду:
Мне кажется вы что то путаете с инициализацией и работой с масивой. При работе в цикле, например, вы должны двигатся от 0 елемента до размер-1. А вот при инициализации - просто размер. Т.е. вместо
0
|
||||||||||||||||||||||||||
|
15 / 15 / 7
Регистрация: 20.11.2013
Сообщений: 92
|
||||||
| 20.11.2013, 03:18 [ТС] | ||||||
|
Я, наверное, криво поставил вопрос =) Проблема заключается не в том, что вы озвучили. Сейчас программа корректно работает. Изначально, ошибка была в этом
0
|
||||||
|
413 / 250 / 118
Регистрация: 26.12.2012
Сообщений: 787
|
||||||||||||||||
| 20.11.2013, 03:30 | ||||||||||||||||
|
У вас массив статический и самый большой размер 1,а чисел много вот и будет мусор.Создайте динамический массив
Вот рабочий код
0
|
||||||||||||||||
|
|
|
| 20.11.2013, 03:38 | |
|
h8er, у тебя массив не статический, а вообще фиг пойми какой. Массивы объявляются только постоянного размера!
int fib[input] выдаст ошибку!
0
|
|
|
15 / 15 / 7
Регистрация: 20.11.2013
Сообщений: 92
|
||
| 20.11.2013, 04:00 [ТС] | ||
|
Ребят, спасибо вам за помощь в решении, но вопрос немного в другом. В целом, программа работает корректно. Проблема в том, что в моем листинге изначально ошибка заключалась в том, что первый цикл начинал записывать в 3 элемент массива, вместо положенного второго. Из-за того, что 3 элемент не инициализирован, там содержится мусор и дальнейшие действия идут с мусором. Вопрос - почему при поиске 20 элемента программа отображает корректные значения(6765), а при поиске 15 элемента там уже содержится мусор(62600312)? То есть одинаковые действия, но результат разный?
Добавлено через 20 минут Если кого-нибудь не затруднит, не могли бы вы скомпилировать код из первого сообщения и ввести в программе сначала 20, а затем 15 и посмотреть на результат. Может быть это только у меня такое, а я тут всем мозг выношу зазря =))
0
|
||
|
11 / 9 / 6
Регистрация: 16.08.2013
Сообщений: 36
|
|
| 20.11.2013, 04:19 | |
|
H8er, когда компилятор не выдаёт ошибку это ещё не значит что он понял что вы хотели сосчитать.
Обратите внимание: ваш мусор при каждом новом запуске программы должен быть разным,хотя может и не меняться. Это из-за того что ваш массив вылез сам из себя. Так вот ваш массив из трёх элементов представим в виде трёх домов стоящих в ряд на очень длинной улице. Очень длинная улица - это вся оперативная память вашего компьютера. Эти три дома стоят в одном квартале(ваш массив), когда адрес массива вылезает за пределы этого массива (меньше 0, или больше 2), то программа берёт адрес дома из соседнего квартала. C++ это почему-то разрешает, поймёте это когда научитесь работать с арифметикой указателей на адреса. Ошибку не выдаёт,потому-что считает что вы супер-мега программист.
0
|
|
|
15 / 15 / 7
Регистрация: 20.11.2013
Сообщений: 92
|
||
| 20.11.2013, 04:48 [ТС] | ||
|
Мое непонимание в том, что работа заведомо ошибочной программы дает верные результаты(пусть и со смещением -1), но только в том случае, если водить значения >17 и < 21. В этом диапазоне значений программа дает корректные результаты, в случае других значений(например 15), соответственно, неправильные результаты. Вот и вопрос - из-за чего такое поведение? Добавлено через 8 минут Откуда взялись эти цифры(17-21) почему только с ними отображает нормальный результат, а в других случаях - мусор? Может быть проблема в компиляторе? Я использую Dev-C++ и компилятор gcc (MinGW я так понимаю)
0
|
||
|
413 / 250 / 118
Регистрация: 26.12.2012
Сообщений: 787
|
|
| 20.11.2013, 12:25 | |
|
Ваша программа показывает только 2 верных числа 0 и 1 все остальное работа с мусором.
0
|
|
|
413 / 250 / 118
Регистрация: 26.12.2012
Сообщений: 787
|
|
| 20.11.2013, 12:27 | |
|
Результат работы вашей программы.
1
|
|
|
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
|
|
| 20.11.2013, 12:50 | |
|
Variable length array в C++ вообще нет, тут это работает как фича gcc. Память под такой массив выделяется в стеке, а он по адресам растёт сверху вниз. Соответственно, адрес этого массива и мусор, который там окажется, при прочих равных условиях зависят от размеров. А описанное поведение подходит под случай, когда в f[2] оказывается 0.
1
|
|
|
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 72
|
||||||
| 20.11.2013, 13:16 | ||||||
0
|
||||||
|
Мой лучший друг-отладчик!
|
||||||
| 20.11.2013, 13:19 | ||||||
|
Если нужна не последовательность чисел Фибоначчи, а только n-элемент, то думаю стоит воспользоваться алгоритмом нахождения за O(log N).
Вот код:
1
|
||||||
| 20.11.2013, 13:19 | |
|
Помогаю со студенческими работами здесь
13
Поиск с использованием ряда Фибоначчи поиск числа в массиве типа int методом Фибоначчи Сумма чисел Фибоначчи
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|