본문 바로가기

ETC Programmings

MakeUp Quiz(풀이)

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

#include <stdio.h>

#include <stdlib.h>

#define True 1

#define False 0

 

void swapStr(char *base, char *target);

void shift(char *pstr, int n);

void order_char(char *pstr, int n);

double sum_primed_position(double arr[], int n);

void bubble(double arr[], int n);
void swap(double*, double*);

int occurrence(char *pstr, char c);

void zigzag_scan(double *pa, double *pza);

int isPrimed(int number);

 

void swapStr(char *base, char *target){

             char temp = *base;

             *base = *target;

             *target = temp;

}

 

// 재귀호출해볼것.

void shift(char *pstr, int n){

             int i;

             for(i = 1 ; i < n ; i++)

                           swapStr(pstr, pstr++);

}

 

void order_char(char *pstr, int n){

             int i, j;

             for(i = 0 ; i < n ; i++) {

                           for (j = 0 ; j < n ; j++)

                                        if (pstr[i] < pstr[j])

                                                     swapStr(&pstr[i],&pstr[j]);

             }

}

double sum_primed_position(double arr[], int n){

             double sum = 0;

             int num = 2;

            

             while(num <= n){

                           if(isPrimed(num))

                                        sum += arr[num];

                           num++;

             }

             return sum;

}

 

void bubble(double arr[], int n){

             int i, j;

             for(i = 0 ; i < n ; i++) {

                           for (j = 0 ; j < n ; j++) {

                                        if (arr[i] < arr[j])

                                                     swap(&arr[i],&arr[j]);

                           }

             }

}

 

void swap(double* base, double* target){

             double temp = *base;

             *base = *target;

             *target = temp;

};

int occurrence(char *pstr, char c){

             int count = 0;

             printf("%c\n", c);

             while(*pstr != '\0'){

                           if(*pstr - c == 0)

                                        count++;

                           pstr++;

             }

             return count;

}

int isPrimed(int number){

             int compareNumber = 2;

             while(compareNumber < number){

                           if(number%compareNumber ==0)

                                        return False;

                           compareNumber++;

             }

             return True;

}

 

void zigzag_scan(double *pa, double *pza){

             int i,j;

             int count = 0;

             for (i = 0; i < 4 ; i++){

                           for(j = 0; j < 2 ;j++){

                                        pza[count] = pa[j];

                                        count++;

                           }

                           pa++;

             }

             for (i = 0; i < 4 ; i++){

                           for(j =2; j < 4 ;j++){

                                        pza[count] = pa[j];

                                        count++;

                           }

                           pa++;

             }

}

 

int main(int argc, char *argv[])

{

             char c_array[128] = "SEOUL";

             int num, i, j;

             double *a;

             double test[] = { 3.2, 3.53, 2.39, 1.00, 78.33, 104.3 };

             double coeff[4][4], zz_coeff[16];

             double (*p_coeff)[4] = coeff;

             // 1번테스트

             shift(&c_array[0],5);

             printf("%s\n", c_array);

 

             // 2번테스트

             order_char(&c_array[0], 5);

             printf("%s\n", c_array);

 

             // 3번테스트

             if(argc < 2)

                           num = 10; // 입력되지않는경우원활한테스트를위해서10으로기본값을지정

             else {

                           num= atoi(argv[1]);

                           a = (double *)calloc(num, sizeof(double));

             }

            

             // 4번테스트

            

             printf("4: %f\n", sum_primed_position(test, 6));

            

             // 5번테스트

             bubble(test, 6);

             for (i = 0; i < 6 ; i ++){

                           printf("[%.2f]  ", test[i]);

             }

 

             // 6번테스트

             printf("%d\n", occurrence(c_array,'E'));

 

             // 7번테스트

             for(i = 0; i < 4; i++){

                           for (j = 0; j < 4; j++){

                                        srand(i+j);

                                        coeff[i][j] = rand();

                           }

             }

 

             for(i = 0; i < 4; i++){

                           for (j = 0; j < 4; j++){

                                        printf("[%.2f]  ", coeff[i][j]);

                           }

                           printf("\n");

             }

 

             for(i = 0 ; i < 16 ; i++){

                           zz_coeff[i] = 0 ;

             }

             zigzag_scan(p_coeff, zz_coeff);

 

             for(i = 0 ; i < 16 ; i++){

                           printf("%.2f ", zz_coeff[i]);

             }

}

 

답으로 이걸 제출을 했습니다.. 7번이 잘 안돌아가죠.. 졸려서 머리도 안돌아 가므로 그냥 틀릴래요;;