2 задачи по Pascal

  • Автор темы Trim
  • Дата начала
Статус
Закрыто для дальнейших ответов.
T

Trim

#1
вот такие задачи:


12. Сведения о книге состоят из фамилии автора, названия и года издания. Дан набор, состоящий из 1000 таких сведений. Найти:
а) названия книг данного автора, изданные с 1960 по 1980г;
б) упорядочить сведения о книгах по первой букве фамилии
автора.


18. Используя очередь и стек из входного файла f проанализировать текст сбалансированный по скобкам:
<текс> ::= <пусто>|<элемент><текст>
<элемент>::=<буква>|(<текст>).
Напечатать упорядоченные пары номеров открывающих скобок.
 
T

Trim

#3
первая задача решена, однако сбоит - то компилируется без проблем, то выдаёт различные ошибки...с чем связано - понятия не имею, а вот вторая - это для меня тайна за семью печатями - хотя бы принцип решения обьясните...

2 Morpheus
и не надо сарказма, пожайлуста!
 
T

Trim

#4
вот код первой программы - бьюсь уже месяц - ничего путного в голову не идёт...

Код:
 program avtor;
uses crt;
const
aSmb = ['A'..'Z','a'..'z'];
aNmb = ['0'..'9'];

type
std = record

a: integer;
g: byte;

end;
var
fam:string;
naz:string;
god:string;
fo,fi,f1,f2,f:text;
n: string;
j,i:integer;
p:std;
k:char;
begin

writeln('Vvedite familiu avtora');
readln(n);
assign(fi,'input.txt');
assign(f,'output2.txt');
assign(fo,'output.txt');
reset(fi);
rewrite(fo);
rewrite(f);
while not eof(fi) do
begin
readln(fi,fam);
readln(fi,naz);
readln(fi,god);

if fam=n then

{for j:=1960 to 1980 do
if god='j' then}
if (god>'1960')and (god<'1980') then
begin

write(fo,fam,naz,god);

end;
for k:='a' to 'z' do
if fam[0]=k then
writeln(f,fam,naz,god);
end;
 
Z

zubr

#5
1. Ошибка в fam[0]=k. В паскале строковые массивы индексируются с 1, а не с 0.
2. Вообще непонятен смысл кода:
Код:
for k:='a' to 'z' do
if fam[0]=k then
writeln(f,fam,naz,god);
3. Файлы, после работы с ними необходимо закрывать процедурой Close
 
D

DIR3ct0r

#6
Загрузил из файла все данные в массив записей и работай с ним, сортировка, поиск...
Код:
type
TBook = record
Author, 
Caption: string;
Year: TDate;
end;
var
Arr: array [1..1000] of TBook;
Book: TBook;
begin
// загрузка из файла в массив
// поиск
writeln('Vvedite familiu avtora');
readln(n);
for i:= 1 to 1000 do
if Arr[i] = n then
begin
writeln('найдено');
Break;
end;
if i > 1000 then writeln('не найдено');

// сортировка
for i:= 1 to 1000 - 1 do
for j:= i + 1 to 1000 do
if Arr[i].Caption > Arr[j].Caption then
begin
Book:= Arr[i];
Arr[i]:= Arr[j]
Arr[j]:= Book;
end;
end;
 
Статус
Закрыто для дальнейших ответов.