15 / 15 / 0
Регистрация: 20.06.2010
Сообщений: 142
|
|||||||||||
1 | |||||||||||
Сортировка массив структур: qsort выдает Expression syntax13.06.2012, 01:27. Показов 2043. Ответов 23
Метки нет (Все метки)
Имеется код для сортировки массива структур:
0
|
13.06.2012, 01:27 | |
Ответы с готовыми решениями:
23
Сортировка массива структур с использованием qsort Сортировка массива структур без использования Qsort Error E2188 expression syntax Expression syntax как исправить? |
Модератор
12438 / 7465 / 1749
Регистрация: 25.07.2009
Сообщений: 13,721
|
|
13.06.2012, 01:57 | 2 |
0
|
15 / 15 / 0
Регистрация: 20.06.2010
Сообщений: 142
|
|
13.06.2012, 02:44 [ТС] | 3 |
0
|
Модератор
12438 / 7465 / 1749
Регистрация: 25.07.2009
Сообщений: 13,721
|
||||||
13.06.2012, 03:36 | 4 | |||||
Сообщение было отмечено Памирыч как решение
Решение
Тогда больше кода нужно. Как структура объявлена? Как массив заполняется?
0
|
15 / 15 / 0
Регистрация: 20.06.2010
Сообщений: 142
|
||||||
13.06.2012, 09:44 [ТС] | 5 | |||||
Вот весь код:
0
|
Модератор
12438 / 7465 / 1749
Регистрация: 25.07.2009
Сообщений: 13,721
|
|
13.06.2012, 12:24 | 6 |
razer89, ошибок в коде, как у дурака махорки...
1. Что в программе на С делает #include <iostream>? Оно, конечно, ничего, если компилировать, как С++ код, но именно как С ни за какие коврижки не скомпилируется. 2. Перед объявлением структуры typedef поставьте. В таком виде объявляется безымянная структура и единственная переменная этой структуры. 3. Внешние переменные без серьёзной на то необходимости - это плохо не только по религиозным соображениям. Попробуйте отследить, сколько раз в коде файл с базой пытается открыться, при чём в разных режимах, практически без проверок, а где он при этом хоть раз закрывается - не увидел. 4. (И тут до меня дошло, что people таки внешняя переменная) при считывании из файла в массив во-первых смело создавать массив из 100 элементов не заморачиваясь, больше их в файле, меньше, а то и вовсе нет ни одного, а во вторых переменная i так всё время нулём и остаётся, то есть если бы что и считывалось - попадало бы в первый элемент массива, затирая то, что там было. Функцию сравнения по именам изменили, а остальные? Они тоже не правильные. 5. Куча опечаток, заметных, если присмотреться. Ну и функция main() всё-таки должна иметь тип int и по своему завершению возвращать целое число - код завершения (0 - успешно, не 0 - что-то пошло не так...)
1
|
15 / 15 / 0
Регистрация: 20.06.2010
Сообщений: 142
|
|
13.06.2012, 22:32 [ТС] | 7 |
Я студент первого курса, я только учусь... =)
Без него ругается на строку E2268 Call to undefined function 'strcpy' Посоветуйте, как поступить в конкретном случае, чтобы избавиться от внешней переменной? Проверка проволится только при первом запуске программы. В остальных случаях не считаю ее целесообразной (поправте, если не прав). Подскажите, как создать массив с нужным количеством элементов? Это не окончательный код, я планирую ее использовать... =) Компилятор ругается и на исправленную, и на неиспраленную функцию... Ткните носом, пожалуйста! =) Исправил! Прошу прощения за занудность, но проблема не решилась... После того, как дописал typedef перед объявлением структуры, стало выдавать ошибки в строках 64, 68 и т.д... Пишет E2108 Improper use of typedef 'people' Подскажите, как бороться?
0
|
15 / 15 / 0
Регистрация: 20.06.2010
Сообщений: 142
|
|
13.06.2012, 22:51 [ТС] | 9 |
0
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
|
13.06.2012, 23:22 | 10 |
Ну, в данном случае этого не нужно. Просто глобальную переменную database убить и объявить в каждой функции, где она используется. А ещё в функции sort файл надо закрыть, видимо.
Добавлено через 4 минуты А вот с people надо всё-таки определиться. В основном она как переменная используется, но в функциях сравнения она вдруг используется как тип. Так это тип или переменная?
0
|
15 / 15 / 0
Регистрация: 20.06.2010
Сообщений: 142
|
|
13.06.2012, 23:42 [ТС] | 11 |
Это переменная. Не совсем понял, почему она используется в функциях сравнения, как тип.
0
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
|
13.06.2012, 23:48 | 12 |
ну вот это:
(people*)a это преобразование типа переменной a к указателю на people. Здесь people может быть только типом.
0
|
15 / 15 / 0
Регистрация: 20.06.2010
Сообщений: 142
|
|
14.06.2012, 00:18 [ТС] | 13 |
это я взял из примера от easybudda, как оно работает я пока не разобрался...))
может подскажете, как будет правильно?
0
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
||||||||||||||||
14.06.2012, 00:24 | 14 | |||||||||||||||
razer89, а я это взял из самого первого поста, ещё до easybudda
Лучше тогда всё-таки объявить тип с этой структурой с каким-нибудь другим именем. Например с большой буквы, или суффикс _t прибавить, или ёщё как.
1
|
Модератор
12438 / 7465 / 1749
Регистрация: 25.07.2009
Сообщений: 13,721
|
||||||||||||||||
14.06.2012, 01:09 | 15 | |||||||||||||||
Сообщение было отмечено Памирыч как решение
Решение
razer89, при работе с файлами проверок много не бывает. По-хорошему нужно проверять всё, что проверяется. Писать полностью по заданию мне лень, вот пример из заголовка и двух програмок - одна в файл пишет, другая из него читает и сортирует по-всякому:
persons.h
persons_write.c
persons_read.c
1
|
15 / 15 / 0
Регистрация: 20.06.2010
Сообщений: 142
|
|||||||||||
14.06.2012, 01:50 [ТС] | 16 | ||||||||||
easybudda, спасибо большое за примеры. Код поправил, теперь он начал компилироваться)) Но работать он все равно почему-то не хочет... Вот что добавил в коде:
0
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
|
14.06.2012, 01:55 | 17 |
Здесь Peoples это указатель. Но он, похоже, указывает в никуда. Память-то под эту структуру где-нибудь выделялась?
1
|
15 / 15 / 0
Регистрация: 20.06.2010
Сообщений: 142
|
|
14.06.2012, 03:05 [ТС] | 18 |
grizlik78, кажется, я понял, в чем ошибка... Сейчас поправлю!
Добавлено через 1 час 7 минут grizlik78, easybudda, огромное вам человеческое спасибо! Разобрался! Все дело было в том, что я путал понятия ТИПА и самой ПЕРЕМЕННОЙ, также у меня беда с указателями (позор мне...). Буду учиться! Спасибо еще раз! Если кому интересно, могу позже выложить весь код.
1
|
Модератор
12438 / 7465 / 1749
Регистрация: 25.07.2009
Сообщений: 13,721
|
|
14.06.2012, 03:25 | 19 |
1
|
15 / 15 / 0
Регистрация: 20.06.2010
Сообщений: 142
|
|
14.06.2012, 20:33 [ТС] | 20 |
Ребят, еще такой вопрос. Как реализовать удаление определенных структур из файла? Записывать новые знаю как, а вот с удалением не могу разобраться...
0
|
14.06.2012, 20:33 | |
14.06.2012, 20:33 | |
Помогаю со студенческими работами здесь
20
Qsort() для сортировки структур по дате (struct tm) Блочная сортировка структур (Отсортировать массив структур по фамилии) Выдает ошибку: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' Qsort для массива структур Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |