Created
March 31, 2019 02:19
-
-
Save id4ehsan/7475e53cd0ba5446c855aba93a6e3969 to your computer and use it in GitHub Desktop.
some math function in c which i wrote 10 years ago
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdio.h> | |
#include <conio.h> | |
#include <stdlib.h> | |
#include <math.h> | |
#define TRUE 1 | |
#define FALSE 0 | |
#define MAX_NUMBER 1000 | |
#define POW_OF_e 1.00 | |
void prime(void){ | |
unsigned int i,a; | |
unsigned char chk_first; | |
_clrscr(); | |
for(i=2;i<MAX_NUMBER;i++){ | |
chk_first= TRUE; | |
for(a=2;a<=i/2;a++){ | |
if((i%a)==0){ | |
chk_first=FALSE; | |
} | |
} | |
if(chk_first){ | |
printf("%u is a Prime Number.\r\n",i); | |
} | |
} | |
} | |
void perfect(void){ | |
unsigned int i,a,s; | |
_clrscr(); | |
for( i = 1; i < MAX_NUMBER ; i++){ | |
s = 0; | |
for(a = 2 ; a <= i / 2 ; a++){ //=========================> my pitfall | |
s += ( (i % a) == 0 ) ? a : 0; | |
} | |
if(i == ++s){ | |
printf("%u is a Perfect Number.\r\n",i); | |
} | |
} | |
} | |
void sum(void){ | |
unsigned int i,s=0; | |
_clrscr(); | |
for( i = 1; i <= MAX_NUMBER ; i++){ | |
s += i; | |
} | |
printf("S=1+2+3+...+%u=%u\r\n",MAX_NUMBER,s); | |
} | |
void minmaxave(void){ | |
unsigned int i,n,max=0,min=0,l,s=0; | |
_clrscr(); | |
printf("Enter Number of Inputs:\0"); | |
scanf("%u",&n); | |
for(i=1;i<=n;i++){ | |
printf("Enter %u's Number:\0",i); | |
scanf("%u",&l); | |
s+=l; | |
if(i==1){ | |
min=max=l; | |
} | |
else{ | |
if(l<min){ | |
min=l; | |
} | |
if(l>max){ | |
max=l; | |
} | |
} | |
} | |
printf("\nMinimum = %u.\r\n Maximum = %u. \r\n\0",min,max); | |
printf("Average = %f\r\n\0",((double)s)/n); | |
} | |
void sinsumpro(void){ | |
unsigned int i,n; | |
double x,s=0.00,p=1.00; | |
_clrscr(); | |
printf("Enter N:\0"); | |
scanf("%u",&n); | |
printf("N=%u\r\n\0",n); | |
printf("Enter X:\0"); | |
scanf("%lf",&x); //======================>my pitfall | |
printf("X=%f\r\n\0",x); | |
for(i=1;i<=n;i++){ | |
s+=sin(i*x); | |
p*=sin(i*x); | |
} | |
printf("\r\nS=Sin(x)+Sin(2*x)+...+Sin(%u*x) = %f\r\n\0",n,s); | |
printf("P=Sin(x)*Sin(2*x)*...*Sin(%u*x) = %f\r\n\0",n,p); | |
} | |
void doreverse(void){ | |
unsigned int n; | |
unsigned long reverse(unsigned int); | |
_clrscr(); | |
printf("Enter N (0...65535):\0"); | |
scanf("%u",&n); | |
printf("Reverse of %u is %u\r\n\0",n,reverse(n)); | |
} | |
unsigned long reverse(unsigned int n){ | |
unsigned long num_no = (unsigned int)(log10(n)+1); | |
unsigned long result=0; | |
int i; | |
for(i=num_no-1;i>=0;i--){ | |
result+=(unsigned long)(pow(10,num_no-1-i)*(n/ (unsigned int) pow(10,i))); | |
n-=(n/ (unsigned int)pow(10,i))*(unsigned int)(unsigned int)pow(10,i); | |
} | |
return result; | |
} | |
void doc(void){ | |
long c(unsigned int, unsigned int); | |
unsigned long fact(int); | |
unsigned int a,b; | |
long cr; | |
_clrscr(); | |
printf("Getting A and B of C(A,B)\r\n------------------------------\r\n\0"); | |
printf("Enter A:\0"); | |
scanf("%u",&a); | |
printf("Enter B:\0"); | |
scanf("%u",&b); | |
if((cr =c(a,b))==-1){ | |
printf("\r\nError !!!\a\r\n A Must be smaller than B or equal to B.\r\n\0"); | |
}else{ | |
printf("C(%d,%d) = %u\r\n\0",a,b,cr); | |
} | |
} | |
unsigned long fact(int d){ | |
unsigned int i; | |
unsigned long r=1; | |
if(d <2){ | |
return 1; | |
}else{ | |
for(i=1;i<=d;i++){ | |
r*=i; | |
} | |
return r; | |
} | |
} | |
long c(unsigned int n, unsigned int m){ | |
if(n>m){ | |
return(-1); | |
}else{ | |
return(fact(m))/(fact(n)*fact(m-n)); | |
} | |
} | |
void sumonlympown(void){ | |
unsigned int m,n,i,j; | |
unsigned int s1=0,s2=0; | |
_clrscr(); | |
printf("Enter M:\0"); | |
scanf("%u",&m); | |
printf("Enter N:\0"); | |
scanf("%u",&n); | |
//for(j=1;j<=m;j++){ | |
// s1+=m; | |
//} | |
s1 = m; | |
//for(i=1;i<=n-2;i++){ | |
for(i=1;i<n;i++){ | |
for(j=1;j<=m;j++){ | |
s2+=s1; | |
} | |
s1=s2; | |
s2=0; | |
} | |
printf("M^N = %u \r\n\0",s1); | |
} | |
void printascii(void){ | |
unsigned char x=1,y=1; | |
unsigned int i; | |
_clrscr(); | |
for(i=0;i<=255;i++){ | |
_gotoxy(x,y); | |
printf("%u",i); | |
_putch((unsigned char)i); | |
y++; | |
if(y>26){ | |
y=1; | |
x+=7; | |
} | |
} | |
} | |
void gcdlcm(void){ | |
unsigned int a,b,aa,bb,t; | |
_clrscr(); | |
printf("Enter A:\0"); | |
scanf("%u",&a); | |
printf("Enter B:\0"); | |
scanf("%u",&b); | |
if(a<b){ | |
aa=b; | |
bb=a; | |
}else{ | |
aa=a; | |
bb=b; | |
} | |
while((aa%bb)!=0){ | |
t=bb; //was wrong in book | |
bb=aa%bb; | |
aa=t; | |
} | |
printf("Greatest Common Divisor is: %u\r\n\0",bb); | |
printf("Least Common Multiple is: %u",(a*b)/bb); | |
} | |
void fibonachi(void){ | |
unsigned long a1=1,a2=1,b; | |
unsigned int m,c; | |
_clrscr(); | |
do{ | |
printf("Enter M(to show M sequence of Fibonachi Series)(Max. 65535):\0"); | |
scanf("%u",&m); | |
}while(m<2); | |
printf("%u-%u\0",a1,a2); | |
for(c=3;c<=m;c++){ | |
b=a1; | |
a1=a2; | |
a2=b+a2; | |
printf("-%u\0",a2); | |
} | |
} | |
void isperfect(void){ | |
unsigned int n,i,s=0; | |
_clrscr(); | |
do{ | |
printf("Enter N (not smaller than 2): \0"); | |
scanf("%u",&n); | |
}while(n<2); | |
for(i=1;i<=n/2;i++){ | |
s+=(n%i==0)?i:0; | |
} | |
if(n==s){ | |
printf("%u is a perfect number.\r\n\0",n); | |
}else{ | |
printf("%u is not a perfect number.\r\n\0",n); | |
} | |
} | |
void pascaltriangle(void){ | |
unsigned int a,n; | |
void draw_apb_n(unsigned int); | |
_clrscr(); | |
printf("Enter N (smaller than 13): \0"); | |
scanf("%u",&n); | |
_clrscr(); | |
for(a=0;a<=n;a++){ | |
draw_apb_n(a); | |
printf("\r\n\0"); | |
} | |
} | |
void draw_apb_n(unsigned int n){ | |
unsigned int k; | |
for(k=0;k<=n;k++){ | |
_gotoxy(k*4+1,_wherey()); | |
printf("%lu",(unsigned long)c(k,n)); | |
} | |
} | |
void drawafunciton(void){ | |
double a=-40.00; | |
unsigned char b; | |
_clrscr(); | |
_textcolor(9); | |
_gotoxy(1,12); | |
for(b=1;b<=80;b++){//pitfall: may infinite loop: should not use double float point in loop | |
_cprintf("-\0"); | |
} | |
for(b=1;b<=25;b++){ | |
_gotoxy(40,b); | |
_cprintf("|\0"); | |
} | |
_gotoxy(1,1); | |
_textcolor(12); | |
do{ | |
_gotoxy(40+(int)a,(int)(12+10*sin(a/5))); | |
_cprintf("%c\0",(unsigned char)219); //fixed instead alt+219 to type extended ascii character 219 | |
a+=0.1; | |
}while(a<=40); | |
} | |
void calce(void){ | |
unsigned long fact(unsigned int); | |
double s,l; | |
double x=POW_OF_e; | |
unsigned int n=1; | |
l=1; | |
s=1; | |
while(l>(10e-6)){ | |
l=pow(x,n) / fact(n++); | |
s+=l; | |
} | |
printf("\r\ne = %f\r\n\0",s); | |
} | |
void infinitefunc(void){ | |
double s,n; | |
_clrscr(); | |
printf("Enter N:\0"); | |
scanf("%lf",&n); | |
s=sqrt(n); | |
do{ | |
s=sqrt(s+n); | |
}while(fabs(s-sqrt(s+n))>=10e-10); | |
printf("Result = %f\r\n\0",s); | |
} | |
void modtriangle(void){ | |
unsigned int i,j; | |
_clrscr(); | |
for(i=1;i<=15;i++){ | |
_gotoxy(40-i,i+5); | |
for(j=i;j<=2*i-1;j++){ | |
printf("%d \0",j % 10); | |
} | |
for(j=2*i-2;j>=i;j--){ | |
printf("%d \0",j % 10); | |
} | |
} | |
} | |
void coins(void){ | |
unsigned long x2,x5,x10,x20,x50,s; | |
int counter=0; | |
_clrscr(); | |
for(x2=0;x2<=50;x2++) | |
for(x5=0;x5<=20;x5++) | |
for(x10=0;x10<=10;x10++) | |
for(x20=0;x20<=10;x20++) | |
for(x50=0;x50<=2;x50++){ | |
s=x2*2+x5*5+x10*10+x20*20+x50*50; | |
if(s==100){ | |
printf("2 Unit = %lu, 5 Unit = %lu, 10 Unit = %lu, 20 Unit = %lu, 50 Unit = %lu \r\n\0",x2,x5,x10,x20,x50); | |
counter++; | |
} | |
else{ | |
s=0; | |
} | |
} | |
printf("Number of items: %d",counter); | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment