Пятница, 29.03.2024, 08:59
Задачи по информатике
Главная | Регистрация | Вход Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: ignorer, KOT_B_MEIIIKE, PASCAL26, atvrider  
Форум » Решение задач по информатике » Задачи по программированию + блок-схемы » Pascal (Файлы)
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
Во-первых: спасибо огромнейшее!
Во-вторых: господин подполковник и господин генераллисимус! Вы достойны своего звания! hands
В третьих: скажу честно, что программу я писала не сама, нам образец нацарапала на доске преподаватель, но смысл её мне абсолютно понятен.
В четвёртых: НЕ МОГУ ЗАПУСТИТЬ ВАШУ ПРОГРАММУ! - Компилятор выдаёт ошибку "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 :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
 
Форум » Решение задач по информатике » Задачи по программированию + блок-схемы » Pascal (Файлы)
  • Страница 1 из 1
  • 1
Поиск:

Copyright MyCorp © 2024