Skip to content

Instantly share code, notes, and snippets.

@id4ehsan
Created March 31, 2019 02:19
Show Gist options
  • Save id4ehsan/7475e53cd0ba5446c855aba93a6e3969 to your computer and use it in GitHub Desktop.
Save id4ehsan/7475e53cd0ba5446c855aba93a6e3969 to your computer and use it in GitHub Desktop.
some math function in c which i wrote 10 years ago
#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