Ïîìîùü - Ïîèñê - Ïîëüçîâàòåëè - Êàëåíäàðü
Ïîëíàÿ âåðñèÿ: Ðàáîòà ñ çàïèñÿìè
Ôîðóì «Âñ¸ î Ïàñêàëå» > Pascal, Object Pascal > Çàäà÷è
LLIRIKS
Ëþäè, êòî ñìîæåò, ïîìîãèòå, ïîæàëóéñòà! Çàâòðà ýêçàìåí - íóæíî ñðî÷íî ðåøèòü 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
LLIRIKS
â îáùåì, îðãàíèçîâàë ÿ ââîä èíôîðìàöèè...
íî äàëüøå - îïÿòü çàïàðêà...
íà äàííûé ìîìåíò àëãîðèòì òàêîâ:
Êîä

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.
Altair
Öèòàòà
îòñîðòèðîâàòü ïî îáùåìó ãîíîðàðó àâòîðà

 faq'e åñòü èíôà êàê ñîðòèðîâàòü äàííûå...

â ÷åì ïðîáëåììà êîíêðåòíî?
Jahnerus
Ïåðâàÿ ÷àñòü ïðîãðàììû!
... ðàáîòàåò ñ ìàññèâàìè ... âûäà¸ò ñâåäåíèÿ ïî óáûâàíèþ ãîíîðàðîâ àâòîðîâ ... òîåñòü íà÷èíàÿ ñ ñàìîãî ãëàâíîãî áóðæóÿ è ò. ä.
Êîä
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.
LLIRIKS
âñå ðàíî íå âñå ïîíÿòíî... 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;
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 ïî îáùåìó ãîíîðàðó àâòîðà è âûâåñòè ïîëó÷åííûé ðåçóëüòàò íà ïå÷àòü (àíàëîãè÷íî ïåðâîíà÷àëüíîìó âûâîäó íà ïå÷àòü - ïî òàêîìó æå ïðèíöèïó).

åñëè êòî ìîæåò, ïîìîãèòå, ïëèç, äîïèñàòü ìîè èñõîäíèêè... unsure.gif æåëàòåëüíî ñ êîììåíòàðèÿìè è ïîÿñíåíèÿìè... unsure.gif
áóäó î÷åíü ïðèçíàòåëåí rolleyes.gif
Ýòî òåêñòîâàÿ âåðñèÿ — òîëüêî îñíîâíîé êîíòåíò. Äëÿ ïðîñìîòðà ïîëíîé âåðñèè ýòîé ñòðàíèöû, ïîæàëóéñòà, íàæìèòå ñþäà.