2024(e)ko martxoaren 14(a), osteguna

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

Iruzkinen bat idazteko Google-ko kontu bat behar duzu. Iruzkin guztien moderazio-ardura blogeko administratzaileari dagokio.