KMA
Долгожитель
|
Ну ты конечно же знаешь, что эта задача не раз поднималась, и я уже говорил алгоритм, только вот почему-то никто и близко ее решать не хочет. А дело-то простое. Для удобства создадим массив (к сожалению, с Паскалем практически завязал, а до динамики не дошел, то есть в книге этого нет, и в моем карманном справочнике тоже, если кто знает, то скиньте информу на мыло, в остальном вроде все в поряде) типа processor. Var mas: array[1..100] of proceыsor; Считываем все из файла в этот массив (надеюсь элементов меньше чем 100, проблему бы решал динамический массив). j:=0; while not EOF(bin) do begin read (bin, mas[j]); inc(j) end; далее сортируем по методу пузырька for k:=1 to j-1 do for z:=1 to j-1 do if mas [z].frequency> mas [z+1].frequency then begin dop:=mas [z]; mas [z]:=mas [z+1]; mas[z+1]:=mas[z] end; Ну и все, а далее просто сравниваем с введенной ценой и выводим все на экран, попутно записав все в текстовый файл. for k:=1 to j do if mas [k].cost > ui then begin writeLn(proc.model,' ',proc.frequency,'Mhz ',proc.cost:4:2,' rub.'); writeLn(txt,proc.model,' ',proc.frequency,'Mhz ',proc.cost:4:2,' rub.') end; Если честно, то я бы не стал помогать той юной девушке, которая вас попросила, если вы сами ничего не шарите, или забыли. Если бы эта задача, извеняюсь за выражение не задолбала в корень, то я бы даже не подумал ее Вам решать. Diamond666, у меня есть пару идей, но эта задача решается слишком сложно, и муторно, особенно в текстовом файле, другое дело если б он был типизированным, как в задаче про процессоры. Проверь еще раз условия, нет рационального подхода к решению задачи, если конечно ее требуется решить только на Паскале. (Сообщение отредактировал KMA 10 янв. 2006 20:01)
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 10 янв. 2006 19:58 | IP
|
|
miss_graffiti
Долгожитель
|
с динамическими все просто. в разделе var mas: array of array of integer (эт двумерный) в самой программе: SetLength(A,10,10). Нумерация с нуля (если перебрался на си - этим тебя не удивишь...)
|
Всего сообщений: 670 | Присоединился: сентябрь 2005 | Отправлено: 10 янв. 2006 20:33 | IP
|
|
miss_graffiti
Долгожитель
|
KMA, а если тупо перегнать в типизированный - и дальше по шаблону? или в массив из записей...
|
Всего сообщений: 670 | Присоединился: сентябрь 2005 | Отправлено: 10 янв. 2006 20:36 | IP
|
|
KMA
Долгожитель
|
Ага, а тупо перегнать в типизированный файл это как???? Я, если честно так не умею. Если покажешь, буду очень рад. Аналогично и с массивом записи, ведь текстовый файл поддерживает только строки, а их можно перевести в число только при помощи процедуры str (во всяком случае, я не знаю других процедур). (Сообщение отредактировал KMA 11 янв. 2006 14:13)
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 10 янв. 2006 22:30 | IP
|
|
KMA
Долгожитель
|
Diamond666, твоя задача в принципе решаемая, только здесь надо кучу всего обрабатывать. Главное условимся, что между данными только один пробел, тогда решается все просто, читая из файла все заносим в массив записей (например: name: string[20]; cost: word; many: word; ed: string[2]), и уже с ним начинаем работать(читаем каждый символ, пока не встретиться пробел, можно, кстати предварительно обработать весь текстовый файл, дабы удалить лишние пробелы). А далее поступаем также, как и с предыдушей задачей, только с учетом твоей. Обрабатывать такие данные будет просто. Сортировать по цене, можно прямо списать с предыдущей, по названию, гораздо сложнее, но я думаю, что справиться возможно (надо смотреть код первого символа, далее если находиться равный ему, то следующий код символа, ну и т. д.). В принципе, решение у тебя есть. Приступай к реализации, а если возникнуть уже более конкретные вопросы, то я на них с радотью отвечу. P. S. miss graffiti если у вас есть более мудрое решение поставленной задачи, то пожалуйста напишите, может я узнаю что-то новое. _____ B я ничего не понял про динамический, что значит setLength (); на первом месте какая-то А, это что такое??? Массив двумерный? А разве никак нельзя объявить массив, чтобы под него выделялась память сама, т. е. задать массив из одного элемента, а потом увеличивать его на 1 элемент постепенно??? Я думал почему-то так, в Делфи во всяком случае такая реализация возможна.
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 11 янв. 2006 12:55 | IP
|
|
miss_graffiti
Долгожитель
|
KMA, вот я об этом и говорила. как вариант - вообще условиться на новой строчке писать, чтобы не мучаться с пробелами. тогда прекрасно преобразуется в записи. про динамический - эт я не выспалась. не А. там имя массива, потом размеры. задавать приходится. если хочешь увеличивать - опять пользуешься SetLength. Это процедура установления размера...
|
Всего сообщений: 670 | Присоединился: сентябрь 2005 | Отправлено: 11 янв. 2006 13:23 | IP
|
|
KMA
Долгожитель
|
Ну да, я так и понял, у меня была такая же идея с самого начала, но, согласись эта штука муторная, и решение не рациональное.
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 11 янв. 2006 14:12 | IP
|
|
miss_graffiti
Долгожитель
|
я ничего рациональнее не придумала, так что придется так оставить...
|
Всего сообщений: 670 | Присоединился: сентябрь 2005 | Отправлено: 11 янв. 2006 15:31 | IP
|
|
azatik
Удален
|
Написать программу, которая подсчитывает число цифр среди набираемых символов до момента нажатия клавиши ENTER.
|
Всего сообщений: N/A | Присоединился: N/A | Отправлено: 18 янв. 2006 17:25 | IP
|
|
miss_graffiti
Долгожитель
|
и какие вопросы возникают?
|
Всего сообщений: 670 | Присоединился: сентябрь 2005 | Отправлено: 18 янв. 2006 17:27 | IP
|
|
|