Pascal Parking Kudeaketa Funtzioak eta Prozedurak
Enviado por Chuletator online y clasificado en Tecnología Industrial
Escrito el en
vasco con un tamaño de 6,52 KB
Pascal Parking Kudeaketa Funtzioak
Matrikula Bilaketa eta Sarrerak
FUNCTION fniMatrikulaBilatu (sZeinMatrikula : tsKate8; CONST ardParking: tardParking; iLuzera: Integer) : Integer ;
VAR
boAurkitua : Boolean ;
i : Integer ;
BEGIN
boAurkitua := FALSE ;
i := 1 ;
WHILE (NOT boAurkitua) AND (i <= iLuzera) DO
{ Matrikula bilatu (eta rZenbatekoa 0 delarik) }
IF (ardParking[i].sMatrikula = sZeinMatrikula) AND (ardParking[i].rZenbatekoa = 0)
THEN
boAurkitua := TRUE
ELSE
i := i + 1 ;
IF boAurkitua THEN
fniMatrikulaBilatu := i
ELSE
fniMatrikulaBilatu := -1 ;
END ;
Datuak eta Orduak Irakurtzea
{ Data baten datuak irakurri eta dagokion erregistroa bete }
PROCEDURE prDataIrakurri (VAR rdData : trdData) ;
BEGIN
WITH rdData DO
BEGIN
Write('Urtea: ') ;
ReadLn(iUrtea) ;
Write(' Hila: ') ;
ReadLn(iHila) ;
Write('Eguna: ') ;
ReadLn(iEguna) ;
END ;
END ;
{ Une baten datuak irakurri eta dagokion erregistroa bete }
PROCEDURE prUneaIrakurri (VAR rdUnea : trdUnea) ;
BEGIN
WITH rdUnea DO
BEGIN
Write('Ordua: ') ;
ReadLn(iOrduak) ;
Write(' Minutua: ') ;
ReadLn(iMinutuak) ;
Write('Segundoa: ') ;
ReadLn(iSegundoak) ;
END ;
END ;
{ Auto berri baten datuak irakurri eta dagokion erregistroa bete }
PROCEDURE prSartutakoAutoarenDatuakIrakurri (VAR rdAutoa : trdAutoarenDatuak) ;
BEGIN
WITH rdAutoa DO
BEGIN
Write('Sartutako autoaren matrikula eman (XXXX-YYY): ') ;
ReadLn(sMatrikula) ;
sMatrikula := UPCASE(sMatrikula) ;
WriteLn('Sarreraren unea eman...') ;
prUneaIrakurri(rdSarreraUnea) ;
{ Erregistroaren gainerako eremuak bete }
rdIrteeraData.iUrtea := 0 ;
rdIrteeraData.iHila := 0 ;
rdIrteeraData.iEguna := 0 ;
rdIrteeraUnea.iOrduak := 0 ;
rdIrteeraUnea.iMinutuak := 0 ;
rdIrteeraUnea.iSegundoak := 0 ;
iGauKopurua := 0 ;
rZenbatekoa := 0 ;
END ;
END ;
Formatuz Aldatzeko Funtzioak
{ Data erregistro bat kate bihurtzen du UU-HH-EE formatua duena }
FUNCTION fnsDataBihurtu (CONST rdData : trdData) : tsKate10 ;
VAR
sKatea: tsKate10 ;
sBiDigitu : tsKate2 ;
BEGIN
Str(rdData.iUrtea, sKatea) ;
IF Length(sKatea) = 1 THEN
sKatea := '000' + sKatea ;
sKatea := sKatea + '-' ;
Str(rdData.iHila, sBiDigitu) ;
IF Length(sBiDigitu) = 1 THEN
sBiDigitu := '0' + sBiDigitu ;
sKatea := sKatea + sBiDigitu + '-' ;
Str(rdData.iEguna, sBiDigitu) ;
IF Length(sBiDigitu) = 1 THEN
sBiDigitu := '0' + sBiDigitu ;
sKatea := sKatea + sBiDigitu ;
fnsDataBihurtu := sKatea ;
END;
{ Unea erregistro bat kate bihurtzen du OO:MM:SS formatua duena }
FUNCTION fnsUneaBihurtu (CONST rdUnea : trdUnea) : tsKate10 ;
VAR
sKatea: tsKate10 ;
sBiDigitu : tsKate2 ;
BEGIN
Str(rdUnea.iOrduak, sKatea) ;
IF Length(sKatea) = 1 THEN
sKatea := '0' + sKatea ;
sKatea := sKatea + ':' ;
Str(rdUnea.iMinutuak, sBiDigitu) ;
IF Length(sBiDigitu) = 1 THEN
sBiDigitu := '0' + sBiDigitu ;
sKatea := sKatea + sBiDigitu + ':' ;
Str(rdUnea.iSegundoak, sBiDigitu) ;
IF Length(sBiDigitu) = 1 THEN
sBiDigitu := '0' + sBiDigitu ;
sKatea := sKatea + sBiDigitu ;
fnsUneaBihurtu := sKatea ;
END;
Pantailaratze Prozedurak
{ Honako informazio hau pantailaratu: matrikula, sarreraren data eta ordua, eta, gau kopurua }
PROCEDURE prAutoBatenDatuakErakutsi (CONST rdAutoa : trdAutoarenDatuak) ;
VAR
sData, sUnea : tsKate10 ;
BEGIN
WITH rdAutoa DO
BEGIN
sData := fnsDataBihurtu(rdSarreraData) ;
sUnea := fnsUneaBihurtu(rdSarreraUnea) ;
WriteLn(sMatrikula:9, ' ':3, sData, ' ', sUnea, iGauKopurua:9) ;
END;
END;
PROCEDURE prGoikoLerroaErakutsi ;
VAR
i : Integer ;
BEGIN
WriteLn('MATRIKULA', 'SARRERA':22, 'GAUAK':9) ;
FOR i := 1 TO 40 DO
Write('-') ;
WriteLn;
END ;
{ Une jakin batean aparkalekuan dauden autoen informazioa pantailaratu }
PROCEDURE prBarruanDaudenAutoakErakutsi (CONST arAparkalekua : tardParking; iLuzera: Integer) ;
VAR
i : Integer ;
BEGIN
WriteLn;
prGoikoLerroaErakutsi ;
FOR i := 1 TO iLuzera DO
IF arAparkalekua[i].rZenbatekoa = 0 THEN { autoa barruan da }
prAutoBatenDatuakErakutsi(arAparkalekua[i]) ;
END;
Kalkuluak
{ Segundoen kopurua kalkulatu }
FUNCTION fnliSegundoakKalkulatu (CONST rdUnea : trdUnea) : Longint ;
BEGIN
fnliSegundoakKalkulatu := rdUnea.iOrduak * 3600 + rdUnea.iMinutuak * 60 + rdUnea.iSegundoak ;
END;
{ Auto baten egonaldiaren kostua kalkulatu }