Hero Image
큰수 작은수로 정렬후 덧셈

입력 받은 수를 큰수와 작은수로 정렬후 덧셈 모든 내용은 Git hub 에도 있습니다. 문제 임의의 수를 입력 받아 큰수와 작은수로 정렬한후 덧셈을 함. 필요 자료구조 및 알고리즘 ASCII Code를 통한 계신(키보드 입력및 파일 입출력) Bubble Sorting Binary Addition Algotirthm 설계 KeyBoard Input or File Input Processing Dynamic Allocation for Big&Small Integer Bubble sort for Big&small integer Binary Addition Algorithm 구현 Input Any Number : 원하는 아무 숫자를 Space로 구분지어 입력합니다. Result : Space로 입력된 숫자들을 오름차순 내림차순으로 정렬되어 Binary Addition이 됩니다. #include <stdio.h> #include <string.h> #include <stdlib.h> #include <time.h> #include <sys/time.h> #define MAX_STR_SIZE 100 void bubble(char a[], int n); void rebubble(char b[], int n); void swap(char *, char *); void showstream(char a[]); void sum(char big[],char small[]); void reverse(char a[]); void ncarry(int n,int end); void whatbubblein(char a[],char b[]); void input_string(); char result[MAX_STR_SIZE]; char str_before[MAX_STR_SIZE]; int main() { char str_after[MAX_STR_SIZE]; printf("Input Any Number : "); input_string(); strcpy(str_after,str_before); bubble(str_before,(int)strlen(str_before)); rebubble(str_after,(int)strlen(str_before)); sum(str_before,str_after); reverse(result); printf("result : "); showstream(result); return 0; } void input_string(){ char str_after[MAX_STR_SIZE]; char str_read[MAX_STR_SIZE]; int i,j,k=0; fgets(str_read , MAX_STR_SIZE,stdin); for (int i = 0; i < strlen(str_read); ++i) { if(str_read[i]==10){ str_before[k] ='\0'; } if(str_read[i]!=32 && str_read[i]!=10){ //32 space bar str_before[k]=str_read[i]; k++; } } } void bubble(char a[], int n) { /* n is the size of a[] */ int i, j,k; for (i = 0; i < n - 1; ++i){ for (j = n - 1; j > i; --j){ if (a[j-1] > a[j]){ swap(&a[j-1], &a[j]); } } } } void rebubble(char b[], int n){ int i,j,k=0; for (i = 0; i < n - 1; ++i){ for (j = n - 1; j > i; --j){ if (b[j-1] < b[j] ){ swap(&b[j-1], &b[j]); } } } } void swap(char *p,char *q){ static char cnt=1; char temp=*p; *p=*q; *q=temp; cnt++; } void showstream(char a[]){ puts(a); } void sum(char big[],char small[]){ char temp[MAX_STR_SIZE]; int i,j,k; static int count=0; int leng,carry=0; leng = (int)(strlen(big)); for (int i = 0; i < leng; ++i) { temp[i]=(big[leng-1-i]+small[leng-1-i])-48; if(carry==1){ result[i]=1+temp[i]; carry = 0; if(result[i]>=58){ result[i]=result[i]-10; result[i+1]=result[i+1]+49; ncarry(count,i); carry=1; } } else{ if(temp[i]>=58){ result[i]=temp[i]-10; carry=1; ncarry(count,i); } else{ result[i]+= temp[i]; } } count++; } } void reverse(char a[]) { char temp[MAX_STR_SIZE]; int x; x=strlen(a); for(int n=x-1;n>=0;n--) { temp[x-n-1]=a[n]; } temp[x]='\0'; strcpy(result,temp); } void ncarry(int n,int end){ if(n==end){ result[n+1]='1'; } else{ result[n+1]=result[n+1]+1; } } void whatbubblein(char a[],char b[]) { int i,leng; leng = (int)(strlen(a)); printf("bubble :\t"); for (int i = 0; i <leng; ++i) { printf("[%d]:%d(%c) ",i, a[i],a[i]); } printf("\nrebubble :\t"); for(i= 0; i <leng;i++) { printf("[%d]:%d(%c) ",i, b[i],b[i]); } printf("\n"); } Refference 숫자 알고리즘

Hero Image
다양한 패턴 출력

Variety of star 다양한 삼각형 출력 regular triangle * *** ***** ******* ********* right align of regular triangle * ** *** **** ***** right align of regular triangle * ** *** **** ***** Inverted triangle ********* ******* ***** *** * Left align of inverted triangle ***** **** *** ** * Right align of inverted triangle ***** **** *** ** * int input; int space=0; int state_num=0; scanf("%d",&input); printf("\nregular triangle\n"); space=input; for(int i=0;i<input;i++){ for(int k=0;k<space-1;k++) printf(" "); for(int j=0;j<2*i+1;j++){ printf("*"); } space--; printf("\n"); } space=0; printf("\nright align of regular triangle\n"); space=input-1; for (int i = 0; i < input; ++i) { for (int k = 0; k < space; ++k) { printf(" "); } for (int j = 0; j < input-space; ++j) { printf("*"); } printf("\n"); space--; } printf("\nright align of regular triangle\n"); space=input-1; for (int i = 0; i < input; ++i) { for (int j = 0; j < input-space; ++j) { printf("*"); } printf("\n"); space--; } printf("\nInverted triangle\n"); for (int i = 0; i < input; ++i) { for (int j = 0; j < i; ++j) { printf(" "); } for (int k = (2*i)+1; k <=(input*2-1) ; ++k) { printf("*"); } puts(""); } space=0; //inverted triangle left printf("\nLeft align of inverted triangle\n"); for (int i = 0; i < input; ++i) { for (int k = 0; k < input-space; ++k) { printf("*"); } space++; printf("\n"); } space=0; printf("\nRight align of inverted triangle\n\n"); //inverted triangle right for (int i = 0; i < input; ++i) { for (int j =0 ; j < space; ++j) { printf(" "); } for (int k = 0; k < input-space; ++k) { printf("*"); } space++; printf("\n"); } Applied multiplication 구구단 이쁘게 출력