3 / 3 / 0
Регистрация: 21.11.2010
Сообщений: 194
|
||||||
1 | ||||||
Структуры: Списки студентов26.03.2011, 21:23. Показов 7919. Ответов 88
Метки нет (Все метки)
всем привет
вот такое задание мне дано: Описать массив структур, содержащих информацию о результатах сессии: {фамилия; группа; дисциплина; оценка}. Распечатать фамилии студентов, не имеющих оценок ниже «хорошо». делаю на Borland c++ 3.1 т.к. его пока изучаем вот мой код
жду советов, поравки и замечаний, хочу понять и научиться.. заранее спасибо
0
|
26.03.2011, 21:23 | |
Ответы с готовыми решениями:
88
Вывести списки студентов по группам Перевести L студентов с 1-й группы в другую (списки) Записи: Вывести списки студентов, упорядоченные по возрасту Структуры. Списки |
3 / 3 / 0
Регистрация: 21.11.2010
Сообщений: 194
|
|
27.03.2011, 13:28 [ТС] | 21 |
видишь ли, я typedef использую для того тчоб каждый раз не писать структ кард и поэтому заменяю это как list вместе 2х слов
насчет вылезания за границу, разницы нет хоть 1000 напиши результат тот же вот напиши ты как считаешь каким образом передавать параметры и возвращать указатель на структуру? и почему сортировка не правильно фурычит?
0
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
27.03.2011, 13:53 | 22 |
Видишь ли, это атавизм, пришедший из Си, о чём я и говорю. На С++ слово struct писать при объявлении переменных не нужно. Остаётся одно слово card.
Добавлено через 1 минуту Это ты так думаешь.) В коде написано иначе, на что компилятор и намекает. Добавлено через 1 минуту Возвращаемый тип для функции не задан. Ожидается неизвестный тип struct list, а возвращается card. Говорить что либо об алгоритме бесполезно, т.к. размер массива - Одын. Добавлено через 2 минуты Сортировка не работает, т.к. temp'ы не инициализированы. Компилятор должен ругаться, а программа падать. Тебе просто опять не повезло.) И вообще, не надо выключать предупреждения в настройках.) Добавлено через 27 секунд Функции сортировки незачем возвращать что либо, кроме void.
0
|
3 / 3 / 0
Регистрация: 21.11.2010
Сообщений: 194
|
||||||
27.03.2011, 17:11 [ТС] | 23 | |||||
вот окончательно рабочий код
можно ли как то это реализовать? если да то как? и как тут сортировку сделать чтоб список выводить в алфавитном порядке ? я про функцию
0
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
27.03.2011, 17:15 | 24 |
Добавь в структуру Студент массив с Дисциплинами.
Напиши предикат для сравнения по имени студента
0
|
3 / 3 / 0
Регистрация: 21.11.2010
Сообщений: 194
|
|
27.03.2011, 17:24 [ТС] | 25 |
каким образом? как сделать массив с дисциплинами то? в ту же самую структуру list??
и что такое предикат? ведь мне нужно чтоб допустим при вводе было так польз вводить фамилию затем групппу затем дисиплину затем оценку затем снова дисциплину и снова оценку т.е. пока польз 2 раза энтер не нажмет то не выйдет из написания дисциплины и оценки затем если польз нажал два раза энтер тто выводится сообщ будет ли он дальше вводит фамилию группу и тд если нет то нажать эск затем список сортируется и затем ввыводить список у которых только хорошие и отличн отметки если же ъхоть одна ниже то не выводить эту фамилию...
0
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
27.03.2011, 17:36 | 26 |
Щаз эксперты по STL объявятся и нарисуют тебе предикат.
Я спать.)
0
|
3 / 3 / 0
Регистрация: 21.11.2010
Сообщений: 194
|
||||||
28.03.2011, 19:19 [ТС] | 27 | |||||
откуда???? что за эксперты? твои знакомые что ли??)
Добавлено через 7 минут Deviaphan, не подскажешь как сделать это "Добавь в структуру Студент массив с Дисциплинами." Добавлено через 13 минут ну что, разве никто не знает как и что? тут один Deviaphan только умеет со структурами работать? разве никто не может ничем помочь? Добавлено через 3 часа 4 минуты эх.. печально что никто не знает как работать со структурами, неужели программисты вымерли??.. Добавлено через 22 часа 14 минут Deviaphan, как норм выделять память под структуру и массивы структур? и как запоминать такие числа которые хранят сколько всего было создано я о PR и N в котором содержится максимальное количество созданных структур, т.е. массив и сколько этих структур в массиве, т.е. это числа вот мой код
0
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
||||||
28.03.2011, 19:25 | 28 | |||||
Слово struct при объявлении объекта писать не нужно, это не Си. Строка 20 бессмысленна в данном контексте. Хватит и }; Сессии нужно хранить в виде массива, внутри структуры card. Объявил ты правильно, как создавать и удалять массивы я тебе показал.
0
|
3 / 3 / 0
Регистрация: 21.11.2010
Сообщений: 194
|
|
28.03.2011, 19:48 [ТС] | 29 |
погоди, что то не догоняю...
а откуда знать компилятору из скольки массив струтур то будет? ведь я же делаю типа нарост там по нажатию энтер соотв надо выделять место т.е. память... обрати вним на 31 и 51 строчку что не так то? и куда дивать list.N и list.SES.PR для хранения данных ск структур было создано
0
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
28.03.2011, 19:53 | 30 |
Во первых, программа на С++, поэтому забудь про malloc/free. Только new/delete
Добавлено через 41 секунду Во вторых, т.к. массив динамический, то омпилятор может и не знать его размер. Об этом ты должен заботиться сам. Добавлено через 1 минуту В третьих, CREATE_LIST и CREATE_LIST_SES используют РАЗНЫЕ list Добавлено через 1 минуту К тому же, не инициализированный. И мне вообще не нравится, как ты объекты создаёшь, при объявлении структур.)
0
|
3 / 3 / 0
Регистрация: 21.11.2010
Сообщений: 194
|
|
28.03.2011, 20:02 [ТС] | 31 |
)))) еще и смешно тебе))
вот поясни пож-та мне как сделать структуру list которая будет хранить фамилию, группу, структуру SES в которой будут хранится дисциплина и оценка естественно обе струкутры массиивы т.к. надо создавать большой список студентов и на каждого студента свой рейтинг и набор дисциплин просто надо же сохранять все это в памяти, естественнно нужно запоминать и наращивать а потом ворошить и искать в этом промежутке то как же сделать е сли я буду делать какт ы говоришь ТО не будет фурычит в плане поиска внутри структуры
0
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
28.03.2011, 20:04 | 32 |
Сделай чтоб фурычило. Статический от динамического массивы различаются только способом создания/удаления. РАботает со статическим, будет и с динамическим. Думай.
0
|
3 / 3 / 0
Регистрация: 21.11.2010
Сообщений: 194
|
||||||
28.03.2011, 21:18 [ТС] | 33 | |||||
понимаешь проблема в том что НЕКУДА мне хранить нфу о том ск создано всего структур на этапе формирования списка ибо kist.N и тд обнуляется
Добавлено через 1 час 7 минут сделал как и говорил ты, НО проблема возникла ОН ее н еудаляет т.е. delete[]=card и delete[]=session не работают он ошибку выдает и после выхода из фнкции CREATE_LIST значение list[0].N = 0 хотя по идее должен хранить число больше 0 ибо столько скоь создал списков кстати при помощи твоего NEW вместо мфддщс он засоряет память а именно если в первом списке я исп неск раз Disc и Rat то во втором списке т.е. допустим создаю 2 фамилию и для него дисц и рат он засоряет ратинг а именно печатает каракули всесто Rating печатаут Rat 4 или 5 ведь написано что printf('Rating") так что скажешь? вот попробуй на борланде 3,1 с окном контроля ватч проверь
0
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
29.03.2011, 06:19 | 34 |
И правильно делает. С какой стати ты = пишешь.)
Добавлено через 2 минуты Нет. Ибо я уже сказал, у тебя ДВА объекта с именем list и мне не нравится, как ты создаёшь объекты. Читай внимательнее.)
0
|
3 / 3 / 0
Регистрация: 21.11.2010
Сообщений: 194
|
|
29.03.2011, 14:41 [ТС] | 35 |
в каком месте пишу =?? а то там их много)))
ну направь меня в правильное русло, как надо создавать объекты?? как выделять память? как сделать чтоб он запоминал ... и откуда у меня два объекта с именем лист??
0
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
29.03.2011, 15:21 | 36 |
Я же указал, в каком.)
Добавлено через 2 минуты строки 52 и 107. Раньше по другому два объекта было.) Новый код я "не заметил".) В строке 115 ты распечатываешь не инициализированные объекты.
0
|
3 / 3 / 0
Регистрация: 21.11.2010
Сообщений: 194
|
|
29.03.2011, 15:38 [ТС] | 37 |
почему не иницализированный то? ведь я де передал структуру в функцию т.е. PRINT_LIST(card *list, session *SES)
зачем иницализировать второй раз внутри функции?
0
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
29.03.2011, 16:05 | 38 |
Именно, ты передаёшь в функцию не инициализированные указатели.
Ещё раз посмотри на строки 52 и 107, а потом почитай про область видимости переменных.
0
|
3 / 3 / 0
Регистрация: 21.11.2010
Сообщений: 194
|
|
29.03.2011, 16:31 [ТС] | 39 |
ну почему не иницилизированы то? я же их объявил, а затем иеницализирую в самих функциях, может прямо скажешь что я конкретно не так сдела, я же объявляю потом нгеважно какие значения они имеют до входа в функцию затем они инициализируются в функции самой ывделяю место и забиваю инфой ... я знаю про область видимости и глоб и внутр перемнных
0
|
Делаю внезапно и красиво
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
|
|
29.03.2011, 16:42 | 40 |
Внимательно-внимательно посмотри на строку 52. И учти, что имена переменных ничего не значат. Две переменных с одинаковым именем, но в разных областях видимости - это РАЗНЫЕ переменные.
Поэтому посмотри код внимательнее. В функцию Принт передаются не инициализированные переменные, соответственно печатается мусор. Ладно, сжалюсь: в строке 111 должно быть list = CREATE_LIST(); Но код я не смотрел, могут и ещё ошибки быть.
0
|
29.03.2011, 16:42 | |
29.03.2011, 16:42 | |
Помогаю со студенческими работами здесь
40
Список студентов (структуры) Структуры данных: списки Структуры и односвязные списки Структуры данных: Списки Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |