Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: 2 задачи по Pascal
Форум программистов > Системное программирование > Delphi и Pascal > Delphi - FAQ
Trim
вот такие задачи:


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


18. Используя очередь и стек из входного файла f проанализировать текст сбалансированный по скобкам:
<текс> ::= <пусто>|<элемент><текст>
<элемент>::=<буква>|(<текст>).
Напечатать упорядоченные пары номеров открывающих скобок.
Morpheus
не менее 100$, задачи аЦЦЦки трудные
Trim
первая задача решена, однако сбоит - то компилируется без проблем, то выдаёт различные ошибки...с чем связано - понятия не имею, а вот вторая - это для меня тайна за семью печатями - хотя бы принцип решения обьясните...

2 Morpheus
и не надо сарказма, пожайлуста!
Trim
вот код первой программы - бьюсь уже месяц - ничего путного в голову не идёт...

 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;
zubr
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
DIR3ct0r
Загрузил из файла все данные в массив записей и работай с ним, сортировка, поиск...
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;
Trim
Всем огромаднейшее спасибо!! peace^)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2008 IPS, Inc.