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 }

Entradas relacionadas: