/* Larry Jordan's sample c program functions */

#include <stdio.h>				/* std I/O library on c disk */

#define EOF -1					/* logical ^Z EOF ends copy */
#define YES 1
#define NO 0
#define YES 1
#define NO 0
#define NL '\n'
#define EOS '\0'
#define MAXLINE 1024
#define FF '\012'                               /* ASCII Form feed */
#define DIGMAX 10

int inword;
int nl;
int nw;
int nc;
int ndigits[DIGMAX];
int c;




/* ---------------------------------------------------------------------- */


main()				      /*				    */
{

	int len;			/* current line length */
	int max;			/* max length so far */
	char line[MAXLINE];
	char save[MAXLINE];
	char lineupper[MAXLINE];
	char linelower[MAXLINE];

	max = 0;

	printf("\n");
	printf("\n");
	printf("Jordan's function test ...\n");
	printf("\n");
	printf("Input text for test.\n");
	printf("\n");


	while ((len = getline(line, MAXLINE)) > 0)   /* getline defined below */
		printf("\nLine = %s\n", line);



}



/* ---------------------------------------------------------------------- */


redirect()				       /* redirect keybd to CRT */
{
	int c;

	printf("\n");
	printf("\n");
	printf("Jordan's redirect function...\n");
	printf("\n");
	printf("Input numbers, space characters, etc...\n");
	printf("?");


	while ((c = getchar()) != EOF)	       /* get char until EOF found */
		putchar(c);		       /* send char to scrn: */
}


/* ---------------------------------------------------------------------- */



wordcnt()			      /* count lines, words, chars in input */
{

	double c, nc, nl, nw;			      /* counters are float */
	int inword;				      /* logical is interger */

	inword = NO;
	nl = nw = nc = 0.0;			      /* initialize variables */

	printf("\n");
	printf("\n");
	printf("Jordan's word count function ...\n");
	printf("\n");
	printf("Input text for character, word and line count search.\n");
	printf("\n");


	while ((c = getchar()) != EOF) {
		nc = nc + 1;

		if (c == '\n')                         /* if c=LF then inc nl */
		     nl = nl + 1;

		if (c == ' ' || c == '\n' || c == '\t')  /* if char is space, */
		     inword = NO;			/* LF or TAB then it */
							/* cannot be a word */

		else if (inword == NO) {		/* otherwise it is a */
		     inword = YES;			/* word */
		     nw = nw + 1;
		}
	}
	printf("\n");
	printf("\n");
	printf("Number of characters = ");
	printf("%.0f\n",nc);                       /* prt float # with no dec */
	printf("Number of words = ");
	printf("%.0f\n",nw);
	printf("Number of lines = ");
	printf("%.0f\n",nl);

	printf("\n");
}


/* ---------------------------------------------------------------------- */


maxline()			/* gets maximum length line in file */
{
	int len;			/* current line length */
	int max;			/* max length so far */
	char line[MAXLINE];
	char save[MAXLINE];

	max = 0;

	printf("\n");
	printf("\n");
	printf("Jordan's get maximum length line function ...\n");
	printf("\n");
	printf("Input text for maximum line length search.\n");
	printf("\n");


	while ((len = getline(line, MAXLINE)) > 0)   /* getline defined below */
		if (len > max){
			max = len;
			copy(line, save);	       /* function from below */
		}
	if (max > 0)
	    printf("%s", save);
}


/* ---------------------------------------------------------------------- */


getline(s, lim) 		/* getline into s, return length of s */
char s[];
int lim;
{
	int c,i;

	for (i = 0; i < lim-1 && (c = getchar()) != EOF && c != '\n'; ++i)
		s[i] = c;
	if (c == '\n'){
		s[i] = c;
		++i;
	}
	s[i] = '\0';
	return(i);
}



/* ---------------------------------------------------------------------- */


copy(s1, s2)			/* copy s1 to s2; assume s2 big enough */
char s1[], s2[];
{
	int i;

	i = 0;
	while (s2[i] = s1[i] != EOS)
		++i;
}




/* ---------------------------------------------------------------------- */


power(x, n)			    /* raise x to n-th power; n > 0 */
int x, n;
{
	int i, p;

	p = 1;
	for (i=1; i<=n; ++i)
	    p=p*x;
	return(p);
}



/* ---------------------------------------------------------------------- */


digicnt()				 /* count digits, spaces, others */
{
	int c, i, nspaces, nother;	 /* integers */
	int ndigits[DIGMAX];		 /* integer array */

	nspaces = nother = 0;
	for (i= 0; i < 10; ++i)
		ndigits[i] = 0; 	 /* initialize arry to 0 */


	printf("\n");
	printf("\n");
	printf("Jordan's number counter...\n");
	printf("\n");
	printf("Input numbers, space characters, etc...\n");
	printf("?");

	while ((c = getchar()) != EOF)
		if (c >= '0' && c <= '9')
		      ++ndigits[c];
		else if (c == ' ' || c == '\n' || c == '\t')
			++nspaces;
		else
			++nother;



	printf("\n");
	printf("\n");
	printf("Jordan's number counter results...\n");
	printf("\n");
	printf("Number of digits = ");
	for (i=0; i < 10; ++i)
	       printf(" %d", ndigits[i]);
	printf("\nNumber of spaces = %d,  Other = %d\n",
	       nspaces, nother);
	printf("\n");
}



/* ---------------------------------------------------------------------- */

strlen(s)				/*  return length of string s */
char s[];
{
	int i;

	i = 0;
	while (s[i] != '\0')
		++i;
	return(i);
}


/* ---------------------------------------------------------------------- */

atoi(s) 			/* convert numeric string into numeric equiv */
char s[];
{

	int i;
	int n;		      /* need double precision for no > 32K */

	n = 0;
	for (i = 0; s[i] >= '0' && s[i] <= '9'; ++i)
	      n = 10 * n + s[i] - '0';

	return(n);
}


/* ---------------------------------------------------------------------- */




isdigit(c)			/* test character to see if it is a digit */
int c;
{
	int isdigit;

	return(isdigit = c >= '0' && c<= '9');  /* isdigit true = 1 */
						/* isdigit false = 0 */

}


/* ---------------------------------------------------------------------- */
F  ‹v: