Вопрос № 125411: Уважаемые эксперты, помогите пожалуйста решить задачки
1. написать и протестировать рекурсивнуюфункцию REVERSE(str),которая переворачивает данную строку на том же самом месте. Сравнить время ее работы и время работы нерекурсивной версии.
<br...Вопрос № 125483: Помагите дописать код.
вот сам вопрос: Дана последовательность действительных чисел a1, a2, . . . , an ( n >= 2 и
заранее неизвестно). Если последовательность упорядочена по неубыванию, то оставить ее без изменения, иначе получить послед...Вопрос № 125497: Здравствуйте уважаемые эксперты.
Помогите разобраться с программой, верней с функцией печатающий массив.
Никак не могу понять как она работает.
Заранее благодарю)..
...
Вопрос № 125.411
Уважаемые эксперты, помогите пожалуйста решить задачки
1. написать и протестировать рекурсивнуюфункцию REVERSE(str),которая переворачивает данную строку на том же самом месте. Сравнить время ее работы и время работы нерекурсивной версии.
2.написать и протестировать функцию, которая преобразует строку двоичных цифр в эквивалентное ей целое десятичное число.
ЧЕРЕЗ VISUAL STUDIO....
заранее большущее пасибо!!!!
Отвечает: Сандров Алекс
Здравствуйте, Дебелов Владимир Валентинович!
В приложении программа.
Я хотел сделать рекурсивную по-проще, поэтому она запрашивает ещё длинну строки.
Нерекурсивную взял обычную.
Увы, обе у меня работали 0 мсек :)
--------------------------------------
Вторая задачка там же, сделал через рекурсивную функцию тоже. Всё что не "1" считается нулём.
Приложение:
Ответ отправил: Сандров Алекс (статус: 5-ый класс)
Ответ отправлен: 29.02.2008, 13:49 Оценка за ответ: 5 Комментарий оценки: Огромное спасибо, я не спец в c++ но програмка нормально работает и меня это очень радует =)) у нас лекции небыло вот я и застрял с ними. ещё раз СПАСИБО =))
Отвечает: shayen
Здравствуйте, Дебелов Владимир Валентинович!
Решение второй задачи находится в приложении, компилировался в VS 2003
Приложение:
Ответ отправил: shayen (статус: 4-ый класс)
Ответ отправлен: 29.02.2008, 21:19 Оценка за ответ: 5 Комментарий оценки: и вам тоже огромное спасибо!!! осталось только разобраться что и как работает=) меня ещё ждёт гора теории по этой теме =( но одно радует что программка классно работает =)
Вопрос № 125.483
Помагите дописать код.
вот сам вопрос: Дана последовательность действительных чисел a1, a2, . . . , an ( n >= 2 и
заранее неизвестно). Если последовательность упорядочена по неубыванию, то оставить ее без изменения, иначе получить последовательность an , an-1 , . . . , a1(т.е. в обратном порядке)
Приложение:
Отправлен: 29.02.2008, 20:35
Вопрос задал: Костян (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Denisss
Здравствуйте, Костян!
Пример находится в приложении.
В примере добавлено 5 функций:
- void printList(elem *head) - печатает на экран последовательность (список);
- bool checkGrowth(elem *head) - возвращает true, если список неубывающий;
- elem * reverseList(elem *head) - возвращает список в обратном порядке;
- void releaseList(elem *head) - освобождает память (удаляет список);
- void saveListToFile(elem *head) - сохраняет список в файл "prog1.txt".
Удачи!
Приложение:
--------- Будь осторожен, когда молишься ради чего-то, потому что можешь это получить...
Ответ отправил: Denisss (статус: Профессионал) Россия, Москва ICQ: 281599577 ---- Ответ отправлен: 02.03.2008, 00:19
Вопрос № 125.497
Здравствуйте уважаемые эксперты.
Помогите разобраться с программой, верней с функцией печатающий массив.
Никак не могу понять как она работает.
Заранее благодарю)..
Отвечает: Zloi_goh
Здравствуйте, Александр Кузнецов! Попробую объяснить.
someFunction работает следующим образом:
Вначале проверяется не равно ли size 0, если нет функция вызывает саму себя. При этом в качестве аргументов передается сдвинутый на одну позицию указатель b и уменьшенный на 1 size. Управление переходит вначало функции. Снова проверка size на равенство нулю и т.д. Таким образом создается цепочка вызовов функции.
При последнем вызове указатель b указывает на последний эллемент массива. Дальше самое интересное. Вызовы начнут по очереди возвращать управление на строку:
cout<< b[0] << " " ;
При этом b будет указывать каждый раз на предидущий эллемент массива, по принципу стека - первый вошел последний вышел. Следовательно массив будет выводится в обратном порядке.
Уф... Чесное слово это легче понять чем объяснить.
--------- Лучше идти чем бежать, лучше стоять чем идти, лучше сидеть чем стоять, лучше лежать чем сидеть, лучше умереть чем лежать.
Ответ отправил: Zloi_goh (статус: 1-ый класс)
Ответ отправлен: 01.03.2008, 00:48 Оценка за ответ: 5
Отвечает: shayen
Здравствуйте, Александр Кузнецов!
В данном случае вы имеете дело с рекурсией, то есть вызов функции из самой себя. Функция someFunction будет вызывать себя, постоянно уменьшая на единицу значение аргумента size, этот этап рекурсии называется углублением. Процесс продолжается до тех пор, пока аргумент size при очередном вызове не станет равен 0. С этого момента начинается обратная стадия рекурсии - подъём. Функция возвращает значение сначала последнего элемента массива потом предпоследнего и т.д. до тех пор пока значение параметра size не станет
равно arraySize (в вашем случае)
Ответ отправил: shayen (статус: 4-ый класс)
Ответ отправлен: 01.03.2008, 23:22