Pascal
| |
Adelaida | Дата: Вторник, 16.11.2010, 20:35 | Сообщение # 1 |
Сержант
Группа: Новичок
Сообщений: 8
[ 0 ]
Статус: Offline
| Всем доброго здоровья! Есть задача на файлы: Существует некоторая фирма, которая образована в 1991 году. Составить список 6 сотрудников этой фирмы, принятых в различные года. Список должен содержать следующие сведения для каждого сотрудника: ФИО, адрес , год поступления в фирму. Информацию о каждом сотруднике оформить в виде записи. Записи объединить в массив. Нужна помощь в корректировке написанной программы на Pascal ! Подскажите, кто может: что нужно вписать в эту программу, чтобы она сортировала сотрудников фирмы по году поступления в фирму в порядке возрастания. (Т.е., если вводить год поступления как попало, програмка их сортирует). Можно ли это сделать максимально просто? Спасибо что откликнулись. program info_prm; uses Crt; type inform=record num:byte; fio:string; adress:string; god_post:string; end; var fv:file of inform; rv:inform; begin ClrScr; assign(fv,'inform.doc'); rewrite(fv); while true do begin writeln('Vvedi nomer '); read(rv.num); if rv.num=4 then begin close(fv); halt; end; write('Vvedi fio, '); read(rv.fio); write('adres, '); read(rv.adress); write('god_post '); read(rv.god_post); write(fv,rv); writeln; end; end.
|
|
| |
flash1989 | Дата: Среда, 17.11.2010, 01:40 | Сообщение # 2 |
Генералиссимус
Группа: Заблокированные
Сообщений: 177
[ 3 ]
Статус: Offline
| Во первых год поступления лучше задать целочисленным типом, а алгоритм сортировки таков, покажу не на вашем примере, а общий: Code for i:=1 to n-1 do for j:=i+1 to n do if a[i]>a[j] then begin obm:=a[i]; a[i]:=a[j]; a[j]:=obm; end; Я думаю , если программу которую вы выложили писали самостоятельно, то проблем не возникнет
|
|
| |
XTen | Дата: Среда, 17.11.2010, 04:34 | Сообщение # 3 |
Полковник
Группа: Заблокированные
Сообщений: 31
[ 1 ]
Статус: Offline
| Если нужна реализация с нуля могу реализовать ICQ: 410691984
|
|
| |
Ваха | Дата: Среда, 17.11.2010, 20:59 | Сообщение # 4 |
Подполковник
Группа: Новичок
Сообщений: 28
[ 6 ]
Статус: Offline
| uses CRT; type inform=record num:byte; fio:string; adress:string; god_post: integer; end; var fv: file of inform; rv: array [1..20] of inform; n, i, j: byte; inf: inform; begin clrscr; WriteLn ('input the number of workers:'); ReadLn (n); WriteLn ('input information about people:'); for i:=1 to n do begin ReadLn (rv[i].num); ReadLn (rv[i].fio); ReadLn (rv[i].adress); ReadLn (rv[i].god_post); end; for i:=1 to n-1 do for j:=i+1 to n do if rv[i].god_post>rv[j].god_post then begin inf:=rv[i]; rv[i]:=rv[j]; rv[j]:=inf; end; assign (fv, 'inform.dat'); rewrite (fv); for i:=1 to n do begin inf:=rv[i]; Write (fv, inf); end; close (fv); reset (fv); WriteLn ('Sorted list:'); While not eof (fv) do begin read (fv, inf); Write (inf.num, ' ', inf.fio, ' ', inf.adress, ' ', inf.god_post); WriteLn; end; Close (fv); readkey; end. Сделал, как понял условие. Если что не так, sorry.
Гвардия умирает но не сдается
Сообщение отредактировал Ваха - Среда, 17.11.2010, 21:00 |
|
| |
Adelaida | Дата: Среда, 17.11.2010, 22:16 | Сообщение # 5 |
Сержант
Группа: Новичок
Сообщений: 8
[ 0 ]
Статус: Offline
| Во-первых: спасибо огромнейшее! Во-вторых: господин подполковник и господин генераллисимус! Вы достойны своего звания! В третьих: скажу честно, что программу я писала не сама, нам образец нацарапала на доске преподаватель, но смысл её мне абсолютно понятен. В четвёртых: НЕ МОГУ ЗАПУСТИТЬ ВАШУ ПРОГРАММУ! - Компилятор выдаёт ошибку "Error 94" между словом Write и скобкой (fv, inf). Как можно её устранить? В пятых: я обязана по требованию препода писать пояснения почти к каждой строке текста программы и Я ЭТО СДЕЛАЮ! Вопрос в том, чтобы я не наделала ошибок. Если выложу вашу программу с пояснениями, подскажите ошибки в случае чего?
Сообщение отредактировал Adelaida - Среда, 17.11.2010, 23:10 |
|
| |
flash1989 | Дата: Четверг, 18.11.2010, 03:29 | Сообщение # 6 |
Генералиссимус
Группа: Заблокированные
Сообщений: 177
[ 3 ]
Статус: Offline
| Ваха вообще красавчик, респект ему, побольше бы таких бескорысных людей на остальных форумах !!
|
|
| |
Ваха | Дата: Четверг, 18.11.2010, 07:38 | Сообщение # 7 |
Подполковник
Группа: Новичок
Сообщений: 28
[ 6 ]
Статус: Offline
| Quote (Adelaida) НЕ МОГУ ЗАПУСТИТЬ ВАШУ ПРОГРАММУ! - Компилятор выдаёт ошибку "Error 94" между словом Write и скобкой (fv, inf). Как можно её устранить? При написании проги использовал седьмую версию паскаля. И программа работает.Quote (flash1989) сли выложу вашу программу с пояснениями, подскажите ошибки в случае чего? Подскажем. Только на выходных. Раньше врядли получится.
Гвардия умирает но не сдается
|
|
| |
Adelaida | Дата: Четверг, 18.11.2010, 18:53 | Сообщение # 8 |
Сержант
Группа: Новичок
Сообщений: 8
[ 0 ]
Статус: Offline
| Разрешите обратиться! У меня много вопросов: Самое интересное это то, что у меня на работе, на стареньком компе Intel Celeron 2Ггц ваша программа запустилась без проблем! А дома ни в какую не хочет (Intel Core Quad Q6600). А седьмая версия паскаля - это наиновейшая на сегодня? С какого сайта лучше скачать? На Паскале АВС тоже почему-то не идет! А почему в конце программы "readkey" ? (я обычно пишу readln).
Сообщение отредактировал Adelaida - Четверг, 18.11.2010, 20:20 |
|
| |
Ваха | Дата: Четверг, 18.11.2010, 23:45 | Сообщение # 9 |
Подполковник
Группа: Новичок
Сообщений: 28
[ 6 ]
Статус: Offline
| Седьмая версия самая распространенная. С какого сайта лучше скачать не знаю. Я в яндексе ввел "turbo pascal 7 скачать бесплатно" и выбрал сайт произвольно. В конце программы оператор Readkey ставиться для того, чтоб задержать результат та экране. Readln в конце программы, для того-же. В нашем случае разница между этими операторами только в том, что readln-ожидает нажатия клавиши enter, а readkey-любой клавиши.
Гвардия умирает но не сдается
|
|
| |
Adelaida | Дата: Понедельник, 22.11.2010, 22:08 | Сообщение # 10 |
Сержант
Группа: Новичок
Сообщений: 8
[ 0 ]
Статус: Offline
| Мне понравился ваш ответ! Спасибо! :hello: Добавлено (22.11.2010, 22:08) --------------------------------------------- Здравствуйте господа офицеры, откликнувшиеся на мою просьбу! После долгих раздумий, я решила ещё кое что уточнить в вашей программе. Подскажите, пожалуйста, какое лучше написать пояснение в нижеприведённом тексте, там, где стоят знаки вопроса? program info_write; uses CRT; type inform=record num:byte; fio:string; adress:string; god_post: integer; end; var fv: file of inform; rv: array [1..20] of inform; n, i, j: byte; {n-кол. сотрудников, i- ?, j-?} inf: inform; begin clrscr; WriteLn ('Vvedi kolichectvo sotrudnikov:'); ReadLn (n); WriteLn ('Vvedi informaciu o cheloveke: '); for i:=1 to n do begin ReadLn (rv[i].num); ReadLn (rv[i].fio); ReadLn (rv[i].adress); ReadLn (rv[i].god_post); end; for i:=1 to n-1 do {???} for j:=i+1 to n do {???} if rv[i].god_post > rv[j].god_post then begin inf:=rv[i]; {???} rv[i]:=rv[j]; {???} rv[j]:=inf; {???} end; assign (fv, 'inform.doc'); rewrite (fv); for i:=1 to n do begin inf:=rv[i];{?} Write (fv, inf); {?} end; close (fv); reset (fv); WriteLn ('Sortirovka po godam:'); While not eof (fv) do begin read (fv, inf); Write (inf.num, ' ', inf.fio, ' ', inf.adress, ' ', inf.god_post); WriteLn; end; Close (fv); readln; end. В остальном всё понятно Спасибо
Сообщение отредактировал Adelaida - Понедельник, 22.11.2010, 22:11 |
|
| |
|