Другие языки программирования и технологии
Помогите решить в PascalABC.
Дан текстовый файл. Структура строки текстового файла: фамилия и инициалы автора (20 позиций), название книги (30 позиций), издательство (10 позиций), год издания (4 позиции). Создать новый текстовый файл из строк, содержащих сведения о книгах, изданных за период с 1960 – 2015 г.
1) часть задачи: Создание файла с данными
type anketa=record
fio, kniga, firma: string;
age: integer;
end;
var autor: array [1..100] of anketa;
n, i: integer;
f: textfile;
const f_i_o: array [1..8] of string = ('Иванов','Сидоров','Попов','Петров','Ульянов','Александров','Семенов','Алексеев');
knigi: array [1..8] of string = ('Химия','Биология','Литература','Русский язык','Алгебра','Геометрия','Обществознание','Информатика и ИКТ');
izd: array [1..8] of string = ('МГУ-инф','СГАУ-6','Литера','Модерн','Книголюб','СамГТУ','Петр и К','ИнформБюро');
begin
write ('Введите количество авторов n [1..100] = ');
readln (n);
assign (f, 'data.txt');
rewrite (f);
for i:=1 to n do
begin
autor[i].fio:=f_i_o[1+random(8)]+' ' +chr(ord('А')+random(23))+'.'+chr(ord('А')+random(23))+'.';
autor[i].kniga:=knigi[1+random(8)] +'. '+ chr (ord('7')+random (3))+ ' класс';
autor[i].firma:=izd[1+random(8)];
autor[i].age := 1920 + random(99);
write (f, autor[i].fio);
write (f, ' '*(20-length(autor[I].fio)));
write (f, autor[i].kniga);
write (f, ' '*(30-length(autor[I].kniga)));
write (f, autor[i].firma);
write (f, ' '*(10-length(autor[I].firma)));
writeln (f, autor[i].age);
end;
close (f);
end.
2) часть задачи: выбор книг и создание нового файла. Вам необходима только эта вторая часть.
var s: string;
f1, f2: textfile;
begin
assign (f1, 'data.txt');
assign (f2, 'data1.txt');
reset (f1);
rewrite (f2);
while not Eof(f1) do
begin
readln (f1, s);
if (copy (s, 61, 4) >= '1960') and (copy (s, 61, 4) <= '2015') then
writeln (f2, s);
end;
close (f1);
close (f2);
end.
type anketa=record
fio, kniga, firma: string;
age: integer;
end;
var autor: array [1..100] of anketa;
n, i: integer;
f: textfile;
const f_i_o: array [1..8] of string = ('Иванов','Сидоров','Попов','Петров','Ульянов','Александров','Семенов','Алексеев');
knigi: array [1..8] of string = ('Химия','Биология','Литература','Русский язык','Алгебра','Геометрия','Обществознание','Информатика и ИКТ');
izd: array [1..8] of string = ('МГУ-инф','СГАУ-6','Литера','Модерн','Книголюб','СамГТУ','Петр и К','ИнформБюро');
begin
write ('Введите количество авторов n [1..100] = ');
readln (n);
assign (f, 'data.txt');
rewrite (f);
for i:=1 to n do
begin
autor[i].fio:=f_i_o[1+random(8)]+' ' +chr(ord('А')+random(23))+'.'+chr(ord('А')+random(23))+'.';
autor[i].kniga:=knigi[1+random(8)] +'. '+ chr (ord('7')+random (3))+ ' класс';
autor[i].firma:=izd[1+random(8)];
autor[i].age := 1920 + random(99);
write (f, autor[i].fio);
write (f, ' '*(20-length(autor[I].fio)));
write (f, autor[i].kniga);
write (f, ' '*(30-length(autor[I].kniga)));
write (f, autor[i].firma);
write (f, ' '*(10-length(autor[I].firma)));
writeln (f, autor[i].age);
end;
close (f);
end.
2) часть задачи: выбор книг и создание нового файла. Вам необходима только эта вторая часть.
var s: string;
f1, f2: textfile;
begin
assign (f1, 'data.txt');
assign (f2, 'data1.txt');
reset (f1);
rewrite (f2);
while not Eof(f1) do
begin
readln (f1, s);
if (copy (s, 61, 4) >= '1960') and (copy (s, 61, 4) <= '2015') then
writeln (f2, s);
end;
close (f1);
close (f2);
end.
что не получается, почему текстовый, а не типизированный файл, вот пример
program Igr;
uses crt;
type zap=record
name : string[10];
min, max,cena : integer;
end;
var
n,i,fl:integer;
assort: array[1..100] of zap;
BEGIN
clrscr;
writeln('СОЗДАНИЕ МАССИВА ЗАПМСЕЙ');
writeln('*************************');
write('Количество вводимых записей: --> '); readln(n);
for i := 1 to n do begin
writeln('Ввести ',i,' - ю запись');
with assort[i] do begin
write('Название игрушки: --> ');
readln(name);
write('Минимальный возраст: --> ');
readln(min);
write('Максимальный возраст: -->');
readln(max);
write('Цена игрушки ($): -->');
readln(cena);
end;
end;
writeln;
writeln(' Создание закончено');
writeln;
writeln(' Исходный массив');
writeln;
writeln('__________________________________________________________');
writeln(' N игрушка мин. возр. мах. возр. цена');
writeln('__________________________________________________________');
for i := 1 to n do
with assort[i] do
writeln(i:3,name:10,min:10,max:11,cena:10);
readln;
writeln(' Поиск игрушек детям 5 лет и цена 4$');
writeln('__________________________________________________________');
writeln(' N игрушка мин. возр. мах. возр. цена');
writeln('__________________________________________________________');
for i := 1 to n do
with assort[i] do
if (5>=min) and (5<=max) and (cena=4 )then begin
fl:=1;
writeln(i:3,name:10,min:10,max:11,cena:10);
end;
if fl = 0 then begin writeln('Такой игрушки нет');readln;end;
writeln('Поиск закончен');
readln;
writeln('конец программы');
readln;
END.
program Igr;
uses crt;
type zap=record
name : string[10];
min, max,cena : integer;
end;
var
n,i,fl:integer;
assort: array[1..100] of zap;
BEGIN
clrscr;
writeln('СОЗДАНИЕ МАССИВА ЗАПМСЕЙ');
writeln('*************************');
write('Количество вводимых записей: --> '); readln(n);
for i := 1 to n do begin
writeln('Ввести ',i,' - ю запись');
with assort[i] do begin
write('Название игрушки: --> ');
readln(name);
write('Минимальный возраст: --> ');
readln(min);
write('Максимальный возраст: -->');
readln(max);
write('Цена игрушки ($): -->');
readln(cena);
end;
end;
writeln;
writeln(' Создание закончено');
writeln;
writeln(' Исходный массив');
writeln;
writeln('__________________________________________________________');
writeln(' N игрушка мин. возр. мах. возр. цена');
writeln('__________________________________________________________');
for i := 1 to n do
with assort[i] do
writeln(i:3,name:10,min:10,max:11,cena:10);
readln;
writeln(' Поиск игрушек детям 5 лет и цена 4$');
writeln('__________________________________________________________');
writeln(' N игрушка мин. возр. мах. возр. цена');
writeln('__________________________________________________________');
for i := 1 to n do
with assort[i] do
if (5>=min) and (5<=max) and (cena=4 )then begin
fl:=1;
writeln(i:3,name:10,min:10,max:11,cena:10);
end;
if fl = 0 then begin writeln('Такой игрушки нет');readln;end;
writeln('Поиск закончен');
readln;
writeln('конец программы');
readln;
END.
Похожие вопросы
- помогите решить 2 задание на pascalABC
- Помогите написать на PascalABC программу
- Помогите решить задание по HTML/CSS в Dreamweaver
- Помогите решить матрица на С++
- Помогите решить задачу на Турбо паскале
- Помогите решить задачу на паскале
- Помогите решить задачу.
- Помогите решить, срочно ??????
- помогите решить задачку, на VBA для Excel
- Пожалуйста, помогите решить задачку по информатике...