Ïîìîùü - Ïîèñê - Ïîëüçîâàòåëè - Êàëåíäàðü
Ïîëíàÿ âåðñèÿ: çàäà÷è íà ðåêóðñèþ è çàïèñè
Ôîðóì «Âñ¸ î Ïàñêàëå» > Pascal, Object Pascal > Çàäà÷è
áóÿí
îãðîìíàÿ ïîðñüáà ïîìî÷ü ðåøèòü çàäà÷è:
:molitva:
1) Íàïèñàòü ðåêóðñèâíóþ ôóíêöèþ, êîòîðàÿ íàõîäèò ìèíèìàëüíûé ýëåìåíò â ìàòðèöå (äâóìåðíîì ìàññèâå).
2) Ñîçäàòü ôàéë â êîòîðîì ñîäåðæèòñÿ èíôîðìàöèÿ òðîèõ ó÷àùèõñÿ (ôàìèëèÿ,èìÿ,òåëåôîí,ñðåäíèå îöåíêè ïî ïðåäìåòàì). Âûâåñòè íà ýêðàí ôàìèëèþ è èìÿ ó÷àùåãîñÿ ñ ìàêñèìàëüíîé è ìèíèìàëüíîé îöåíêîé, èñïîëüçîâàòü òèï çàïèñü.
APAL
2)
Íå òåñòèðîâàë - êîäèë ïðÿìî çäåñü...
Êîä
Const
  MaxPredmet = 6;
  MaxUchenik = 3;
  FileName = 'Data.dat';
Type
  String16 = String[16];
  NameT = Record
                   F,I   : String16;
                End;
  danT = Record
               Name : NameT;
               Phone : String16;
               Ocen  : Array [1..MaxPredmet] of Real;
           End;
Var
  i,j  : Byte;
  f    : File of DanT;
  dan : DanT;

Procedure EnterData(k : Byte);
Begin
  Write('Ôàìèëèÿ ó÷åíèêà ¹ ',k,' : '); Readln(Dan.name.F);
  Write('Èìÿ ó÷åíèêà ¹ ',k,' : '); Readln(Dan.name.I);
  Write('Òåëåôîí ó÷åíèêà ¹ ',k,' : '); Readln(Dan.Phone);
  For j:=1 to MaxPredmet do
  Begin
    Write('Ñðåäíÿÿ îöåíêà ó÷èíèêà ¹ ',k,' ïî ïðåäìåòó ¹ ',j,' : '); Readln(Dan.Ocen[j]);
  End;
  Reset(f);
  Write(f,Dan);
  Close(f);
End;

Procedure ViewMinMaxOcenka;
Var
  MinName, MaxName : String;
  MinOc, MaxOc : Real;

  Function FindMinOc : Real;
  Begin
    j:=Dan.Ocen[1];
    For i:=2 to MaxPredmet do
      If j>Dan.Ocen[i] then j:=Dan.Ocen[i];
    FindMinOc:=j;
  End;

  Function FindMaxOc : Real;
  Begin
    j:=Dan.Ocen[1];
    For i:=2 to MaxPredmet do
      If j<Dan.Ocen[i] then j:=Dan.Ocen[i];
    FindMinOc:=j;
  End;

Begin
  Reset(f);
  Read(f,dan);
  MinName:=Dan.name.f+' '+Dan.name.i; MaxName:=MinName;
  MinOc:=FindMinOc; MaxOc:=FindMaxOc;
  While not EOF(f) do
  Begin
    Read(f,Dan);
    If FindMinOc<MinOc then
    Begin
      MinName:=Dan.name.f+' '+Dan.name.i;
      MinOc:=FindMinOc;
    End;
    If FindMaxOc>MaxOc then
    Begin
      MaxName:=Dan.name.f+' '+Dan.name.i;
      MaxOc:=FindMaxOc;
    End;
  End;
  Close(f);
  Writeln('Ôàìèëèÿ Èìÿ ó÷åíèêà ñ ìèíèìàëüíîé îöåíêîé ',MinOc:4:2,' : ',MinName);
  Writeln('Ôàìèëèÿ Èìÿ ó÷åíèêà ñ ìàêñèìàëüíîé îöåíêîé ',MaxOc:4:2,' : ',MaxName)
End;

Begin
  Assign(f,FileName);
  For i:=1 to MaxUchenik do EnterData(i);
  Writeln;
  ViewMinMaxOcenka;
End.

Íå èñêëþ÷àþ íåêîòîðûõ îïå÷àòîê è íåòî÷íîñòåé... áóäóò âîïðîñû - çàäàâàé.
APAL
1)
Çäåñü ÿ íå î÷åíü ïîíÿë êóäà "ïðèëàäèòü" ðåêóðñèþ...
Guest
ÑÏÀÑÈÁÎ ÎÃÐÎÌÍÅÉØÅÅ !!!!!!!!!!!!!!!!!!!!!!
íèêîãäà íå çàáóäó.
âûðó÷èëè !
åùå ðàç ñïàñèáî !
APAL
×òî, íåóæåëè ðàáîòàåò? È íè îäíîé îøèáêè/îïå÷àòêè?
ß æå íå ïðîâåðÿë.... óäèâèòåëüíî!
Ýòî òåêñòîâàÿ âåðñèÿ — òîëüêî îñíîâíîé êîíòåíò. Äëÿ ïðîñìîòðà ïîëíîé âåðñèè ýòîé ñòðàíèöû, ïîæàëóéñòà, íàæìèòå ñþäà.