Step by step

My diary

...

Search

breakinformation. Powered by Blogger.

2018년 10월 15일 월요일

magic square


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <stdio.h>
 
#define MAX_SIZE 4
 
int main (void) {
    
    int array[MAX_SIZE][MAX_SIZE] = { 0, };
    
    // diagonal line
    int minimum = 0, maximum = 0;
    for (minimum = 0, maximum = MAX_SIZE - 1; minimum < MAX_SIZE; minimum++, maximum--) {
        
        array[minimum][minimum] = -1;
        array[minimum][maximum] = -1;
    }
    
    // insert a number
    int increase = 1, decrease = MAX_SIZE * MAX_SIZE;
    int row = 0, column = 0;
    for (column = 0; column < MAX_SIZE; column++) {
        for (row = 0; row < MAX_SIZE; row++) {
            
            if (array[column][row] == -1) array[column][row] = increase;
            else array[column][row] = decrease;
            
            increase++;
            decrease--;
        }
    }
    
    // print
    for (column = 0; column < MAX_SIZE; column++) {
        for (row = 0; row < MAX_SIZE; row++) {
            
            printf ("%d\t", array[column][row]);
        }
        printf ("\n");
    }
    
    return 0;
}
cs

2018년 10월 1일 월요일

bubble sort


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <stdio.h>
 
void bubble_sort (int* array, int count);
void swapping (int* current, int* next);
 
int main (void) {
    
    int numberArray[10= { 84253710169 };
    int loop = 0;
    
    bubble_sort (numberArray, sizeof (numberArray) / sizeof (int));
    
    for (loop = 0; loop < sizeof (numberArray) / sizeof (int); loop++) {
        
        printf("%d ", numberArray[loop]);
    }
    printf("\n");
    
    return 0;
}
 
void bubble_sort (int* array, int count) {
    
    int allElement = 0, partialElement = 0;
    
    for (allElement = 0; allElement < count; allElement++) {
        for (partialElement = 0; partialElement < count - 1; partialElement++) {
            if (array[partialElement] > array[partialElement + 1]) {
                
                swapping (&array[partialElement], &array[partialElement + 1]);
            }
        }
        partialElement++;
    }
    
    return;
}
void swapping (int* current, int* next) {
    
    int temporary = 0;
    
    temporary = *current;
    *current = *next;
    *next = temporary;
    
    return;
}
cs

2018년 9월 30일 일요일

return multiple function pointer parameter


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <stdio.h>
 
int add (int number1, int number2);
int (*get_add (int get_addNumber1, int get_addNumber2)) (int addNumber1, int addNumber2);
int (*(* get_getAdd (int get_getAddNumber1, int get_getAddNumber2)) (int get_addNumber1, int get_addNumber2)) (int addNumber1, int addNumber2);
 
int main (void) {
    
    int (*(*functionPointerMultiple) (int get_addNumber1, int get_addNumber2)) (int addNumber1, int addNumber2);
    
    functionPointerMultiple = get_getAdd (1020);
    printf("%d\n", functionPointerMultiple(30,40)(50,60));
    
    // ================================================
//    printf("%d\n", get_getAdd(10,20)(30,40)(50,60));
    
    return 0;
}
 
int add (int number1, int number2) {
    
    return number1 + number2;
}
int (*get_add (int get_addNumber1, int get_addNumber2)) (int addNumber1, int addNumber2) {
    
    printf("%d\n", get_addNumber1 + get_addNumber2);
    return add;
}
int (*(*get_getAdd (int get_getAddNumber1, int get_getAddNumber2)) (int get_addNumber1, int get_addNumber2)) (int addNumber1, int addNumber2) {
    
    printf("%d\n", get_getAddNumber1 + get_getAddNumber2);
    
    return *get_add;
}
cs

return function pointer


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
 
int add (int , int);
int (*getAdd(void)) (intint);
 
int main (void) {
    
    int (*functionPointer) (intint);
    
    functionPointer = getAdd();
    
    printf("%d\n", functionPointer(1020));
    
    return 0;
}
 
int add (int number1, int number2) {
    
    return number1 + number2;
}
int (*getAdd(void)) (int number1, int number2) {
    
    return add;
}
cs

function pointer array


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <stdio.h>
 
int add (intint);
int subtraction (intint);
int multiple (intint);
int division (intint);
 
int main (void) {
    
    int funcNumber = 0;
    int number1 = 0, number2 = 0;
    
    int (*functionPointer[4]) (intint);
    
    functionPointer[0= add;
    functionPointer[1= subtraction;
    functionPointer[2= multiple;
    functionPointer[3= division;
    
    printf("%d\n", functionPointer[2](1020));
    
    return 0;
}
 
int add (int number1, int number2) {
    return number1 + number2;
}
int subtraction (int number1, int number2) {
    return number1 - number2;
}
int multiple (int number1, int number2) {
    return number1 * number2;
}
int division (int number1, int number2) {
    return number1 / number2;
}
cs

2018년 9월 27일 목요일

return void pointer


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
void* allocMemory (void);
 
int main (void) {
    
    char* s1 = allocMemory();
    
    strcpy (s1, "Hello, World!!");
    
    printf("%s\n", s1);
    free (s1);
    
    int* numPtr1 = allocMemory();
    numPtr1[0= 10;
    numPtr1[1= 20;
    
    printf ("%d %d\n", numPtr1[0], numPtr1[1]);
    free (numPtr1);
    //free (pointer);
    
    return 0;
}
 
void* allocMemory (void) {
    
    void* pointer = malloc (100);
    
    return pointer;
}
cs

add struct void pointer


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
struct Data {
    
    int num1;
    int num2;
};
 
int main(void) {
    
    void *pointer = calloc (3sizeof (struct Data));
    struct Data data[3];
    
    ((struct Data *) pointer)->num1 = 10;
    ((struct Data *) pointer)->num2 = 20;
    
    ((struct Data *) pointer + 1)->num1 = 30;
    ((struct Data *) pointer + 1)->num2 = 40;
    
    ((struct Data *) pointer + 2)->num1 = 50;
    ((struct Data *) pointer + 2)->num2 = 60;
    
    memcpy (data, pointer, sizeof (struct Data) * 3);
    
    printf("%d %d\n", data[1].num1, data[1].num2);
    printf("%d %d\n", ((struct Data*) pointer + 2)->num1, ((struct Data*) pointer + 2)->num2);
    
    free (pointer);
    
    return 0;
}
cs