[C 프로그래밍] C로 배우는 프로그래밍 기초 18장 이해점검 및 프로그램문제 풀이
본 자료는 4페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
해당 자료는 4페이지 까지만 미리보기를 제공합니다.
4페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

[C 프로그래밍] C로 배우는 프로그래밍 기초 18장 이해점검 및 프로그램문제 풀이에 대한 보고서 자료입니다.

목차

■ 이해점검 풀이
■ 프로그램 문제 풀이

본문내용

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 **);
  • 가격2,000
  • 페이지수14페이지
  • 등록일2008.08.03
  • 저작시기2008.7
  • 파일형식한글(hwp)
  • 자료번호#475267
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니