![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
LLIRIKS |
![]() ![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 24 Пол: Мужской Репутация: ![]() ![]() ![]() |
Люди, кто сможет, помогите, пожалуйста! Завтра экзамен - нужно срочно решить 2 задачи...
![]() обе задачи похожи - отличие лишь в том, что в 1-й задаче записи помещаются в массив, а во 2-й в файл... в обеих задачах нужно организовать ввод информации об авторах (ФИО, гонорар за книгу) и их книгах (название книги, количество страниц, тираж). причем ввод организовать таким образом, чтобы программа запрашивала сначала ФИО автора, потом информацию о каждой его книге и гонорар за нее. Эту информацию вывести на печать - получится что-то типа этого: ФИО 1-го автора - ... название 1-й книги - ... количество страниц - ... тираж - ... гонорар автора за книгу - ... название 2-й книги - ... количество страниц - ... тираж - ... гонорар автора за книгу - ... ФИО 2-го автора - ... название 1-й книги - ... количество страниц - ... тираж - ... гонорар автора за книгу - ... название 2-й книги - ... количество страниц - ... тираж - ... гонорар автора за книгу - ... причем организовать в 2 записи: авторов (ФИО и гонорар) и книг (название книги, количество страниц, тираж). потом всю эту информацию отсортировать по общему гонорару автора и вывести результат на печать. во 2-й задаче все то же самое, только через файлы... если можете, помогите :p2: - очень нужно... сам я уже, наверно, не успею... ![]() вот что я пока что осилил по 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. но где-то, как всегда, ошибки - никак не могу найти где именно... ![]() -------------------- Я не люблю, когда мне лезут в душу,
Тем более, когда в нее плюют... |
![]() ![]() |
LLIRIKS |
![]()
Сообщение
#2
|
Новичок ![]() Группа: Пользователи Сообщений: 24 Пол: Мужской Репутация: ![]() ![]() ![]() |
все рано не все понятно...
![]() вот немного дальше продвинулся - организовал ввод и вывод информации в обеих задачах: 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; 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,M:integer; F,F1:string; begin {-------------------------------VVOD_INFORMAZII----------------------------} 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; {-----------------------------VIVOD_INFORMAZII-----------------------------} A:=MAS_A[1]; with A do F:=A.FIO; M:=1; for K:=1 to I-1 do begin A:=MAS_A[K]; F1:=A.FIO; if ((K=1) or ((K>1) and (F<>F1))) then begin clrscr; writeln('Zapis ',M,'-go avtora'); writeln('FIO ',A.FIO); Inc(M); end; B:=MAS_B[K]; with A,B do begin writeln; writeln('Nazvanie knigi ',B.NAZ); writeln('Kolichestvo straniz ',B.KOL); writeln('Tiraj ',B.TIR); writeln('Gonorar za knigu ',A.GON); end; F:=F1; end; writeln('Dlya prodolgeniya nagmite lyubuyu klavishu...'); anykey:=readkey; end. 2-я задача Код 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 FILE_A : file of AVTOR; FILE_B: file of BOOK; A:AVTOR; B:BOOK; key1,key1_1,key2,key2_2:boolean; ch,anykey:char; I,M,K:integer; F,F1:string; begin assign(FILE_A ,'FILE_A.dat'); rewrite(FILE_A); assign(FILE_B ,'FILE_B.dat'); rewrite(FILE_B); 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; write(FILE_A,A); write(FILE_B,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; close(FILE_A); close(FILE_B); clrscr; reset(FILE_A); reset(FILE_B); M:=1;K:=1; read(FILE_A,A); with A do F:=A.FIO; seek(FILE_A,0); while (not(eof(FILE_A)) and not(eof(FILE_B))) do begin read(FILE_A,A); with A do begin F1:=A.FIO; if ((K=1) or ((K>1) and (F<>F1))) then begin clrscr; writeln('Zapis ',M,'-go avtora'); writeln('FIO ',A.FIO); Inc(M); end; end; read(FILE_B,B); with A,B do begin writeln; writeln('Nazvanie knigi ',B.NAZ); writeln('Kolichestvo straniz ',B.KOL); writeln('Tiraj ',B.TIR); writeln('Gonorar za knigu ',A.GON); end; F:=F1; Inc(K); writeln('Dlya prodolgeniya nagmite lyubuyu klavishu...'); anykey:=readkey; end; end. в обеих задачах осталось отсортировать запись AVTOR по общему гонорару автора и вывести полученный результат на печать (аналогично первоначальному выводу на печать - по такому же принципу). если кто может, помогите, плиз, дописать мои исходники... ![]() ![]() буду очень признателен ![]() Сообщение отредактировано: LLIRIKS - 24.01.2005 0:40 -------------------- Я не люблю, когда мне лезут в душу,
Тем более, когда в нее плюют... |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 17:45 |