[Indekso][Instrukcio]


Duoniga serĉo en C

   
#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*/


Signoĉeno, kaza ordono, nombrila iteracio en C

   
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][Instrukcio]