언어/c언어

BJ 2908

파아랑새 2017. 1. 16. 23:31

# include <stdio.h>

# include <stdlib.h>

# include <string.h>

# define T 1

# define F 0

# define LEN 400

# define Decimal 10

# define Mod(a) ((int)(a%10))

# define Div(a) ((int)(a/10))

typedef struct LargeNumber {

int num1;

int num2;

char bufferOne[LEN];

char bufferTwo[LEN];

char RevOne[LEN];

char RevTwo[LEN];

}LargeNumber;


// __ .1

void __init__(LargeNumber** LarSma) {

(*LarSma) = (LargeNumber*)malloc(sizeof(LargeNumber));

if ((*LarSma) == NULL) { exit(1); }

else { // (*LarSma) != NULL

memset((*LarSma), 0, sizeof(LargeNumber));

}

} // end of __init__ function


// __ 2

void __numberSetting__(LargeNumber** LarSma) {

int i = 0; // index

int quo = 0;

int rem = 0;

scanf("%d %d", &(*LarSma)->num1, &(*LarSma)->num2);

while (T) {

while (T) {

//234

rem = Mod((*LarSma)->num1); // [4][3][2]

(** LarSma).RevOne[i++] = (char)rem + '0';

if ((*LarSma)->num1 < 10) { break; }

else { //(*LarSma)->num1 >= 10

(*LarSma)->num1 = Div((*LarSma)->num1); // [23][2]

}

}

i = 0;

while (T) {

//234

rem = Mod((*LarSma)->num2); // [4][3][2]

(** LarSma).RevTwo[i++] = (char)rem + '0';

if ((*LarSma)->num2 < 10) { break; }

else { //(*LarSma)->num1 >= 10

(*LarSma)->num2 = Div((*LarSma)->num2); // [23][2]

}

}

break;

}

/* 123

# define Mod(a) ((int)(a%10))

# define Div(a, b) ((int)(b/a))

int bufferOneLength = 0;

int bufferTwoLength = 0;

itoa((*LarSma)->num1, (*LarSma)->bufferOne, Decimal);

itoa((*LarSma)->num2, (*LarSma)->bufferTwo, Decimal);

bufferOneLength = strlen((*LarSma)->bufferOne)-1;

bufferTwoLength = strlen((*LarSma)->bufferTwo)-1;

for (i = bufferOneLength; i >= 0; i--) {

(*LarSma)->RevOne[j++] =  (*LarSma)->bufferOne[i];

} j = 0;

for (i = bufferTwoLength; i >= 0; i--) {

(*LarSma)->RevTwo[j++] = (*LarSma)->bufferTwo[i];

*/

} // end of __numberSetting__ function


void __LargeAndSmall__(LargeNumber** LarSma) {

int i; // index

// case __1

if (strlen((** LarSma).RevOne) > strlen((** LarSma).RevTwo)){

printf("%s\n", (** LarSma).RevOne);

}

// case __2

else if (strlen((** LarSma).RevOne) < strlen((** LarSma).RevTwo)) {

printf("%s\n", (** LarSma).RevTwo);

}

// case __3

else {

for (i = 0; i < strlen((** LarSma).RevOne); i++) {

if ((** LarSma).RevOne[i] > (** LarSma).RevTwo[i]) {

printf("%s\n", (** LarSma).RevOne);

break;

}

else if ((** LarSma).RevOne[i] < (** LarSma).RevTwo[i]) {

printf("%s\n", (** LarSma).RevTwo);

break;

}

else {

continue;

}

}

}

} // end of __LargeAndSmall__ function


int main(void) {

LargeNumber* start_2908 = NULL;

__init__(&start_2908);

__numberSetting__(&start_2908);

__LargeAndSmall__(&start_2908);

return 0;

} // end of main function