![]() |
|
Модераторы: bsa |
![]()
|
|
| Him |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 5.5.2009 Репутация: нет Всего: нет |
Добрго Вам времени суток!
Помогите разобраться с программой. Вот ее код на языке СИ (Borland СИ):
У меня возникли трудности с переносом в функции указателей на структуры и вставляемые элементы. Составлял программу пользуясь различной литературой, вот нестыковки и получаются. В частности, как правильно описать функцию и как ее потом вызвать с использованием указателей. Плохо понимаю, поэтому, если не трудно, то напишите пример из программы и кратко пояснение к нему. Помогите откорректировать программу. |
|||
|
||||
| bsa |
|
||||||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Функция, которая возвращает указатель на целое:
В принципе, можно последную функцию описать так (ничего не изменится):
|
||||||||||||
|
|||||||||||||
| Him |
|
||||||||||
|
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 5.5.2009 Репутация: нет Всего: нет |
bsa,
В принципе мне понятно то, что Вы написали, но возникли некоторые вопросики. Я использовал примеры из готового сборника, а там
Не получается понять назначение этой подмены, т.е как будет выглядеть код без нее. На мой взгляд такая подмена только затрудняет визуальное восприятие. А второе, зачем вводить функцию принятия адреса значения, например
если это реализовано
По логике вещей я должен этот адрес
Помогите в этом моменте, пожалуйста. Это сообщение отредактировал(а) Him - 13.5.2009, 09:45 |
||||||||||
|
|||||||||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 12 Всего: 72 |
Push() вставляет в стек пока не кончится память
Pop() не проверяет есть ли что в стеке |
|||
|
||||
| Him |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 5.5.2009 Репутация: нет Всего: нет |
math64,
Спасибо Вам за ответ, но этот момент, что
я понимаю, меня интересует конкретное назначение подмены
|
||||
|
|||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
вместо Stack будет stack вместо StackPtr будет Stack* |
|||
|
||||
| Him |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 5.5.2009 Репутация: нет Всего: нет |
Спасибо всем, но, к сожалению, пример не решен.
ИЗМЕНЯЮ ВОПРОС. ЭТО ЭТО BORLAND C++ (v3.0-3.1) В даном случае надо просто внести в стек данные типа int и вывести на экран (это я просто часть задания взял для рассмотрения), вот код:
Однако, при компиляции появляются сообщения: Cannot convert 'stack' to 'stack * *' Type mismatch in parametrer 'BeginPtr' in call to 'Push(stack * *,int)' Помогите мне, пожалуйста, исправьте ошибки. ЭТО BORLAND C++ (v3.0-3.1) Это сообщение отредактировал(а) Him - 24.5.2009, 09:54 |
|||
|
||||
| Dmi3ev |
|
||||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1698 Регистрация: 28.11.2007 Репутация: 13 Всего: 41 |
здесь ты объявил BeginPtr так а передаешь
а p1 объявлен как
не вникал особо в суть задачи, но может это вот так надо объявить
? Это сообщение отредактировал(а) Dmi3ev - 24.5.2009, 10:08 -------------------- |
||||||||||
|
|||||||||||
| Him |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 5.5.2009 Репутация: нет Всего: нет |
Dmi3ev,
Да нет, здесь *BeginPtr должен быть ссылкой на начало первого элемента стека, куда же тогда вносить значения ... Я действительно запутался с этими объявлениями. Пример скомпоновывал из разных сборников иметодичек, поэтому и путаница с этими обявлениями. На словах понимаю, что делать, а вот реализовать не могу. |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 10 Всего: 33 |
Him, Хотел помочь...но похоже, тот кто писал этот код - Гений...епс
Не понятно для чего столько тайпдефоф. В 19-ой строке, ты передаешь аргумент по указателю на указатель, потом разименовываешь его...для чего? Кароче компилится. Ошибок нет. А работает или нет...хз... Лучше перепиши код по человечески, а не по принципу адской головоломки.
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| Dmi3ev |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1698 Регистрация: 28.11.2007 Репутация: 13 Всего: 41 |
ссылкой? Him, просто как-то странно, что ты передаешь одно, а принимаешь другое... хз, по-моему... Добавлено через 3 минуты и 41 секунду andrew_121, ты ваще как-то по своему это воспринял зы если все так и должно быть, то какого не компилится, может потому, что так не должно быть? -------------------- |
|||
|
||||
| Him |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 5.5.2009 Репутация: нет Всего: нет |
andrew_121,
На счет Typedef-ов я согласен, сам не понял половину, мне бы лучше простой код, но это у нас в методичке препод так написал. Вот и мучаюсь. Въехать толком не получается. Теория понятна (более-менее), а реализация - завал. Запустил, только еще больше ошибок наделалось: Compiling PR0B3-2.CPP: Error PR0B3-2.CPP 27: Declaration syntax error Error PR0B3-2.CPP 28: Type name expected Error PR0B3-2.CPP 28: Cannot conuert 'stack *' to 'int' Error PR0B3-2.CPP 29: Declaration terminated incorrectly Error PR0B3-2.CPP 36: Unexpected |
|||
|
||||
| Dmi3ev |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1698 Регистрация: 28.11.2007 Репутация: 13 Всего: 41 |
andrew_121 потому что невнимательный в функции пуш в начале нет скобки...
Добавлено через 54 секунды в 28 круглые скобки убери... вроде они там лишние... -------------------- |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 10 Всего: 33 |
Я его сначала скомпилил, а потом отформатировал. Him, Сорри... Добавлено через 1 минуту и 48 секунд Dmi3ev, Хорош критиковать. Я вот всю ночь кодил, аж мозг кипит. Вот пытаюсь постепенно нагрузку понизить. Ну как в спорте...знаешь? Потому что уснуть не получается. Добавлено через 9 минут и 5 секунд Это еще по лучше того топика с диаметром окружности в трехмерном пространстве. Dmi3ev, Слушай. Расскажи ка ты лучше мне как создать СВН репозиторий. У меня есть ФТП. А? Добавлено через 10 минут и 48 секунд Him, Еще мой код может не работать у тябя из-за того что я кожу под Лином. Шутка. P/S/ Пора спатки... -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| Him |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 5.5.2009 Репутация: нет Всего: нет |
andrew_121,
Исправил все, запустил, ввел первую цифру (1), так она зациклилась на сообщении "Ne mogu vvesti znachenie v stack" В чем проблем может быть? Исправил,
так она показала один раз эту цифру и снова бесконечно по экрану "Ne mogu vvesti znachenie v stack"... Это сообщение отредактировал(а) Him - 24.5.2009, 11:12 |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |