| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Вопрос про сортировку и использование дат |
| Автор: Exister 9.4.2007, 13:58 | ||||
| Чтоб не создавать 2 темы задам оба вопроса тут: 1)есть однонаправленная списковая структура с 3 полями
нужно упорядочить ее по dan.tovar т.е. по названию получается написал вот такой код, компилятор ошибок не выдает,но при запусе этой ф-ции прога вылетает, пишет память не может быть "read". Кто видит ошибку?
2)Нужно проверять не истек ли срок годности товара т.е. для товара вводятся дата поступления и срок годности и сравнить эт с сегодняшней датой. Как это сделать? Буду очень благодарен за помощь, а то сдача курсовой на носу, а я с этим застопорился. |
| Автор: JAnty 9.4.2007, 14:34 | ||||
Есть подозрения на бесконечность цикла, next меняут значение??? И потом:
Ищи ошибку сообщениями: int _tmp_; printf("%d",_tmp_); тоесть:
|
| Автор: The Thing 9.4.2007, 14:46 | ||
Сравнивай текущую дату с указанной датой
|
| Автор: Vyacheslav 9.4.2007, 14:48 | ||
Где гарантия что в
ref_kg->next не равно NULL; |
| Автор: The Thing 9.4.2007, 14:53 | ||||||
Переписал на Си... но не проверял. Потыкай ее.. помоему я уже находил в ней какую-то ошибку в последних двух условиях...
Добавлено через 4 минуты и 19 секунд На счет первого вопроса: у тебя как-то неаккуратно написан код (на мой взгляд..) - разбираться даже не хочется. Лучше всего возьми базу из 2-4 элементов и проверь в режиме отладки. Сам все найдешь... Добавлено через 7 минут и 32 секунды
Нет, а она и не нужна... неужели не может быть строки нулевой длины? если вторая часть отлична от нулуля, то выдаст != 0 |
| Автор: Exister 9.4.2007, 16:10 | ||
добавил сообщения, выходит что
выполняется 1 раз т.е. после первого выполнения IF сразу вылетает. |
| Автор: Exister 9.4.2007, 18:49 |
| The Thing, большое спасибо за подсказку с датами, все отлично работает. Осталось только упорядочить. Кто-нибудь может с этим помочь? |
| Автор: Arks 10.4.2007, 08:20 |
| 1) Что такое ref_kg - лучше бы её локальной сделать. Иначе можешь где-нибудь испортить и потом долго думать из-за чего так странно прога себя ведет. 2) Проверь правильно ли строится список 3) if(ref_kg->next && strcmp(ref_kg->dan.tovar, ref_kg->next->dan.tovar)<0) либо if(ref_kg!=NULL) for(ref_kg=head_kg; ref_kg->next!=NULL; ref_kg=ref_kg->next) |
| Автор: The Thing 10.4.2007, 10:05 | ||||||||
А, в этом смысле.. Да. Я полностью солидарен. Я думал имелось ввиду про strcmp, где вместо строки будет послан NULL. (плохо посмотрел код) Извиняюсь Добавлено через 4 минуты и 7 секунд кстати, скорее всего именно в этом и есть ошибка! возможно следует исправить строку
на что-нибудь вроде этого:
возможно не совсем корректно.. сильно не вдавался в смысл написанного, но идея думаю понятна |
| Автор: Exister 10.4.2007, 19:37 |
| Всем спасибо за помощь, все сделал, все работает! |
| Автор: Arks 10.4.2007, 20:01 |
| Пометь вопрос как решённый. |