program
ZenbaitNotenBatezbestekoAritmetikoa;
uses
crt;
type
tsKate30 =
string
[
30
];
procedure
IzenAbizen_Nota(sIkaslea: tsKate30;
var
sIzenAbizen, sNota: tsKate30);
var
iKont:
integer
;
begin
writeln
(
'IzenAbizen_Nota() prozeduran ------------------------------'
);
sNota :=
''
;
sIzenAbizen :=
''
;
for
iKont:=
1
to
length(sIkaslea)
do
begin
if
(sIkaslea[iKont] >=
'0'
)
and
(sIkaslea[iKont] <=
'9'
)
then
sNota := sNota + sIkaslea[iKont]
else
sIzenAbizen := sIzenAbizen + sIkaslea[iKont];
end
;
writeln
(
' sNota ('
, length(sNota):
2
,
' karaktere) |'
, sNota,
'|'
);
writeln
(
'sIzenAbizen ('
, length(sIzenAbizen):
2
,
' karaktere) |'
, sIzenAbizen,
'|'
);
writeln
(
'IzenAbizen_Nota() prozeduraren amaiaera -------------------'
);
end
;
procedure
Izen_Abizen(sIzenAbizen: tsKate30;
var
sIzena, sAbizena: tsKate30);
var
iKont, iHasieraNon:
integer
;
begin
writeln
(
'Izen_Abizen() prozeduran ----------------------------------'
);
iHasieraNon :=
2
;
iKont :=
2
;
while
sIzenAbizen[iKont] >
'Z'
do
begin
writeln
(iKont:
2
,
'. ---> '
, sIzenAbizen[iKont]);
iKont := iKont +
1
;
end
;
iHasieraNon := iKont;
writeln
(
'Deituraren hasierako posizioa '
, iHasieraNon,
' da'
);
sIzena := copy(sIzenAbizen,
1
, iHasieraNon-
1
);
sAbizena := copy(sIzenAbizen, iHasieraNon, length(sIzenAbizen)-iHasieraNon+
1
);
writeln
(
' sIzena ('
, length(sIzena):
2
,
' karaktere) |'
, sIzena,
'|'
);
writeln
(
'sAbizena ('
, length(sAbizena):
2
,
' karaktere) |'
, sAbizena,
'|'
);
writeln
(
'Izen_Abizen() prozeduraren amaiaera -----------------------'
);
end
;
procedure
DatuakBakandu(sIkaslea: tsKate30;
var
sIzena, sAbizena, sNota: tsKate30);
var
iZenbatZifra:
integer
;
sIzenAbizen: tsKate30;
begin
textcolor(Cyan);
writeln
(
'DatuakBakandu() prozeduran --------------------------------'
);
textcolor(Yellow);
IzenAbizen_Nota(sIkaslea, sIzenAbizen, sNota);
iZenbatZifra := length(sNota);
if
iZenbatZifra >
1
then
insert(
'.'
, sNota,
2
);
textcolor(Magenta);
Izen_Abizen(sIzenAbizen, sIzena, sAbizena);
textcolor(Cyan);
writeln
(
'sIzena ('
, length(sIzenA):
2
,
' karaktere) |'
, sIzena,
'|'
);
writeln
(
'sAbizena ('
, length(sAbizena):
2
,
' karaktere) |'
, sAbizena,
'|'
);
writeln
(
'sNota ('
, length(sNota):
2
,
' karaktere) |'
, sNota,
'|'
);
writeln
(
'DatuakBakandu() prozeduraren amaiaera ---------------------'
);
textcolor(LightGray);
end
;
var
sZenbat, sIkaslea, sNota, sIzena, sAbizena: tsKate30;
rNota, rBatukaria:
real
;
iZenbatIkasle, iKont, iErroreaNon:
integer
;
begin
writeln
(
'//////////////////////////////////////'
);
writeln
;
repeat
write
(
'Zenbat ikasle izango dira (adibidez 4): '
);
readln(sZenbat);
val
(sZenbat, iZenbatIkasle, iErroreaNon);
if
iErroreaNon <>
0
then
writeln
(
'Datu okerra '
, iErroreaNon,
'. posizioko karakterea onargarria ez delako.'
)
else
if
iZenbatIkasle <=
0
then
writeln
(
'Ikasleen kopurua gutxienez 1 izan behar da.'
);
until
(iZenbatIkasle >
0
)
and
(iErroreaNon =
0
);
rBatukaria :=
0.0
;
for
iKont:=
1
to
iZenbatIkasle
do
begin
writeln
;
write
(iKont,
'. ikaslearen datuak (adibidez: Eleo72norIz1a): '
);
readln(sIkaslea);
writeln
;
writeln
(
'datua ==>'
, sIkaslea,
'<=='
);
DatuakBakandu(sIkaslea, sIzena, sAbizena, sNota);
writeln
(iKont:
2
,
'. ikaslea (kateak) >>> |'
, sIzena,
'| |'
, sAbizena,
'| |'
, sNota,
'|'
);
val
(sNota, rNota, iErroreaNon);
writeln
(iKont:
2
,
'. ikaslea (zenbakiak) >>> rNota = '
, rNota:
0
:
3
,
' iErroreaNon = '
, iErroreaNon);
rBatukaria := rBatukaria + rNota;
end
;
writeln
;
writeln
(
'Batezbestekoa = '
, rBatukaria/iZenbatIkasle:
0
:
3
);
writeln
;
writeln
(
'//////////////////////////////////////'
);
repeat
until
keypressed;
end
.