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

8. astea | izena, nota eta kalifikazioa

Kateen azpiprogramak: length(), pos(), copy(), delete(), val()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
{
    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