![[Indekso]](bildoj/indekso.gif)
#include <stdio.h>
#define fiasko (-1)
typedef struct{int sxlosilo; char *valoro;} ano;
int duonigaSercxo(V,n,sx) ano V[]; int n, sx; /*funkciĉapo */
{ int sube=0, supre=n-1, meze, sx_m; /*lokaj variabloj*/
while(sube<=supre){ /*ĉapo de komenckondiĉa iteracio */
meze = (sube+supre)/2;
if(sx==(sx_m=V[meze].sxlosilo))return meze; /*elirejo*/
if(sx<sx_m) supre=meze-1;
else sube=meze+1;
} /*finiĝis la komenckondiĉa iteracio*/
return fiasko;
} /*finiĝis la korpo de la funkcio*/
int cxen_al_ent(char *cx) /* faras el signoĉeno cx entjeron */
{ int i, n, minuso=0; /* lokaj variabloj */
for(i=0; cx[i]==' '||cx[i]=='\n'||cx[i]=='\t'; i++) ;
/*i:=0; *
*DUM (cx[i]=' ') AŬ (cx[i]=nl) AŬ (cx[i]=tab) FARU STARTO*
* STARTO {la vakua iteracikorpo} FINO; *
* i:=i+1 {la nombrilkremento el la iteraciĉapo} *
*FINO; *
switch(cx[i]) {case '-': minuso=1; case '+': i++; }
/* alpha:=cx[i]; *
* SE alpha='-' TIAM AL 1; *
* SE alpha='+' TIAM AL 2 ALIE AL 3; *
* 1: minuso:=1; *
* 2: i:=i+1; *
* 3: {daŭrigo...}; */
for(n=0; cx[i]>='0'&&cx[i]<='9';) n = 10*n+cx[i++]-'0';
/*n:=0; *
*DUM (cx[i]>='0') KAJ (cx[i]<='9') FARU STARTO *
* n:=10*n+nro(cx[i])-nro('0'); i:=i+1 {postalkremento} *
*FINO; */
return (minuso? -n : n); /*kondiĉa esprimo en reven'ordono */
}
![[Indekso]](bildoj/indekso.gif)
![[Instrukcio]](bildoj/kovrilo.gif)