2023(e)ko martxoaren 15(a), asteazkena

8. astea | izena, nota eta kalifikazioa

{
Datua den karaktere-katearen ezaugarriak:
- Datuak 15 karaktere ditu.
- Datuaren hasieran izen bat dago, adibidez Eleonor izena.
- Datuaren erdian # banatzailea agertuko da hainbat aldiz.
- Datuaren amaieran nota bat dago, adibidez 7.2 nota (beti zifra bat, puntua eta dezimal bat).

Datu bat teklatuaren bitartez harturik, beste karaktere bat sortzea eskatzen da,
emaitzak honako hau bilduko du: izena, kalifikazioa, nota.

111111
123456789012345

Eleonor#####7.2 Eleonor_OSOONDO_7.2
Paul########6.8 Paul_ONDO_6.8
Kattalin####9.0 Kattalin_BIKAIN_9.0
Jon#########1.8 Jon_GUTXI_1.8
}

program IzenaNotaEtaKalifikazioa ;
type
DM_Kate15 = string[15] ;
DM_Kate30 = string[30] ;


function fnsZenbakiakLetrazOrdezkatu(rNota: real) : DM_Kate15 ;
begin
if rNota < 5.0 then fnsZenbakiakLetrazOrdezkatu := 'GUTXI' ;
if (rNota >= 5.0) and (rNota < 6.0) then fnsZenbakiakLetrazOrdezkatu := 'NAHIKO' ;
if (rNota >= 6.0) and (rNota < 7.0) then fnsZenbakiakLetrazOrdezkatu := 'ONDO' ;
if (rNota >= 7.0) and (rNota < 9.0) then fnsZenbakiakLetrazOrdezkatu := 'OSOONDO' ;
if rNota >= 9.0 then fnsZenbakiakLetrazOrdezkatu := 'BIKAIN' ;
end ;


procedure TraolakKendu(var sDatua : DM_Kate15) ;
var
iBanatzaileaNon : integer ;
begin
iBanatzaileaNon := pos('#', sDatua) ;
writeln('# ', iBanatzaileaNon, '. posizioan') ;
writeln ;
delete(sDatua, iBanatzaileaNon, 15 - iBanatzaileaNon - 2) ;
end ;


procedure BanaketaEgin(sDatua : DM_Kate15; var sIzena, sNota : DM_Kate15) ;
begin
sIzena := copy(sDatua, 1, length(sDatua)-3) ;
sNota := copy(sDatua, length(sDatua)-2, 3) ;
end ;


{ ------------------------------ Programa Nagusia ------------------------------ }
var
sDatua, sIzena, sNota, sKalifikazioa : DM_Kate15 ;
sEmaitza : DM_Kate30 ;
rNota : real ;
iErroreaNon : integer ;
begin
writeln ;
writeln ;
writeln ;
writeln('//////////////////////////////////////') ;

repeat
writeln(' 111111') ;
writeln(' 123456789012345') ;
write('Ikaslearen datuak eman (adibidez: Eleonor#####7.2): ') ;
readln(sDatua) ;
if length(sDatua) <> 15 then
writeln('Datuak 15 karaktere behar ditu') ;;
until length(sDatua) = 15 ;

writeln('========> 111111') ;
writeln('========>123456789012345') ;
writeln('sDatua==>', sDatua, '<==') ;
writeln ;

TraolakKendu(sDatua) ;

writeln('========> 111111') ;
writeln('========>123456789012345') ;
writeln('sDatua==>', sDatua, '<==') ;
writeln ;

BanaketaEgin(sDatua, sIzena, sNota) ;

writeln('========> 111111') ;
writeln('========>123456789012345') ;
writeln('sIzena==>', sIzena, '<==') ;
writeln('sNota===>', sNota, '<==') ;
writeln ;

val(sNota, rNota, iErroreaNon) ;
writeln('rNota ==>', rNota, ' iErroreaNon=', iErroreaNon) ;

writeln ;
if iErroreaNon = 0 then
begin
sKalifikazioa := fnsZenbakiakLetrazOrdezkatu(rNota) ;
sEmaitza := sIzena + '_' + sKalifikazioa + '_' + sNota ;
writeln('sEmaitza===>', sEmaitza, '<==') ;
end
else
writeln('Kalifikazioa ezin izan da kalkulatu.') ;

writeln ;
writeln('//////////////////////////////////////') ;
readln ;
end.








 

iruzkinik ez:

Argitaratu iruzkina