03.05.2023, 20:42 | #1 (permalink) |
Новичок
Регистрация: 03.05.2023
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Помогите с написанием кода Delphi 7
Дан файл KAT, содержащий сведения о книгах: 1) фамилия автора 2) название 3) год издания 4) цена книги а) распечатать записи с заданным годом издания, упорядоченные по алфавиту, а если таковых нет, то выдать соответствующее сообщение; б) отсортировать записи в порядке возрастания цены книги. Всем привет, я мало понимаю в дельфи. мне нужна помощь в написании всего кода, если можно то с пометками, что да как чтобы чуть шире разбираться в этом богоподобном языке древнегреческих мамонтов. |
03.05.2023, 20:42 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Советую вам посмотреть уже обсуждаемые аналогичные темы Проблема с написанием кода для массивов на VBA Word Помогите с написанием программы Помогите с написанием программы на С++ Помогите с написанием программы Помогите с написанием кода С++ (задачи) |
03.05.2023, 21:41 | #2 (permalink) |
Member
Регистрация: 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, которая используется для сортировки списка книг по цене.
__________________
Кто понял жизнь, тот не спешит. |
03.05.2023, 21:49 | #3 (permalink) |
Member
Регистрация: 10.03.2023
Адрес: Тюмень. Родом с Казахстана.
Сообщений: 401
Сказал(а) спасибо: 3
Поблагодарили 2 раз(а) в 2 сообщениях
Репутация: 1762
|
С отступами только здесь не выходит, выровнялось всё по левому полю.
__________________
Кто понял жизнь, тот не спешит. |
07.05.2023, 12:30 | #5 (permalink) |
Новичок
Регистрация: 03.05.2023
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Спасибо огромное вам Виталий, я не знаю что бы я без вас делал. Огромное при огромное спасибо!!!
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Метки |
delphi, код, помощь |
|
|