IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Работа с записями, массивы и файлы
LLIRIKS
сообщение 23.01.2005 13:39
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 24
Пол: Мужской

Репутация: -  0  +


Люди, кто сможет, помогите, пожалуйста! Завтра экзамен - нужно срочно решить 2 задачи... blink.gif
обе задачи похожи - отличие лишь в том, что в 1-й задаче записи помещаются в массив, а во 2-й в файл...
в обеих задачах нужно организовать ввод информации об авторах (ФИО, гонорар за книгу) и их книгах (название книги, количество страниц, тираж).
причем ввод организовать таким образом, чтобы программа запрашивала сначала ФИО автора, потом информацию о каждой его книге и гонорар за нее.
Эту информацию вывести на печать - получится что-то типа этого:

ФИО 1-го автора - ...
название 1-й книги - ...
количество страниц - ...
тираж - ...
гонорар автора за книгу - ...
название 2-й книги - ...
количество страниц - ...
тираж - ...
гонорар автора за книгу - ...
ФИО 2-го автора - ...
название 1-й книги - ...
количество страниц - ...
тираж - ...
гонорар автора за книгу - ...
название 2-й книги - ...
количество страниц - ...
тираж - ...
гонорар автора за книгу - ...

причем организовать в 2 записи: авторов (ФИО и гонорар) и книг (название книги, количество страниц, тираж).
потом всю эту информацию отсортировать по общему гонорару автора и вывести результат на печать.
во 2-й задаче все то же самое, только через файлы...

если можете, помогите :p2: - очень нужно...
сам я уже, наверно, не успею... unsure.gif

вот что я пока что осилил по 1-й задаче:
Код

uses  crt;
type  BOOK=record
      ID_B:integer;
      NAZ:string;
      KOL:integer;
      TIR:integer;
      ZAP_B:integer;
     end;
     AVTOR=record
      ID_A:integer;
      FIO:string;
      GON:integer;
      ZAP_A:integer;
     end;
     ZAD=record
      ID_Z:integer;
      FIO:string;
      NAZ:string;
      KOL:integer;
      TIR:integer;
      GON:integer;
     end;
var   B:BOOK;
     A:AVTOR;
     MAS_B:array[1..64] of BOOK;
     MAS_A:array[1..64] of AVTOR;
     key1,key1_1,key2,key2_2:boolean;
     ch,anykey:char;
     I,K,J,L:integer;
     F,F1:string;
begin
clrscr;
I:=1;
 with A,B do
  begin
   repeat
    key2:=false;key2_2:=false;
    clrscr;
    A.ID_A:=I;
    writeln('Vvedite FIO avtora:');
    readln(A.FIO);
    A.ZAP_A:=I;
    repeat
     key1:=false;key1_1:=false;
     B.ID_B:=I;
     writeln('Vvedite nazvanie knigi:');
     readln(B.NAZ);
     writeln('Vvedite kolichestvo straniz:');
     readln(B.KOL);
     writeln('Vvedite tiraj knigi:');
     readln(B.TIR);
     writeln('Vvedite gonorar avtora za etu knigu:');
     readln(A.GON);
     B.ZAP_B:=I;
     repeat
      writeln('Budete vvodit eshe knigu?[Y,N]');
      readln(ch);
      If (ch in ['Y','y','N','n']) then key1_1:=true;
     until key1_1;
     If (ch in ['N','n']) then key1:=true;
     clrscr;
     MAS_A[I]:=A;
     MAS_B[I]:=B;
     Inc(I);
    until key1;
    repeat
     writeln('Budete vvodit eshe avtora?[Y,N]');
     readln(ch);
     If (ch in ['Y','y','N','n']) then key2_2:=true;
    until key2_2;
    If (ch in ['N','n']) then key2:=true;
    clrscr;
   until key2;
  end;
writeln('Dlya prodolgeniya nagmite lyubuyu klavishu...');
anykey:=readkey;
clrscr;
J:=1;L:=1;F:='';
for K:=1 to I do
 with A,B do
  begin
   A:=MAS_A[I];
   B:=MAS_B[I];
   F1:=F;
   F:=A.FIO;
   if (K>1) and (F<>F1) then
    begin
     Inc(J);
     L:=1;
    end;
   if ((L=1) or ((L>1) and (F<>F1))) then
    begin
     writeln('-------------------------------------------------------');
     writeln('----------------- Zapis ',J,'-go avtora -------------------');
     writeln('-------------------------------------------------------');
     writeln('Number ',J);
     writeln('FIO    ',A.FIO);
     writeln;
    end;
   if ((L=1) or ((L>1) and (F=F1))) then
    begin
     writeln('------------------ Zapis ',L,'-i knigi --------------------');
     writeln('Number              ',L);
     writeln('Nazvanie            ',B.NAZ);
     writeln('Kolichestvo straniz ',B.KOL);
     writeln('Tiraj               ',B.TIR);
     writeln('Gonorar avtora      ',A.GON);
     writeln;
     Inc(L);
    end;
  end;
writeln('Dlya prodolgeniya nagmite lyubuyu klavishu...');
anykey:=readkey;
end.

но где-то, как всегда, ошибки - никак не могу найти где именно... unsure.gif


--------------------
Я не люблю, когда мне лезут в душу,
Тем более, когда в нее плюют...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
LLIRIKS
сообщение 23.01.2005 17:22
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 24
Пол: Мужской

Репутация: -  0  +


в общем, организовал я ввод информации...
но дальше - опять запарка...
на данный момент алгоритм таков:
Код

uses  crt;
type  BOOK=record
      ID_B:integer;
      NAZ:string;
      KOL:integer;
      TIR:integer;
      ZAP_B:integer;
     end;
     AVTOR=record
      ID_A:integer;
      FIO:string;
      GON:integer;
      ZAP_A:integer;
     end;
var   B:BOOK;
     A:AVTOR;
     MAS_B:array[1..64] of BOOK;
     MAS_A:array[1..64] of AVTOR;
     key1,key1_1,key2,key2_2:boolean;
     ch,anykey:char;
     I,K,M:integer;
begin
clrscr;
I:=1;M:=1;
 with A,B do
  begin
   repeat
    key2:=false;key2_2:=false;
    clrscr;
    A.ID_A:=M;
    writeln('Vvedite FIO avtora:');
    readln(A.FIO);
    repeat
     key1:=false;key1_1:=false;
     B.ID_B:=I;
     writeln('Vvedite nazvanie knigi:');
     readln(B.NAZ);
     writeln('Vvedite kolichestvo straniz:');
     readln(B.KOL);
     writeln('Vvedite tiraj knigi:');
     readln(B.TIR);
     writeln('Vvedite gonorar avtora za etu knigu:');
     readln(A.GON);
     B.ZAP_B:=M;
     A.ZAP_A:=I;
     MAS_A[I]:=A;
     MAS_B[I]:=B;
     repeat
      writeln('Budete vvodit eshe knigu?[Y,N]');
      readln(ch);
      If (ch in ['Y','y','N','n']) then key1_1:=true;
     until key1_1;
     If (ch in ['N','n']) then key1:=true;
     clrscr;
     Inc(I);
    until key1;
    repeat
     writeln('Budete vvodit eshe avtora?[Y,N]');
     readln(ch);
     If (ch in ['Y','y','N','n']) then key2_2:=true;
    until key2_2;
    If (ch in ['N','n']) then key2:=true;
    clrscr;
    Inc(M);
   until key2;
  end;
writeln('Dlya prodolgeniya nagmite lyubuyu klavishu...');
anykey:=readkey;
end.


--------------------
Я не люблю, когда мне лезут в душу,
Тем более, когда в нее плюют...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 17:55
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"