IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Массив записей, Не могу реализовать ввод из rec:books в массив Data of Books
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 21
Пол: Мужской
Реальное имя: Лёха

Репутация: -  0  +



Program lib;
uses crt;
type Books=record
number:integer;
fio:string;
group:string;
home:string;
year:integer;
end;

var
book_file:file of books;
f:file of books;
data:array[1..20] of books;
rec:books;
file_name:string;
key,key1:integer;
exit:boolean;
x:string;

procedure name_of_file;
begin
write('Vvedite fail bazi dannih studentov:');
readln(file_name);
end;

procedure add_record;
begin
writeln('Record N',filepos(book_file)+1);
with rec do
begin
write('FIO:');
readln(fio);
write('Group:');
readln(group);
write('Vozrast:');
readln(year);
write('Address:');
readln(home);
write(book_file,rec);
end;
end;

procedure sort; //Не могу реализовать ввод из rec в массив Data а метод сортировки проверен работает
var i,n,j:integer;
begin
name_of_file;
assign(book_file,file_name);
{$I-}
reset(book_file);
{$I+}
if IOresult <> 0 then
writeln('File with name '+file_name+' is not')
else
begin
writeln;
while (not eof(book_file)) do
read(book_file,rec);
data[i]:=rec;
for i:=1 to n-1 do
for j:=1 to n-i do
if data[j].fio>data[j+1].fio then
begin
rec := data[j];
data[j] := data[j+1];
data[j+1] := rec;
end;
with rec do
begin
readln(fio);
readln(group);
readln(year);
readln(home);
end;


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Так пробовал?
 { Открываешь файл ...  }

n := 0;
while (not eof(book_file)) do begin
read(book_file,rec);
inc(n);
data[n]:=rec;
end;

{ А дальше - сортировка }

 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 21
Пол: Мужской
Реальное имя: Лёха

Репутация: -  0  +


Volvo спасибо незнаю бы что делал елси бы не ты,подставил твой код но одна проблемка если есть несколько
слов допустим на букву 'S' то сортируется например так:

Alex
Sergei
Bob
Coooo
Ses

procedure sort;
var i,n,j:integer;
begin
name_of_file;
assign(book_file,file_name);
{$I-}
reset(book_file);
{$I+}
if IOresult <> 0 then
writeln('File with name '+file_name+' is not')
else
begin
n:=0;
while (not eof(book_file)) do
begin
read(book_file,rec);
inc(n);
data[n]:=rec;
end;
for i:=1 to n-1 do
for j:=1 to n-i do
if data[j].fio>data[j+1].fio then
begin
rec := data[j];
data[j] := data[j+1];
data[j+1] := rec;
end;
for i:=1 to filesize(Book_file) do
writeln(data[i].fio);
end;
end;


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






В файле точно все в порядке? Потому что небольшая тестовая программа сортирует эти самые значения прекрасно:
type
Books= record
number:integer;
fio:string;
group:string;
home:string;
year:integer;
end;

const
n = 5;
data: array[1 .. 5] of books = (
(number:0; fio:'Alex'; group:''; home:''; year:0),
(number:0; fio:'Sergey'; group:''; home:''; year:0),
(number:0; fio:'Bob'; group:''; home:''; year:0),
(number:0; fio:'Coooo'; group:''; home:''; year:0),
(number:0; fio:'Ses'; group:''; home:''; year:0)
);

var
i, j: integer;
rec: books;

begin
for i:=1 to n-1 do
for j:=1 to n-i do
if data[j].fio>data[j+1].fio then begin
rec := data[j];
data[j] := data[j+1];
data[j+1] := rec;
end;

for i:=1 to n do
writeln(data[i].fio);
end.
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 23.10.2021 23:37
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name