Files
2025-02-Numerical/lib/nr/ansi/examples/xdecchk.c
2025-09-12 18:55:25 +09:00

60 lines
1.1 KiB
C

/* Driver for routine decchk */
#include <stdio.h>
#define NRANSI
#include "nr.h"
#define MAXLINE 128
int main(void)
{
int j,k,l,n,nbad=0,ntot=0;
int iok,jok;
char lin[MAXLINE+2],ch,chh;
/* test all jump transpositions of the form 86jlk41 */
lin[0]='8';
lin[1]='6';
lin[5]='4';
lin[6]='1';
for (j=48;j<=57;j++) {
for (k=48;k<=57;k++) {
for (l=48;l<=57;l++) {
lin[3]=l;
if (j != k) {
ntot++;
lin[2]=j;
lin[4]=k;
iok=decchk(lin,7,&ch);
lin[7]=ch;
iok=decchk(lin,8,&chh);
lin[2]=k;
lin[4]=j;
jok=decchk(lin,8,&chh);
if (!iok || jok) nbad++;
}
}
}
}
printf("%s %14s %3d\n","Total tries:"," ",ntot);
printf("%s %16s %3d\n","Bad tries:"," ",nbad);
printf("%s %11s %4.2f\n","Fraction good:"," ",((float)(ntot-nbad))/ntot);
for (;;) {
printf("enter string terminated by x:\n");
if (gets(lin) == NULL) break;
for (j=0;j<MAXLINE;j++)
if (lin[j] == 'x') break;
n=j;
if (!n) break;
iok=decchk(lin,n,&ch);
lin[n]=ch;
jok=decchk(lin,n+1,&chh);
lin[n+1]=0;
printf("%s checks as %c\n",lin,jok ? 'T' : 'F');
}
printf("Normal completion\n");
return 0;
}
#undef NRANSI