목차
■ 이해점검 풀이
■ 프로그램 문제 풀이
■ 프로그램 문제 풀이
본문내용
2;
print(a, b)
return 0;
}
5. 프로그램 연습을 수정하여 특정 파일에서 여러 문자열을 동적으로 입력 받아 정렬하는 프로그램을 작성하시오.
#include \"sort.h\"
char *str[] = {\"오름차순(ASCEND order)\",\"내림차순(DESCEND order)\"};
int main()
{
char tst[80];
char *pl[100];
int i=0,N=0;
order odr;
FILE *fp;
char fn[] =\"str.txt\";
if((fp = fopen(fn,\"r\")) == NULL)
{
printf(\"파일이 열리지 않습니다.\\n\");
exit(1);
}
while(!feof(fp)){
fscanf(fp,\"%s\",tst);
++N;
}
rewind(fp);
while(!feof(fp)){
fscanf(fp,\"%s\",tst);
pl[i]= ( char * ) malloc ( sizeof(char) * (strlen(tst)+1) );
strcpy(pl[i++],tst);
}
odr = ASCEND;
printf(\"원래 문자열 배열 : \\n\");
prtarray(pl,N);
sort(pl,N,odr);
printf(\"%s 정렬 후 >>\\n\", str[(odr == ASCEND)? 0:1]);
prtarray(pl,N);
odr = DESCEND;
sort(pl,N,odr);
printf(\"%s 정렬 후 >>\\n\", str[(odr == ASCEND)? 0:1]);
prtarray(pl,N);
return 0;
}
/* file : sort.c */
#include \"sort.h\"
void prtarray(char *a[],int n)
{
int i;
for(i = 0;i
printf(\"%s \",a[i]);
printf(\"\\n\\n\");
}
void sort(char *s[], int n, order odr)
{
int i,j;
for(i=0;i
for(j=i+1;j
if(odr == ASCEND)
{
if(strcmp(s[i],s[j])>0)
swap(&s[i],&s[j]);
}
else
{
if(strcmp(s[i],s[j])<0)
swap(&s[i],&s[j]);
}
}
void swap(char **x, char **y)
{
char *temp;
temp = *x;
*x = *y;
*y = temp;
}
/* file : sort.h */
#include
#include
#include
enum order {ASCEND, DESCEND};
typedef enum order order;
void sort(char *s[], int n, order odr);
void prtarray(char *a[], int n);
void swap(char **, char **);
6. 위 프로그램에서 명령어 인자로 옵션 a와 d를 두어 각각 오름차순과 내림차순으로 정렬되도록 프로그램을 작성하시오.
#include \"sort.h\"
char *str[] = {\"오름차순(ASCEND order)\",\"내림차순(DESCEND order)\"};
int main(int argc,int argv[])
{
char tst[80];
char *pl[100];
int i=0,N=0;
order odr;
FILE *fp;
char fn[] =\"str.txt\";
if(argc != 2 )
{
printf(\"사용법: sort (a or d)\\n\");
exit(1);
}
if( strcmp(argv[1],\"a\") == 0)
odr = ASCEND;
if( strcmp(argv[1],\"d\") == 0)
odr = DESCEND;
if((fp = fopen(fn,\"r\")) == NULL)
{
printf(\"파일이 열리지 않습니다.\\n\");
exit(1);
}
while(!feof(fp)){
fscanf(fp,\"%s\",tst);
++N;
}
rewind(fp);
while(!feof(fp)){
fscanf(fp,\"%s\",tst);
pl[i]= ( char * ) malloc ( sizeof(char) * (strlen(tst)+1));
strcpy(pl[i++],tst);
}
printf(\"원래 문자열 배열 : \\n\");
prtarray(pl,N);
switch(odr+1){
case 1:
sort(pl,N,odr);
printf(\"%s 정렬 후 >>\\n\",str[(odr == ASCEND)? 0:1]);
prtarray(pl,N);
break;
case 2:
sort(pl,N,odr);
printf(\"%s 정렬 후 >>\\n\",str[(odr == ASCEND)? 0:1]);
prtarray(pl,N);
break;
}
return 0;
}
/* file : sort.c */
#include \"sort.h\"
void prtarray(char *a[],int n)
{
int i;
for(i = 0;i
printf(\"%s \",a[i]);
printf(\"\\n\\n\");
}
void sort(char *s[],int n,order odr)
{
int i,j;
for(i=0;i
for(j=i+1;j
if(odr == ASCEND)
{
if(strcmp(s[i],s[j])>0)
swap(&s[i],&s[j]);
}
else
{
if(strcmp(s[i],s[j])<0)
swap(&s[i],&s[j]);
}
}
void swap(char **x,char **y)
{
char *temp;
temp = *x;
*x = *y;
*y = temp;
}
/* file : sort.h */
#include
#include
#include
enum order {ASCEND,DESCEND};
typedef enum order order;
void sort(char *s[],int n,order odr);
void prtarray(char *a[],int n);
void swap(char **,char **);
print(a, b)
return 0;
}
5. 프로그램 연습을 수정하여 특정 파일에서 여러 문자열을 동적으로 입력 받아 정렬하는 프로그램을 작성하시오.
#include \"sort.h\"
char *str[] = {\"오름차순(ASCEND order)\",\"내림차순(DESCEND order)\"};
int main()
{
char tst[80];
char *pl[100];
int i=0,N=0;
order odr;
FILE *fp;
char fn[] =\"str.txt\";
if((fp = fopen(fn,\"r\")) == NULL)
{
printf(\"파일이 열리지 않습니다.\\n\");
exit(1);
}
while(!feof(fp)){
fscanf(fp,\"%s\",tst);
++N;
}
rewind(fp);
while(!feof(fp)){
fscanf(fp,\"%s\",tst);
pl[i]= ( char * ) malloc ( sizeof(char) * (strlen(tst)+1) );
strcpy(pl[i++],tst);
}
odr = ASCEND;
printf(\"원래 문자열 배열 : \\n\");
prtarray(pl,N);
sort(pl,N,odr);
printf(\"%s 정렬 후 >>\\n\", str[(odr == ASCEND)? 0:1]);
prtarray(pl,N);
odr = DESCEND;
sort(pl,N,odr);
printf(\"%s 정렬 후 >>\\n\", str[(odr == ASCEND)? 0:1]);
prtarray(pl,N);
return 0;
}
/* file : sort.c */
#include \"sort.h\"
void prtarray(char *a[],int n)
{
int i;
for(i = 0;i
printf(\"\\n\\n\");
}
void sort(char *s[], int n, order odr)
{
int i,j;
for(i=0;i
{
if(strcmp(s[i],s[j])>0)
swap(&s[i],&s[j]);
}
else
{
if(strcmp(s[i],s[j])<0)
swap(&s[i],&s[j]);
}
}
void swap(char **x, char **y)
{
char *temp;
temp = *x;
*x = *y;
*y = temp;
}
/* file : sort.h */
#include
#include
#include
enum order {ASCEND, DESCEND};
typedef enum order order;
void sort(char *s[], int n, order odr);
void prtarray(char *a[], int n);
void swap(char **, char **);
6. 위 프로그램에서 명령어 인자로 옵션 a와 d를 두어 각각 오름차순과 내림차순으로 정렬되도록 프로그램을 작성하시오.
#include \"sort.h\"
char *str[] = {\"오름차순(ASCEND order)\",\"내림차순(DESCEND order)\"};
int main(int argc,int argv[])
{
char tst[80];
char *pl[100];
int i=0,N=0;
order odr;
FILE *fp;
char fn[] =\"str.txt\";
if(argc != 2 )
{
printf(\"사용법: sort (a or d)\\n\");
exit(1);
}
if( strcmp(argv[1],\"a\") == 0)
odr = ASCEND;
if( strcmp(argv[1],\"d\") == 0)
odr = DESCEND;
if((fp = fopen(fn,\"r\")) == NULL)
{
printf(\"파일이 열리지 않습니다.\\n\");
exit(1);
}
while(!feof(fp)){
fscanf(fp,\"%s\",tst);
++N;
}
rewind(fp);
while(!feof(fp)){
fscanf(fp,\"%s\",tst);
pl[i]= ( char * ) malloc ( sizeof(char) * (strlen(tst)+1));
strcpy(pl[i++],tst);
}
printf(\"원래 문자열 배열 : \\n\");
prtarray(pl,N);
switch(odr+1){
case 1:
sort(pl,N,odr);
printf(\"%s 정렬 후 >>\\n\",str[(odr == ASCEND)? 0:1]);
prtarray(pl,N);
break;
case 2:
sort(pl,N,odr);
printf(\"%s 정렬 후 >>\\n\",str[(odr == ASCEND)? 0:1]);
prtarray(pl,N);
break;
}
return 0;
}
/* file : sort.c */
#include \"sort.h\"
void prtarray(char *a[],int n)
{
int i;
for(i = 0;i
printf(\"\\n\\n\");
}
void sort(char *s[],int n,order odr)
{
int i,j;
for(i=0;i
{
if(strcmp(s[i],s[j])>0)
swap(&s[i],&s[j]);
}
else
{
if(strcmp(s[i],s[j])<0)
swap(&s[i],&s[j]);
}
}
void swap(char **x,char **y)
{
char *temp;
temp = *x;
*x = *y;
*y = temp;
}
/* file : sort.h */
#include
#include
#include
enum order {ASCEND,DESCEND};
typedef enum order order;
void sort(char *s[],int n,order odr);
void prtarray(char *a[],int n);
void swap(char **,char **);
소개글