|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
30.11.2016, 16:46 | #1 |
Новичок
Джуниор
Регистрация: 30.11.2016
Сообщений: 6
|
Мусорное значение в динамическом массиве в структуре
Здравствуйте!
Делаю вычисление факториала от 21 до 30. Использую длинную арифметику. Произведение длинного и короткого чисел - написал, работает. Пытаюсь всё это довести до ума рекурсией, составил алгоритм, вроде всё верно, но на выходе получаю не значение, а мусор. Не понимаю в чём дело. Много вопросов вставали пока писал программу, но все их смог самостоятельно решить, хоть было и трудно, но здесь понятия не имею как решить. Помогите пожалуйста. Подозреваю, что дело в указателях, но не знаю как исправить. Не могу затягивать, всё перерыл, закончить нужно как можно быстрее, по этому прошу помощи... Делаю пошагово, поэтому пока отталкиваюсь от значения факториала 20 ({ 0,0,0, 0,4,6, 6,7,1, 8,0,0, 2,0,9, 2,3,4, 2 }), и прописал множитель только для 21 ({ 1,2 }). Факториал от 0 до 12 - сделал через int, факториал от 13 до 20 сделал через double, думал потом объединить это всё, соответственно от 0 до 20 делать по простому, а дальше уже через произведение длинного и короткого. Собственно в этом коде как раз от 21 до 30 делаю... Код:
Последний раз редактировалось IgRRR; 30.11.2016 в 16:55. Причина: добавил данные, исправил ошибки |
30.11.2016, 16:59 | #2 |
Новичок
Джуниор
Регистрация: 30.11.2016
Сообщений: 6
|
Результат:
|
30.11.2016, 17:11 | #3 |
Новичок
Джуниор
Регистрация: 30.11.2016
Сообщений: 6
|
А если немного изменить main (выбрал факториал 20, т.е. должен вывестись факториал 20, без расчётов даже, не входя в рекурсию):
Код:
Т.е. по сути вывожу два раза один и тот же массив, а получаю разный результат... |
30.11.2016, 17:14 | #4 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,760
|
Код:
|
30.11.2016, 17:25 | #5 | |
Новичок
Джуниор
Регистрация: 30.11.2016
Сообщений: 6
|
Цитата:
Пытался скопировать массивы. Я предполагал, что что-то с памятью.. Но так и не понял как сделать.. и в чём проблема... Не подскажите как с наименьшим сопротивлением подправить это? Например процитированный вами отрезок, как правильно записать? |
|
30.11.2016, 19:48 | #6 |
Пользователь
Регистрация: 08.10.2016
Сообщений: 18
|
final.numb1 = new int[19];
memcpy (final.numb1 , number1, 19*sizeof(int)); |
01.12.2016, 10:59 | #7 | |
Новичок
Джуниор
Регистрация: 30.11.2016
Сообщений: 6
|
Цитата:
Забавно, но ведь я знал этот метод. Хотел его использовать, но т.к. плохо знаком с ним, решил циклом его заменить в одном месте, а в остальных почему-то не догадался и просто присваивал.. В общем использовал это, и решил проблему с мусором. Лишь возвращаемое значение функции не получилось так передать, но там видимо нормально работает указатель. Нашёл ещё некоторые проблему у себя, которые потом решил. На данным момент программка считает все факториалы от 0 до 29 включительно (у 0 просто ответ 1 задан, а дальше уже рекурсия с произведением длинных на короткие). А вот 30 не правильно считает XD Но тут уже видимо ошибка алгоритмического характера.. Буду искать косяк.. |
|
01.12.2016, 14:41 | #8 |
Новичок
Джуниор
Регистрация: 30.11.2016
Сообщений: 6
|
Всем спасибо, задачу решил.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Бинарные сортировки в динамическом массиве | hhh_hhh | Помощь студентам | 2 | 06.05.2014 08:26 |
поиск в динамическом массиве | novichok-ok | C# (си шарп) | 2 | 12.06.2012 23:19 |
Иерархия в динамическом массиве | [BeNdeR] | C# (си шарп) | 2 | 12.06.2012 00:44 |
добавление строк в динамическом массиве | Ioane | Visual C++ | 1 | 19.02.2012 17:57 |
Out of memory в динамическом массиве | Jor1k | Общие вопросы Delphi | 16 | 27.10.2010 18:39 |