Monday, July 28, 2014

c assignment 4

↓↑ Program to count Number of 1's in binary number. 
#include<stdio.h>
void bin(int);
static int c=0;
int main()
{
    int n;
    printf("enter decimal number :");
    scanf("%d",&n);
    printf("\nbinary number is:");
    bin(n);
    printf("\nno of one=%d\n",c);

return 0;
}
void bin(int n)
{
    int r;
    if(n!=0)
    {
     r=n%2;
 if(r)c++;
        n=n/2;
 bin(n);
 printf("%d",r);
    }
    else 
        printf(" ");
}
↓↑ Program to Find evaluation order of function parameters.
#include<stdio.h>
void test(int,int,int);
int main()
{
    int i=6; 
    test(i++,i++,i++);   // Although behaviour undefined but most compilers follow right-to-left evaluation order.
    printf("\nAfter post:\n");
    test(++i,++i,++i);   
return 0;
}

void test(int a,int b,int c)
{
    printf("value:a=%d\tb=%d\tc=%d\n",a,b,c);
    printf("address:a=%u\tb=%u\tc=%u\n",&a,&b,&c);
}



↓↑ Program to calculate factorial of number correctly till 1...20.
#include<stdio.h>
long long int fact(int n);
int main()
{
    int n;
    long long int factN;
    printf("enter number:");
    scanf("%d",&n);
    factN=fact(n);
    printf("value of factorial %d is:%lld\n",n,factN);
return 0;
}

long long int fact(int n)
{
    if(n==0)
        return 1;
    else
        return n*fact(n-1);
}
↓↑ Program to calculate factorial of very large number(with math lib).
#include <stdio.h>
#include <math.h>
#include <string.h>

void multd(char * s, size_t len, unsigned n)
{
    unsigned values[len];
    size_t i;
    memset(values, 0, sizeof(unsigned) * len);
    for(i = len; i--; )
    {
        unsigned x = values[i] + (s[i] - '0') * n;
        s[i] = '0' + x % 10;
        if(i) values[i - 1] += x / 10;
    }
}

void factd(char * s, size_t len, unsigned n)
{
    memset(s, '0', len - 1);
    s[len - 1] = '1';
    for(; n > 1; --n) multd(s, len, n);
}

int main(void)
{
    unsigned num = 5;
    size_t len = ceill(log10l(tgammal(num + 1)));
    char dstr[len + 1];
    dstr[len] = 0;
    factd(dstr, len, num);
    puts(dstr);
}
↓↑ Program to calculate factorial of very large number(with gmp lib).
// There is no practical limit to the precision except the ones implied 
// by the available memory in the machine GMP runs on.
#include <stdio.h>
#include <gmp.h>

void fact(mpz_t r,int n){
    unsigned int i;
    mpz_t temp;
    mpz_init(temp);
    mpz_set_ui(r,1);
    for(i=1;i<=n;i++){
        mpz_set_ui(temp,i);
        mpz_mul(r,r,temp);
    }
    mpz_clear(temp);
}
int main(void) {
    mpz_t r;
    mpz_init(r);
//    fact(r,188315);
    fact(r,100); 
    gmp_printf("%Zd\n",r);
    mpz_clear(r);
return(0);
}
//https://gmplib.org/
//sudo apt-get install  libgmp3-dev or sudo yum install  libgmp3-dev
//gcc factlargernumber.c -lgmp
↓↑ Program to print fibonacci series upto given length.
#include<stdio.h>
void fib(int,int,int);
int main()
{
    int f0=0,f1=1,len;
    printf("Enter fibonaci series length: ");
    scanf("%d",&len);  
    fib(f0,f1,len);
    printf("\n");
return 0;
}
void fib(int current,int old,int l)
{
    static int i=0;
    int new;
    if(i<l)
    {
        new=current+old;
        printf("%d ",new);
        old=current;
        current=new;
        i++;
        fib(current,old,l);
    }
    else
        return;  
}
↓↑ Program to demonstrate function pointer.
#include<stdio.h>
int test(int,int,int (*fp)(int,int));
int (*fp)(int,int);
int sum(int,int);

int main()
{
    int a=3,b=4,sm;
    fp=sum;
    sm=test(a,b,sum);
    printf("sum=%d\n",sm);
return 0;
}

int sum(int a,int b)
{
    return (a+b);
}

int test(int a,int b,int (*fp)(int a,int b))
{
    return fp(a,b);
}
↓↑ Menu based Program using function pointer.
#include<stdio.h>
int test(int,int,int (*fp)(int,int));
int sum(int,int);
int prod(int,int);
int div(int,int);
int sub(int,int);

int main()
{
    int a=4,b=2,choice,result,(*fp[4])(int,int);
    fp[0]=sum;
    fp[1]=sub;
    fp[2]=prod;
    fp[3]=div;
    printf("enter your choice.\n0.addition\n1.substraction\n2.multiplication\n3.division\n");
    scanf("%d",&choice);
    result=test(a,b,fp[choice]);
    printf("%d\n",result);
return 0;
}

int sum(int a,int b)
{
    printf("\nsum=");
    return (a+b);
}

int prod(int a,int b)
{
    printf("\nproduct=");
    return(a*b);
}

int sub(int a,int b)
{
    printf("\nsubstraction=");
    return (a-b);
}

int div(int a,int b)
{
    printf("\ndivision=");
    return(a/b);
}
int test(int a,int b,int (*fp)(int a,int b))
{
    return fp(a,b);
}
↓↑ Program to calculate GCD of two number using recursion.
#include<stdio.h>
int gcd(int,int);
int main()
{
 int x,y,gcd1;
 printf("enter two no.");
 scanf("%d%d",&x,&y);
 gcd1=gcd(x,y);
 printf("gcd of two no is:%d\n",gcd1);
return 0;
}
int gcd(int x,int y)
{
 if(x==y)
  return x;
 else if(x>y)
  return gcd(x-y,y);
 else
  return gcd(x,y-x); 
}       
       
↓↑ Make file demonstration
//copy all parts in different files and keep in same directory
// then simply type ( make ) on terminal

makefile ->

all.out:mainp.o sump.o squarep.o
 gcc main16.o sum16.o square16.o -o all.out
mainp.o:mainp.c
 gcc main16.c -c
sump.o:sump.c
 gcc sum16.c -c
squarep.o:squarep.c 
 gcc square16.c -c

mainp.c ->

#include<stdio.h>
#include<math.h>
int sum(int,int);
int square(int);
int main()
{
int a=3,b=8,sm,sqr;
sm=sum(a,b);
printf("sum=%d\n",sm);
sqr=square(a);
printf("sqr=%d\n",sqr);
return 0;
}

sump.c -> 

int sum(int x,int y)
{
return x+y;
}

squarep.c ->

int square(int x)
{
return x*x;
}
↓↑ Program to pass 1 D array as function argument.
#include<stdio.h>
int sumall(int*,int);
int min(int*,int);
int max(int*,int);
int main()
{
    int a[7]={10,12,19,14,9,18,11},s,mn,mx;
    s=sumall(a,7);
    mn=min(a,7);
    mx=max(a,7);
    printf("\nsum of 1-D array element is=%d\n",s);
    printf("\nmin of 1-D array element is=%d\n",mn);
    printf("\nmax of 1-D array element is=%d\n",mx);
return 0;
}
int sumall(int*p,int n)
{
    int i,sm=0;
    for(i=0;i<n;i++)
    {
        sm+=*(p+i);
        printf("%d ",*(p+i));
    }
return sm;
}
int min(int *p,int n)
{
    int a=12323,i;
    for(i=0;i<n;i++)
    {
        if(*(p+i)<a)
        {
            a=*(p+i);
        }
    }
return a;
}

int max(int *p,int n)
{
    int a=-32452,i;
    for(i=0;i<n;i++)
    {
        if(*(p+i)>a)
        {
            a=*(p+i);
        }
    }   
return a;
}
↓↑ Program to pass 2 D array as function argument.
#include<stdio.h>
int summatrix(int nr,int nc,int (*p)[7]);
int main()
{
    int a[2][7]={10,12,13,23,34,32,33,26,13,19,14,9,18,11},s;
    s=sumall(2,7,a);
    printf("\nsum of 2-D array element is=%d\n",s);
return 0;
}
int sumall(int nr,int nc,int (*p)[7])
{
    int i,j,sm=0;
    for(i=0;i<nr;i++)
    {
         printf("\n");
        for(j=0;j<nc;j++)
        {
            sm+=*(*(p+i)+j);
//            printf("%d ",*(*(p+i)+j));
        }
    }
return sm;
}

↓↑ Program to return array from function.
#include<stdio.h>
int* fun(int[],int);
int main()
{
int c[5]={4,7,8,9,6},i,*p;
p=fun(c,5);
for(i=0;i<5;i++)
printf("%d\t",*(p+i));
printf("\n");
return 0;
}

int* fun(int x[],int n)
{
 int i;
 for(i=0;i<n;i++)
 {
  x[i]=x[i]+1;
 // printf("%d\t",x[i]);
 }
 printf("\n");
return x;

}


↓↑ Program to calculate sum of N natural number usung recursion.
#include<stdio.h>
int sum(int);
int main()
{
int n,n1;
printf("enter no.");
scanf("%d",&n);
n1=sum(n);
printf("sum of %d numbers is:%d\n1",n,n1);
return 0;
}


int sum(int n)
{
if(n==0)
return 0;
else
return n+sum(n-1);
}
↓↑ Program to demonstrate typedef for function pointer.
#include<stdio.h>
typedef int (*pftype)(); 
int sum(int,int);
int main()
{
    int a=4,b=7;
    pftype pf1;
    pf1=sum; 
    pf1(a,b);
return 0;
}

int sum(int x,int y)
{
    printf("sum=%d\n",x+y);
}

Tuesday, July 22, 2014

ASCII Codes Table

ASCII
Hex

Symbol

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
NUL
SOH
STX
ETX
EOT
ENQ
ACK
BEL
BS
TAB
LF
VT
FF
CR
SO
SI

ASCII

Hex

Symbol

16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
10
11
12
13
14
15
16
17
18
19
1A
1B
1C
1D
1E
1F
DLE
DC1
DC2
DC3
DC4
NAK
SYN
ETB
CAN
EM
SUB
ESC
FS
GS
RS
US

ASCII

Hex

Symbol

32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
20
21
22
23
24
25
26
27
28
29
2A
2B
2C
2D
2E
2F
(space)
!
"
#
$
%
&
'
(
)
*
+
,
-
.
/

ASCII

Hex

Symbol

48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
30
31
32
33
34
35
36
37
38
39
3A
3B
3C
3D
3E
3F
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?

ASCII

Hex

Symbol

64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
40
41
42
43
44
45
46
47
48
49
4A
4B
4C
4D
4E
4F
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O

ASCII

Hex

Symbol

80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
50
51
52
53
54
55
56
57
58
59
5A
5B
5C
5D
5E
5F
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_

ASCII

Hex

Symbol

96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
60
61
62
63
64
65
66
67
68
69
6A
6B
6C
6D
6E
6F
`
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o

ASCII

Hex

Symbol

112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
70
71
72
73
74
75
76
77
78
79
7A
7B
7C
7D
7E
7F
p
q
r
s
t
u
v
w
x
y
z
{
|
}
~