2 задачи по Pascal

Тема в разделе "Delphi - FAQ", создана пользователем Trim, 30 май 2007.

Статус темы:
Закрыта.
  1. Trim

    Trim Гость

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


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


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

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    не менее 100$, задачи аЦЦЦки трудные
     
  3. Trim

    Trim Гость

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

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

    Trim Гость

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

    Код (Text):
     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;
     
  5. zubr

    zubr Гость

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

    DIR3ct0r Гость

    Загрузил из файла все данные в массив записей и работай с ним, сортировка, поиск...
    Код (Text):
    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;
     
  7. Trim

    Trim Гость

    Всем огромаднейшее спасибо!! peace^)
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей