Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 03.05.2023, 20:42   #1 (permalink)
Feofenio
Новичок
 
Регистрация: 03.05.2023
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Помогите с написанием кода Delphi 7

ТЗ:
Дан файл KAT, содержащий сведения о книгах:
1) фамилия автора
2) название
3) год издания
4) цена книги
а) распечатать записи с заданным годом издания, упорядоченные по алфавиту, а если таковых нет, то выдать соответствующее сообщение;
б) отсортировать записи в порядке возрастания цены книги.

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

Старый 03.05.2023, 20:42
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Советую вам посмотреть уже обсуждаемые аналогичные темы

Проблема с написанием кода для массивов на VBA Word
Помогите с написанием программы
Помогите с написанием программы на С++
Помогите с написанием программы
Помогите с написанием кода С++ (задачи)

Старый 03.05.2023, 21:41   #2 (permalink)
Vitaly2023
Member
 
Аватар для Vitaly2023
 
Регистрация: 10.03.2023
Адрес: Тюмень. Родом с Казахстана.
Сообщений: 401
Сказал(а) спасибо: 3
Поблагодарили 2 раз(а) в 2 сообщениях
Репутация: 1762
По умолчанию

Я тоже мало понимаю в языке Delphi. Но есть возможность пригрузить на это дело нейросеть, например Монику. По началу она выдала вопросы:

Конечно, я могу помочь в написании кода на Delphi. Для начала, мне нужно понять формат файла KAT. Он должен быть в текстовом формате, разделенный определенным символом, например запятой или точкой с запятой. Кроме того, мне нужно уточнить, какие именно данные находятся в файле - это только те четыре поля, что вы указали или есть еще какие-то?
Также, мне нужно знать, в каком формате вы хотите получить результаты - в текстовом файле или на экране?
Я её предложил написать в текстовом файле.
И вот шо она наваяла:

Задание состоит в написании программы на языке Delphi для работы с файлом KAT, содержащим информацию о книгах. Программа должна уметь выводить записи с заданным годом издания, сортировать их по алфавиту и выводить сообщение, если записей с таким годом издания нет. Также программа должна уметь сортировать записи по возрастанию цены книги.

Предположим, что формат файла KAT выглядит так:

Автор1, Название1, 2001, 100
Автор2, Название2, 2003, 150
Автор3, Название3, 2002, 120

Для решения задачи
а) нам нужно открыть файл KAT, прочитать его содержимое и вывести записи с заданным годом издания в алфавитном порядке. Если записей с заданным годом нет, нужно выдать соответствующее сообщение. Вот код, который решает эту задачу:

procedure FindBooksByYear(year: Integer);
var
input, output: TextFile;
line: string;
books: TStringList;
i: Integer;
begin
AssignFile(input, 'KAT.txt');
Reset(input);
books := TStringList.Create;
try
// Читаем файл и сохраняем записи в список
while not Eof(input) do
begin
ReadLn(input, line);
books.Add(line);
end;

// Сортируем список по алфавиту
books.Sort;

// Ищем записи с заданным годом и записываем их в выходной файл
AssignFile(output, 'result.txt');
Rewrite(output);
for i := 0 to books.Count - 1 do
begin
if Pos(IntToStr(year), books[i]) > 0 then
WriteLn(output, books[i]);
end;
if FileSize(output) = 0 then
WriteLn(output, 'Записей с заданным годом не найдено.');

finally
CloseFile(input);
CloseFile(output);
books.Free;
end;
end;
Для решения задачи б) нам нужно открыть файл KAT, прочитать его содержимое и отсортировать записи в порядке возрастания цены книги. Затем мы записываем отсортированные записи в выходной файл. Вот код, который решает эту задачу:

Копировать
procedure SortBooksByPrice;
var
input, output: TextFile;
line: string;
books: TStringList;
begin
AssignFile(input, 'KAT.txt');
Reset(input);
books := TStringList.Create;
try
// Читаем файл и сохраняем записи в список
while not Eof(input) do
begin
ReadLn(input, line);
books.Add(line);
end;

// Сортируем список по цене книги
books.CustomSort(@CompareBooksByPrice);

// Записываем отсортированные записи в выходной файл
AssignFile(output, 'result.txt');
Rewrite(output);
for line in books do
WriteLn(output, line);

finally
CloseFile(input);
CloseFile(output);
books.Free;
end;
end;

function CompareBooksByPrice(list: TStringList; index1, index2: Integer): Integer;
var
price1, price2: Currency;
begin
price1 := StrToCurr(ExtractWord(4, list[index1], [',']));
price2 := StrToCurr(ExtractWord(4, list[index2], [',']));

if price1 < price2 then
Result := -1
else if price1 > price2 then
Result := 1
else
Result := 0;
end;
Обратить внимание, что мы используется функция ExtractWord из модуля StrUtils, чтобы извлечь цену книги из каждой записи. Также определяется функция CompareBooksByPrice, которая используется для сортировки списка книг по цене.
__________________
Кто понял жизнь, тот не спешит.
Vitaly2023 вне форума   Ответить с цитированием
Старый 03.05.2023, 21:49   #3 (permalink)
Vitaly2023
Member
 
Аватар для Vitaly2023
 
Регистрация: 10.03.2023
Адрес: Тюмень. Родом с Казахстана.
Сообщений: 401
Сказал(а) спасибо: 3
Поблагодарили 2 раз(а) в 2 сообщениях
Репутация: 1762
По умолчанию

С отступами только здесь не выходит, выровнялось всё по левому полю.
__________________
Кто понял жизнь, тот не спешит.
Vitaly2023 вне форума   Ответить с цитированием
Старый 03.05.2023, 21:56   #4 (permalink)
Vitaly2023
Member
 
Аватар для Vitaly2023
 
Регистрация: 10.03.2023
Адрес: Тюмень. Родом с Казахстана.
Сообщений: 401
Сказал(а) спасибо: 3
Поблагодарили 2 раз(а) в 2 сообщениях
Репутация: 1762
По умолчанию

Если надо, можно в блокноте выложить.
Вложения
Тип файла: txt Monika.txt (4.2 Кб, 32 просмотров)
__________________
Кто понял жизнь, тот не спешит.
Vitaly2023 вне форума   Ответить с цитированием
Старый 07.05.2023, 12:30   #5 (permalink)
Feofenio
Новичок
 
Регистрация: 03.05.2023
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо огромное вам Виталий, я не знаю что бы я без вас делал. Огромное при огромное спасибо!!!
Feofenio вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Метки
delphi, код, помощь


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 09:43.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.