Вопрос задан 31.07.2023 в 10:06.
Предмет Информатика.
Спрашивает Ермакова Аня.
Пушкин А.С. написал такие произведения, как: повести, рассказы, поэмы, стихотворения, эпиграммы. По
каждому из произведений известно: название, дата создания, место создания, число героев, объем произведения в страницах. Вам необходимо следующее: 1. Обеспечить прием данных с комментариями с клавиатуры и записать их в файл.2. После приема данных программа должна рассортировать введенные данные по видам произведений и записать их в различные файлы в порядке возрастания даты написания произведения, а при равенстве - в алфавитном порядке его названия.3. Должна быть обеспечена возможность выбора интересующего файла и распечатка его содержимого.Сделать в паскале АБС.нет.Ответы на вопрос
Отвечает Аухатбай Индира.
ШущущщудулудузТужвдуотвлушуоивт
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.
Для выполнения задачи на языке PascalABC.NET, нужно разделить ее на несколько шагов:
- Создание структуры данных для хранения информации о произведениях Пушкина.
- Реализация функций для приема данных с клавиатуры и их записи в файл.
- Реализация функций для сортировки данных по видам произведений, дате создания и названию.
- Возможность выбора интересующего файла и распечатка его содержимого.
Ниже представлена примерная реализация этих шагов на языке PascalABC.NET:
pascalprogram 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.
Примечание:
- В данном примере каждое произведение разделяется символом '---' для удобства чтения из файла. При необходимости, вы можете изменить этот разделитель на другой.
- Программа будет сохранять данные в разные файлы в текущей директории исполняемого файла. Вы можете изменить путь и название файлов в зависимости от вашего выбора.
Похожие вопросы
Информатика 142
Информатика 51
Информатика 138
Информатика 344
Информатика 81
Информатика 53
Информатика 18
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
Предметы
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili
