infoarena

infoarena - concursuri, probleme, evaluator, articole => Teme => Subiect creat de: Alexandra din Aprilie 22, 2012, 12:56:32



Titlul: problema Pascal
Scris de: Alexandra din Aprilie 22, 2012, 12:56:32
Buna ziua.
Va rog sa ma ajutati la o problema Pascal.
Problema cere sa elaborez un program care citeste de  datele  la n persoane (n<50) si afiseaza pe ecran :a)persoana cea mai in varsta; b) cea mai tanara;

Iata ce am reusit sa fac

Program P3;
type Data=record
ziua:1..31;
luna:1..12;
anul:integer;
end;
Persoana=record
NumePrenume:string;
DataNasterii:Data;
end;
ListaPersoane=array [1..50] of Persoana;
var n,i:integer;
LP:ListaPersoane; loc:string;
begin
writeln ('Introduceti numarul de persoane;); readln(n);
writeln('Introduceti datele');
for i:=1 to n do begin
writeln('Numele si prenumele:'); readln (LP[ i ].NumePrenume);
writeln('Ziua nasterii'); readln (LP [ i ].DataNasterii.ziua);
writeln('Luna nasterii'); readln(LP[ i ].DataNasterii.luna);
writeln('AnulNasterii'); readln(LP[ i ].DataNasterii.anul);


Pana aici rogramul citeste datele. Va rog sa-mi dati o ideee cum sa rezolv unctul a. Am incercat cateva variante, dar nu au mers.
Multumesc anticipat.


Titlul: Răspuns: problema Pascal
Scris de: George Marcus din Aprilie 22, 2012, 13:47:17
Pentru a) afli prima data dintre cele n din punct de vedere cronologic. (compari prima data anul, apoi luna, apoi ziua) Pentru b) tot asa, doar ca afli ultima data.


Titlul: Răspuns: problema Pascal
Scris de: Alexandra din Aprilie 22, 2012, 13:53:23
Asa m-am gandit si eu, dar nu stiu cum sa transpun asta.


Titlul: Răspuns: problema Pascal
Scris de: George Marcus din Aprilie 22, 2012, 16:20:26
Cod:
var DataMinima:Data;
............................
DataMinima.anul = maxint;
for i:=1 to n do
  if LP[i].anul < DataMinima.anul then
     DataMinima := LP[i]
  else
     if LP[i].anul = DataMinima.anul and LP[i].luna < DataMinima.luna then
        DataMinima := LP[i]
     else
       if LP[i].anul = DataMinima.anul and LP[i].luna = DataMinima.luna and LP[i].ziua < DataMinima.ziua then
           DataMinima := LP[i];

N-am verificat sa vad daca merge, dar ceva de genul asta ar trebui sa fie. La fel si pentru b.