Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2013, 17:37   #1
MIKE11IPME
Форумчанин
 
Регистрация: 03.05.2010
Сообщений: 159
По умолчанию Указатели

почему не работает такая вот конструкция ?
Код:
while cur<>nil do
    begin
      Result:=Result+cur^.inf;
      cur:=cur^.next;
    end;
имеем двусвязный список , некст- указатель на след запись , переприсваиваем значение текущего указателя на след , если некст ни на что не указывает(пустой) , тогда текущий указатель пуст => цикл прерывается
проблема возникает из-за проверки , он не воспринимает пустой указатель как пустой
MIKE11IPME вне форума Ответить с цитированием
Старый 02.06.2013, 17:38   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а вы его обнуляли при создании структуры?
далее, проверяли ли под отладчиком значение?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.06.2013, 17:59   #3
MIKE11IPME
Форумчанин
 
Регистрация: 03.05.2010
Сообщений: 159
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
а вы его обнуляли при создании структуры?
далее, проверяли ли под отладчиком значение?
все понял , надо последний указатель обнулять ? нус т.е. ссылка на след указатель у последнего должен быть равен нил (точнее если текущий последний то cur^.next:=nil , вы это имели ввиду под обнулением ?
еще отчнее при создании нового указателя (New(cur) указатель на след сразу обнуляем cur^.next:=nil)

Спасибо думал , что при создании указатель сразу нулевой

Тут возникло еще пару вопросов :
Использую функцию Power и вылететь за границы очень легко , вопрос состоит в том , как заставить его не вылетать границы ? (есть на уме вариант с try ,возможно есть более интересные способы обработки)

Второй вопрос (наверно уже такой бородатый) , как в if проверить сразу несколько условий ? (например "if a in ['+','_','*','/'] then")

Последний раз редактировалось Stilet; 03.06.2013 в 14:19.
MIKE11IPME вне форума Ответить с цитированием
Старый 03.06.2013, 06:06   #4
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,899
По умолчанию

Так и будет:
Код:
if a in ['+','_','*','/'] then
но а должно быть символом, а не строкой, для строки можно в принципе использовать индексацию - a[1], получится взятие первого символа строки.
phomm вне форума Ответить с цитированием
Старый 03.06.2013, 13:14   #5
MIKE11IPME
Форумчанин
 
Регистрация: 03.05.2010
Сообщений: 159
По умолчанию

Цитата:
Сообщение от phomm Посмотреть сообщение
Так и будет:
Код:
if a in ['+','_','*','/'] then
но а должно быть символом, а не строкой, для строки можно в принципе использовать индексацию - a[1], получится взятие первого символа строки.
Да но проблема в том что знак числа , а не операция, может быть на первой позиции , конечно можно написать обработку строки на содержание других элементов(или на длину строки) или есть все-таки еще какие-то способы сравнения строк ?
MIKE11IPME вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
указатели salmon172 Паскаль, Turbo Pascal, PascalABC.NET 0 31.05.2011 21:34
указатели novak3 Общие вопросы C/C++ 6 27.05.2011 20:47
Указатели AquaticSoul Общие вопросы C/C++ 5 22.12.2009 15:13
[C] массивы, указатели, двойные указатели. Iggel Общие вопросы C/C++ 5 05.05.2009 12:39