![]() |
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. но где-то, как всегда, ошибки - никак не могу найти где именно... ![]() -------------------- Я не люблю, когда мне лезут в душу,
Тем более, когда в нее плюют... |
![]() ![]() |
Jahnerus |
![]()
Сообщение
#2
|
![]() Уникальный ![]() ![]() Группа: Пользователи Сообщений: 64 Пол: Мужской Репутация: ![]() ![]() ![]() |
Первая часть программы!
... работает с массивами ... выдаёт сведения по убыванию гонораров авторов ... тоесть начиная с самого главного буржуя и т. д. Код uses crt; const max_avt=10; max_book=20; type book=record naz:string[40]; kol:integer; tir:integer; book_gon:longint; end; avtor=record fio:string[40]; gon:longint; kol_book:byte; mas_book:array [1..max_book] of book; end; var tmp:avtor; mas_avt:array[1..max_avt] of avtor; kol_avt:integer; i,j:integer; ch:char; begin clrscr; kol_avt:=0; repeat inc(kol_avt); with mas_avt[kol_avt] do begin kol_book:=0; write('Vvedite FIO avtora: '); readln(FIO); repeat inc(kol_book); with mas_book[kol_book] do begin writeln('-------- Kniga No ',kol_book,' --------'); write('Vvedite nazvanie knigi: '); readln(naz); write('Vvedite kolichestvo straniz: '); readln(kol); write('Vvedite tiraj knigi: '); readln(tir); write('Vvedite gonorar avtora za etu knigu: '); readln(book_gon); end; gon:=gon + mas_book[kol_book].book_gon; writeln('Budete vvodit eshe knigu? [Y,N]'); repeat until keypressed; ch:=readkey; until not((ch='y') or (ch='Y')); end; writeln('Budete vvodit eshe avtora? [Y,N]'); repeat until keypressed; ch:=readkey; until not((ch='y') or (ch='Y')); for i:=1 to kol_avt do begin for j:=1 to kol_avt-1 do begin if mas_avt[j].gon < mas_avt[j+1].gon then begin tmp:=mas_avt[j]; mas_avt[j]:=mas_avt[j+1]; mas_avt[j+1]:=tmp; end; end; end; writeln('Dlya prodolgeniya nagmite lyubuyu klavishu...'); readkey; clrscr; for i:=1 to kol_avt do begin with mas_avt[i] do begin writeln('-------------------------------------------------------'); writeln('----------------- Zapis ',i,'-go avtora -------------------'); writeln('-------------------------------------------------------'); writeln('FIO: ',fio); writeln('Gonorar za vse knigi: ',gon); for j:=1 to kol_book do begin with mas_book[j] do begin writeln('------------------ Zapis ',j,'-i knigi --------------------'); writeln('Nazvanie ',naz); writeln('Kolichestvo straniz ',kol); writeln('Tiraj ',tir); writeln('Gonorar za knigu ',book_gon); end; end; end; end; writeln('Dlya prodolgeniya nagmite lyubuyu klavishu...'); readkey; end. Сообщение отредактировано: Jahnerus - 23.01.2005 18:46 -------------------- Век живи, век учи С © by Jahnerus
|
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 17:44 |