Форум
» Назад на решение задач по физике и термеху
Регистрация | Профиль | Войти | Забытый пароль | Присутствующие | Справка | Поиск

» Добро пожаловать, Гость: Войти | Регистрация
    Форум
    Информационные технологии
        Турбо Паскаль. Программирование на Pascal
Отметить все сообщения как прочитанные   [ Помощь ]
» Добро пожаловать на форум "Информационные технологии" «

Переход к теме
<< Назад Вперед >>
Несколько страниц [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 ]
Модераторы: paradise, KMA
  

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

Эта тема закрыта, новые ответы не принимаются

Переход к теме
<< Назад Вперед >>
Несколько страниц [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 ]

Форум работает на скрипте © Ikonboard.com