Вопрос задан 31.07.2023 в 10:06. Предмет Информатика. Спрашивает Ермакова Аня.

Пушкин А.С. написал такие произведения, как: повести, рассказы, поэмы, стихотворения, эпиграммы. По

каждому из произведений известно: название, дата создания, место создания, число героев, объем произведения в страницах. Вам необходимо следующее: 1. Обеспечить прием данных с комментариями с клавиатуры и записать их в файл.2. После приема данных программа должна рассортировать введенные данные по видам произведений и записать их в различные файлы в порядке возрастания даты написания произведения, а при равенстве - в алфавитном порядке его названия.3. Должна быть обеспечена возможность выбора интересующего файла и распечатка его содержимого.Сделать в паскале АБС.нет.
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Аухатбай Индира.
ШущущщудулудузТужвдуотвлушуоивт
0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для выполнения задачи на языке PascalABC.NET, нужно разделить ее на несколько шагов:

  1. Создание структуры данных для хранения информации о произведениях Пушкина.
  2. Реализация функций для приема данных с клавиатуры и их записи в файл.
  3. Реализация функций для сортировки данных по видам произведений, дате создания и названию.
  4. Возможность выбора интересующего файла и распечатка его содержимого.

Ниже представлена примерная реализация этих шагов на языке PascalABC.NET:

pascal
program PushkinWorks; type TGenre = (Povest, Rasskaz, Poema, Stihotvorenie, Epigramma); TWork = record Title: string; CreationDate: string; CreationPlace: string; NumberOfCharacters: integer; Pages: integer; end; TWorksList = array of TWork; var PushkinWorks: TWorksList; procedure InputData(var work: TWork); begin WriteLn('Введите название произведения:'); ReadLn(work.Title); WriteLn('Введите дату создания произведения (в формате ГГГГ-ММ-ДД):'); ReadLn(work.CreationDate); WriteLn('Введите место создания произведения:'); ReadLn(work.CreationPlace); WriteLn('Введите число героев произведения:'); ReadLn(work.NumberOfCharacters); WriteLn('Введите объем произведения в страницах:'); ReadLn(work.Pages); end; procedure SaveWorksToFile(works: TWorksList; fileName: string); var fileHandle: text; i: integer; begin Assign(fileHandle, fileName); Rewrite(fileHandle); for i := 0 to High(works) do begin with works[i] do begin WriteLn(fileHandle, Title); WriteLn(fileHandle, CreationDate); WriteLn(fileHandle, CreationPlace); WriteLn(fileHandle, NumberOfCharacters); WriteLn(fileHandle, Pages); WriteLn(fileHandle, '---'); // разделитель между произведениями end; end; Close(fileHandle); end; function CompareWorks(w1, w2: TWork): integer; begin Result := CompareText(w1.CreationDate, w2.CreationDate); if Result = 0 then Result := CompareText(w1.Title, w2.Title); end; procedure SortWorksByDateAndTitle(var works: TWorksList); var i, j: integer; temp: TWork; begin for i := 0 to High(works) do begin for j := i + 1 to High(works) do begin if CompareWorks(works[i], works[j]) > 0 then begin temp := works[i]; works[i] := works[j]; works[j] := temp; end; end; end; end; procedure PrintWork(work: TWork); begin WriteLn('Название: ', work.Title); WriteLn('Дата создания: ', work.CreationDate); WriteLn('Место создания: ', work.CreationPlace); WriteLn('Число героев: ', work.NumberOfCharacters); WriteLn('Объем в страницах: ', work.Pages); WriteLn; end; procedure PrintFileContents(fileName: string); var fileHandle: text; line: string; begin Assign(fileHandle, fileName); Reset(fileHandle); while not Eof(fileHandle) do begin ReadLn(fileHandle, line); WriteLn(line); end; Close(fileHandle); end; procedure Main(); var work: TWork; genre: TGenre; fileName: string; begin SetLength(PushkinWorks, 0); repeat WriteLn('Выберите жанр произведения:'); WriteLn('1. Повесть'); WriteLn('2. Рассказ'); WriteLn('3. Поэма'); WriteLn('4. Стихотворение'); WriteLn('5. Эпиграмма'); WriteLn('0. Завершить ввод'); ReadLn(genre); if (genre >= Low(TGenre)) and (genre <= High(TGenre)) then begin if genre <> TGenre(0) then begin InputData(work); SetLength(PushkinWorks, Length(PushkinWorks) + 1); PushkinWorks[High(PushkinWorks)] := work; end; end else WriteLn('Некорректный выбор жанра.'); until genre = TGenre(0); SortWorksByDateAndTitle(PushkinWorks); for genre := Low(TGenre) to High(TGenre) do begin case genre of Povest: fileName := 'povesti.txt'; Rasskaz: fileName := 'rasskazy.txt'; Poema: fileName := 'poemy.txt'; Stihotvorenie: fileName := 'stihotvoreniya.txt'; Epigramma: fileName := 'epigrammy.txt'; end; SaveWorksToFile(PushkinWorks, fileName); end; WriteLn('Введите номер жанра для просмотра его произведений (от 1 до 5):'); ReadLn(genre); case genre of 1: PrintFileContents('povesti.txt'); 2: PrintFileContents('rasskazy.txt'); 3: PrintFileContents('poemy.txt'); 4: PrintFileContents('stihotvoreniya.txt'); 5: PrintFileContents('epigrammy.txt'); else WriteLn('Некорректный выбор жанра.'); end; end; begin Main(); end.

Примечание:

  1. В данном примере каждое произведение разделяется символом '---' для удобства чтения из файла. При необходимости, вы можете изменить этот разделитель на другой.
  2. Программа будет сохранять данные в разные файлы в текущей директории исполняемого файла. Вы можете изменить путь и название файлов в зависимости от вашего выбора.
0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос