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

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

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

> Опять записи и сортировка
сообщение
Сообщение #1


Гость






Вот такая задача: В библиотеке содержатся следующие сведения о книгах: фамилия автора, название и год издания.
 Упорядочить сведения по фамилиям авторов.
 Определить, сколько в библиотеке книг, изданных в указанном году.
 Определить, имеется ли книга с указанным названием. Если да, то сообщить фамилию автора и год издания. Если таких книг несколько, то сообщить имеющиеся сведения обо всех этих книгах.

Надо сделать ее на Бейсике и Паскале
Пытаюсь сортировку сделать хотя бы на Паскале. Все просмортел на форума, вроде все понятно. Попробовал в кучу использовать для своей задачи ничего не выходит. Подскажите нубу че здесь не так.
program idz1_vivod;
uses crt;
function Compare(a, b: String): Integer;
function Min(a, b: Integer): Integer;
begin
if a < b then
Min := a
else
Min := b;
end;
var
i, n, lA, lB: Integer;
begin
lA := Length(a);
lB := Length(b);
n := Min(lA, lB);
i := 1;
while (i <= n) and (a[i] = b[i]) do inc(i);
if (i > n) then begin
if (lA = lB) then Compare := 0
else
if lA > lB then Compare := - 1
else Compare := 1;
end
else
if ord(a[i]) < ord(b[i]) then
Compare := 1
else
Compare := -1
end;
type book=record
aut:string[20];
name:string[15];
year:integer;
end;
var lib:file of book;
arrtype:array[1..5] of book;
ar:array[1..5] of book;
i,j:Integer;
t:book;
begin
For i:=1 to 5 do
for j:=5 downto i+1 do
if compare(ar[pred(j)],ar[j])=-1 then begin <---- Вот здесь постоянно пишет Type mismatch.
T:=pred(j); pred(j):=ar[j]; ar[j]:=T
end
assign(lib,'idz.dat');
reset(lib);
i:=0;
while not EOF(lib) do
begin
i:=i+1;
read(lib,q[i]);
writeln(q[i].aut,' ',q[i].name,' ',q[i].year);
end;
readln;
close(lib);
sort;
end.


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


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


смотри, что ты делаешь:
1. открыл файл
2. отсортировал массив (заполненный неизвестно каким мусором)
3. заполнил массив информацией из файл
4. вывел массив.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 





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