/* compiler used: */
/* simple application to generate basic arithmetic operations */
/* March/3rd/2006, John Bofarull */
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<time.h>
#define RAND__MAX 4294967295
#define OPS 40 /* how many operations per file */
/* poke about these 8 constants to harden or soften tests */
#define SDL 4 /* sums level */
#define RDL 4 /* differences level */
#define PDL_1 27 /* products level */
#define PDL_2 153
#define PDL 37768
#define DDL_1 398 /* division thresholds */
#define DDL_2 12
void insert_txt(char *, char *);
void main()
{FILE *fp;
char file_name[12];
char s_txt[]=".txt";
int j=0;
unsigned long int k,q,m,n;
unsigned long int g;
char c;
/* which operation */
for(;;)
{randomize();
printf("\nAdd/Sub/Prod/Div (A/S/P/D) (Q=quit program): ");
c=getche();
if (c=='a') c='A';
if (c=='s') c='S';
if (c=='p') c='P';
if (c=='d') c='D';
if ((c=='q')||(c=='Q')) c=0x1b;
j=0;
switch(c)
{
{case'A':
c='\0';
printf("\nWhich file to write sums in (8 chars max/.txt by default)?");
scanf("%s",file_name);
insert_txt(file_name,s_txt); /* no need to type .txt at the end of file name */
if((fp=fopen(file_name,"w"))==NULL) printf("\nFile not found");
while(j<OPS)
{fprintf(fp,"\n%3d .- ",j+1);
k=rand();q=rand();m=rand();n=rand();
/* avoiding operations with 0 or 1 */
while((k==0)||(k==1)||(k==10)||(k==100)||(k==1000)) k=rand();
while((q==k)||(q==0)||(q==1)||(q==10)||(q==100)||(q==1000)) q=rand();
while((m==k)||(m==q)||(m==0)||(m==1)||(m==10)||(m==100)||(m==1000)) m=rand();
while((n==k)||(n==q)||(n==m)||(n==0)||(n==1)||(n==10)||(n==100)||(n==1000)) n=rand();
k=k/SDL;q=q/SDL;m=m/SDL;n=n/SDL; /* corrections */
g=k+q+m+n; /* operation */
fprintf(fp,"%5u + ",k);
fprintf(fp,"%5u + ",q);
fprintf(fp,"%5u + ",m);
fprintf(fp,"%5u",n);
fprintf(fp," = %15u ",g); /* 15 blank chars to the right */
j++; }
fclose(fp);
break;} /* case Addition over */
{case 'S':
c='\0';
printf("\nWhich file to write substractions in (8 chars max/.txt by default)?");
scanf("%s",file_name);
insert_txt(file_name,s_txt); /* no need to write .txt */
if((fp=fopen(file_name,"w"))==NULL) printf("\nFile not found");
while(j<OPS)
{fprintf(fp,"\n%3d .- ",j+1);
k=rand();q=rand();
while((k==0)||(k==1)||(k==10)||(k==100)||(k==1000)) k=rand();
while((q==k)||(q==0)||(q==1)||(q==10)||(q==100)||(q==1000)) q=rand();
k=k/SDL;q=q/RDL;
if(k>q)
{g=k-q;
fprintf(fp,"%5u - ",k);
fprintf(fp,"%5u",q);
fprintf(fp," = %6u",g); } /* 15 blank chars to the right */
else
{g=q-k;
fprintf(fp,"%5u - ",q);
fprintf(fp,"%5u",k);
fprintf(fp," = %6u",g); }
j++;}
fclose(fp);
break; } /* case Substraction over */
{case 'P':
c='\0';
printf("\nWhich file to write divisions in (8 chars max/.txt by default)?");
scanf("%s",file_name);
insert_txt(file_name,s_txt); /* no need to write .txt */
if((fp=fopen(file_name,"w"))==NULL) printf("\nFile not found");
while(j<OPS)
{fprintf(fp,"\n%3d .- ",j+1);
k=rand();q=rand();
k=k/PDL_1;q=q/PDL_2;
while((k==0)||(k==1)||(k==10)||(k==100)||(k==1000)) k=rand();
while((q==k)||(q==0)||(q==1)||(q==10)||(q==100)||(q==1000)) q=rand();
g=k*q;
fprintf(fp,"%5u * ",k);
fprintf(fp,"%5u",q);
fprintf(fp," = %15u",g);
j++;}
fclose(fp);
break;} /* case Product over */
{case 'D':
c='\0';
printf("\nWhich file to write divisions in (8 chars max/.txt by default)?");
scanf("%s",file_name);
insert_txt(file_name,s_txt); /* no need to write .txt */
if((fp=fopen(file_name,"w"))==NULL) printf("\nFile not found");
while(j<OPS)
{fprintf(fp,"\n%3d .- ",j+1);
k=rand();q=rand();
k=k/PDL_1;q=q/PDL_2;
while((k==0)||(k==1)||(k==10)||(k==100)||(k==1000)) k=rand();
while((q==k)||(q==0)||(q==1)||(q==10)||(q==100)||(q==1000)) q=rand();
while((k*q)>=65333)
{k=rand();q=rand();
k=k/PDL_1;q=q/PDL_2;
while((k==0)||(k==1)||(k==10)||(k==100)||(k==1000)) k=rand();
while((q==k)||(q==0)||(q==1)||(q==10)||(q==100)||(q==1000)) q=rand();}
g=k*q;
fprintf(fp,"%5u / ",g);
fprintf(fp,"%5u",q);
fprintf(fp," = %5u",k);
j++;}
fclose(fp);
break;} /* case Division over */
case 0x1b:
{puts("\nEnd of program"); exit(0);}
default: puts("\nOption not Valid");
} /* switch terminated */
} /* for terminated */
} /* main terminated */
/****************** Functions Definitions *********************/
void insert_txt(char *s1, char *s2) /* adding .txt extension to result file names */
{while (*s1) s1++;
while (*s1++=*s2++);}
bofarull 0 Newbie Poster
Narue 5,707 Bad Cop Team Colleague
bofarull 0 Newbie Poster
Narue 5,707 Bad Cop Team Colleague
Salem 5,199 Posting Sage
AhmedHan 0 Junior Poster in Training
winbatch 7 Posting Pro in Training
bofarull 0 Newbie Poster
Be a part of the DaniWeb community
We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.