/* numfilt 0.1 - Copyright (c) 1997 Michael Binder */ /* */ /* License */ /* ------- */ /* see the file README distributed with this file. */ /* translation to dutch by Eric Auer 2002 */ /* note on the license: this was and is freeware, but the */ /* license is not GPL - sorry for the rough info, but please */ /* see the original numfilt for more exact license information! */ #define RECLEN 16384 #include #include #include #include #define TRUE 1 #define FALSE 0 int CheckDigits(); char *DigitToWord(); char *TenToNintynine(); static char inpbuf[RECLEN+2]; static int i, offset; static int rawflg, nlflg; int main(int argc, char *argv[]) { rawflg=FALSE; nlflg=FALSE; for (i=2; i<=argc; i++) { if (strchr(argv[i-1],'r') != 0) rawflg=TRUE; if (strchr(argv[i-1],'n') != 0) nlflg=TRUE; } for(;;) { if (!fgets(inpbuf,RECLEN,stdin)) { if (nlflg == FALSE) fprintf(stdout,"\n"); break; } if (nlflg == FALSE) sprintf(inpbuf+strlen(inpbuf)-1," "); for (i=0; i12) { for (j=0; j 1) { for (j=0; j1) && (nums[j] == '1')) sprintf(word,"een"); switch(k) { case 12 : if (nums[j] != '0') fprintf(stdout," %shondert ",word); break; case 11 : { fprintf(stdout," %s miljaard ",TenToNintynine(nums[j],nums[j+1])); j++; k--; } break; case 10 : { if (strlen(nums) == 10) { if (strcmp(word,"ein") == 0) fprintf(stdout," een miljaard " /* ,word */); else fprintf(stdout," %s miljoen ",word); } } break; case 9 : if (nums[j] != '0') fprintf(stdout," %shondert ",word); break; case 8 : { fprintf(stdout," %s miljoen ",TenToNintynine(nums[j],nums[j+1])); j++; k--; } break; case 7 : { if (strlen(nums) == 7) { if (strcmp(word,"ein") == 0) fprintf(stdout," een miljoen " /* ,word */); else fprintf(stdout," %s miljoen ",word); } } break; case 6 : if (nums[j] != '0') fprintf(stdout," %shondert ",word); break; case 5 : { fprintf(stdout," %s duizend ",TenToNintynine(nums[j],nums[j+1])); j++; k--; } break; case 4 : { if (strlen(nums) == 4) fprintf(stdout," %sduizend ",word); } break; case 3 : if (nums[j] != '0') fprintf(stdout," %shondert ",word); break; case 2 : { fprintf(stdout," %s ",TenToNintynine(nums[j],nums[j+1])); j=j+2; } break; } k--; } } if ((dg[i] == '.') && ((dg[i+1] == ' ') || (dg[i+1] == '\0') || (dg[i+1] == '\n'))) { if (strcmp(nums,"1") == 0) fprintf(stdout," eerste "); else if (strcmp(nums,"3") == 0) fprintf(stdout," derde "); else if (strcmp(nums,"7") == 0) fprintf(stdout," zevende "); else if (strlen(nums) == 1) fprintf(stdout,"%sde ",DigitToWord(nums[0])); else fprintf(stdout,"tens "); } else { if (strlen(nums) == 1) fprintf(stdout," %s ",DigitToWord(nums[0])); } if ((dg[i] == '.') && (isdigit(dg[i+1]) != 0)) { fprintf(stdout," punt "); } if ((dg[i] == ',') && (isdigit(dg[i+1]) != 0)) { fprintf(stdout," koma "); } return((i-1)); } char *DigitToWord(int c) { static char word[9]; switch(c) { case '0' : sprintf(word,"null"); break; case '1' : sprintf(word,"een"); break; case '2' : sprintf(word,"twee"); break; case '3' : sprintf(word,"drie"); break; case '4' : sprintf(word,"vier"); break; case '5' : sprintf(word,"vijf"); break; case '6' : sprintf(word,"zes"); break; case '7' : sprintf(word,"zeven"); break; case '8' : sprintf(word,"acht"); break; case '9' : sprintf(word,"negen"); break; } return(word); } char *TenToNintynine(int c1, int c2) { static char german_number[128]; if ((c1 == '1') && (c2 == '1')) { sprintf(german_number,"elf"); return(german_number); } if ((c1 == '1') && (c2 == '2')) { sprintf(german_number,"twaalf"); return(german_number); } if ((c1 == '1') && (c2 == '7')) { sprintf(german_number,"zeventien"); return(german_number); } german_number[0]=0; if (c2 != '0') { if ((c2 == '1') && (c1 != '0')) sprintf(german_number,"een"); else sprintf(german_number,"%s",DigitToWord(c2)); } if ((c1 > '1') && (c2 != '0')) sprintf(german_number+strlen(german_number),"en"); switch(c1) { case '1' : sprintf(german_number+strlen(german_number),"tien"); break; case '2' : sprintf(german_number+strlen(german_number),"twintig"); break; case '3' : sprintf(german_number+strlen(german_number),"dertig"); break; case '4' : sprintf(german_number+strlen(german_number),"viertig"); break; case '5' : sprintf(german_number+strlen(german_number),"vijftig"); break; case '6' : sprintf(german_number+strlen(german_number),"zestig"); break; case '7' : sprintf(german_number+strlen(german_number),"zeventig"); break; case '8' : sprintf(german_number+strlen(german_number),"tachtig"); break; case '9' : sprintf(german_number+strlen(german_number),"negentig"); break; } return(german_number); }