![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
pashist |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 44 Пол: Мужской Репутация: ![]() ![]() ![]() |
Здравствуйте! Помогите, пожалуйста, решить задачу!
Вот текст: Фирма по хранению и сбыту бытовых инструментов получает грузы с оборудованием по различным ценам и продает их затем с 20%-ной надбавкой, причем товары, полученные позднее, продаются в первую очередь. Нужно написать программу, считывающую записи о торговых операциях двух типов: операции по закупке и операции по продаже. Запись о закупке содержит префикс "R", количество товара, стоимость одного изделия и общую стоимость всей партии. Запись о продаже содержит префикс "S" и количество товара, а также стоимость данной партии. После считывания записи о закупке нужно вывести её на экран, например, если фирмой было продано 200 единиц оборудования, в которые входили 50 единиц с закупочной ценой 1,25$ и 150 единиц с закупочной ценой 1,1$, то должны быть напечатаны 3 строки: 50 штук по 1,50$ каждый на сумму 75.00$ 150 штук по 1.32$ каждый на сумму 198.00$ Всего продано на сумму 273.00$ Если на складе отсутствует требуемое в заказе число изделий, то нужно продать все имеющиеся и напечатать сообщение об отсутствии остальной части на складе. Как подойти к решению? Как здесь использовать связанные списки? Пожалуйста, проконсультируйте! |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Связанные списки или ...связные списки? Если второе, то просто вместо массивов или файлов для хранения информации использовать списки (лучше - двухсвязные)...
|
pashist |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 44 Пол: Мужской Репутация: ![]() ![]() ![]() |
Задание на связанные списки.. На стеки..
|
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Цитата Задание на связанные списки.. На стеки.. ![]() |
pashist |
![]()
Сообщение
#5
|
Новичок ![]() Группа: Пользователи Сообщений: 44 Пол: Мужской Репутация: ![]() ![]() ![]() |
Сорри, СВЯЗАННЫЕ СПИСКИ. Пошел учить матчасть.
|
мисс_граффити |
![]()
Сообщение
#6
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
нифига не поняла
![]() на что в итоге задание? Цитата Стек— это линейный список с определенной дисциплиной обслуживания, которая заключается в том, что элементы списка всегда включаются, выбираются и удаляются с одного конца, называемого вершиной стека. Доступ к элементам здесь происходит по принципу “последним пришел — первым ушел” (LIFO — last in first out), т.е. последний включенный в стек элемент первым из него удаляется. Цитата Фирма по хранению и сбыту бытовых инструментов получает грузы с оборудованием по различным ценам и продает их затем с 20%-ной надбавкой, причем товары, полученные позднее, продаются в первую очередь. так что ты это... уточни. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
pashist |
![]()
Сообщение
#7
|
Новичок ![]() Группа: Пользователи Сообщений: 44 Пол: Мужской Репутация: ![]() ![]() ![]() |
Узнал у препода: решать задачу можно любым удобным способом, смысл задачи заключается в использовании динамической памяти. Значит, удобнее всего использовать стек?
|
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
Ты сначала расскажи, как именно должен происходить процесс покупки/продажи, а потом будем смотреть. Что, ты вводишь несколько итемов подряд с префиксом R, они записываются куда-то (намеренно не говорю, куда, пока не разьяснишь процесс - никаких предположений делать нельзя), а потом идет запрос на покупку?
КАК это все происходит? Что ТЫ вводишь, в какой последовательности? Приведи пример ВСЕЙ последовательности (что именно ты хочешь чтоб появлялось на экране ОТ и ДО, а не "как-то вот так", "просто вводим". НЕ БЫВАЕТ "просто вводим", нужно идеально точно знать, в какой последовательности и ЧТО ИМЕННО ты будешь вводить, и как должна реагировать система...) |
pashist |
![]()
Сообщение
#9
|
Новичок ![]() Группа: Пользователи Сообщений: 44 Пол: Мужской Репутация: ![]() ![]() ![]() |
Программа работает как терминал. Объявляются две записи, на покупку и продажу. Пользователь с клавиатуры вводит то, что ему нужно: выступает в роли либо покупателя у терминала, либо продавца терминалу. Записи о поступлении товара на терминал заносятся в стек..
Цитата После считывания записи о закупке нужно вывести её на экран Скорее всего не о закупке, а о продаже, наверно смысловая опечатка, как думаете? Не спросил... ![]() |
мисс_граффити |
![]()
Сообщение
#10
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
а вот такой вопрос - тип товара не задается?
как мы узнаем, ЧТО человеку нужно - только по цене ориентируемся, что ли? *представила. приходит покупатель: "дайте мне что-нибудь по 17 рублей!" - " у нас ничего такого нет, есть по 15 и 19" - "нет, мне нужно именно по 17" - "но они раньше стоили 17, а теперь подорожали!" -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
pashist |
![]()
Сообщение
#11
|
Новичок ![]() Группа: Пользователи Сообщений: 44 Пол: Мужской Репутация: ![]() ![]() ![]() |
Да, видимо так. Посмотри задание, в записи не указан тип товара. Значит, продаем одно и то же, только от разных поставщиков.
|
мисс_граффити |
![]()
Сообщение
#12
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
Я бы сделала так: построила заголовочный список, в котором хранила инфу по каждому типу товаров, а именно: цена, количество на складе, указатель на след. элемент и указатель на список (или стек - как хочешь) поступлений по этому товару. каждый блок - только количество.
если человек вводит приходную информацию - суммируем имеющееся количество с привезенным и "цепляем" блок. если покупает - смотрим, хватит ли нам товара. если нет - выводим сообщение о нехватке и удаляем нафиг весь прицепленный список (стек). если хватит, вычитаем из общего количества и начинаем с последнего блока вычитать из отдельных поставочных блоков. нулевые блоки удаляем. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
pashist |
![]()
Сообщение
#13
|
Новичок ![]() Группа: Пользователи Сообщений: 44 Пол: Мужской Репутация: ![]() ![]() ![]() |
Я уже написал..
![]() Посмотрите, пожалуйста, есть ошибки? По-моему, есть в сторках очистки памяти.. Может что-то можно упростить? Программа (Показать/Скрыть)
Прикрепленные файлы ![]() |
volvo |
![]()
Сообщение
#14
|
Гость ![]() |
Цитата Посмотрите, пожалуйста, есть ошибки? Мне так нравится этот вопрос... "Прогоните и отладьте эту программу" - его второй смысл. ТЫ же ее писал, так отлаживай. Добейся сначала 100% правильного функционирования, а уж потом будешь гоняться за оптимальностью.Я еще раз повторяю - программа должна прежде всего выдавать правильный результат, если она этого не делает - грош ей цена. |
pashist |
![]()
Сообщение
#15
|
Новичок ![]() Группа: Пользователи Сообщений: 44 Пол: Мужской Репутация: ![]() ![]() ![]() |
Опять ты неправильно понял.....
![]() |
volvo |
![]()
Сообщение
#16
|
Гость ![]() |
a:=#0 ![]() ![]() |
pashist |
![]()
Сообщение
#17
|
Новичок ![]() Группа: Пользователи Сообщений: 44 Пол: Мужской Репутация: ![]() ![]() ![]() |
Это первое, что я исправил
![]() |
volvo |
![]()
Сообщение
#18
|
Гость ![]() |
Кстати, у меня есть смутные подозрения, что если просто сделать выход по нажатию 'z', скажем, так:
Case a of , выбрать 2 раза пополнение, а потом, не производя покупок выйти из программы через 'z', то программа завершится аварийно (скорее всего - с 'invalid pointer operation' ![]() |
pashist |
![]()
Сообщение
#19
|
Новичок ![]() Группа: Пользователи Сообщений: 44 Пол: Мужской Репутация: ![]() ![]() ![]() |
Прав.. А в чем дело?( Неполная очистка стека?
a:=#0; Так ошибка не выскакивает |
volvo |
![]()
Сообщение
#20
|
Гость ![]() |
Наоборот, ты пытаешься неоднократно применить Dispose к одному и тому же указателю, как результат - второй раз Dispose применяется к Nil, и ты видишь то, что видишь...
Что называется, "Вы глюков хотите - их есть у меня" (С) ![]() Хы... Хитрый. А теперь попробуй сделать так: Begin { <--- Начало основной части программы } Эти 2 числа как пить дать не совпадут, а это означает, что у тебя есть утечка памяти... ![]() |
![]() ![]() |
![]() |
Текстовая версия | 21.07.2025 10:29 |