반응형
혼자 공부하는 C언어 책 P289 예제 변형 솔루션 입니다.
scanf로 되어 있는것을 fgets(input,100,stdin)의 형태로 입력 받아서 처리해보겠습니다.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void spacecheck(char *input, int *point);
void swap(double *pa,double *pb);
void line_up(double *maxp,double *midp,double *minp);
int main(void)
{
char input[70];
int point=0;
char maxc[20],midc[20],minc[20];
double max,mid,min;
int temp;
printf("실수값 3개 입력 ");
fgets(input,70,stdin);
while(strlen(input)-1!=point)
{
spacecheck(input,&point);
strncpy(maxc,input,point);
temp=point;//현재 위치 저장
spacecheck(input,&point);
strncpy(midc,input+temp+1,point-temp-1);
temp=point;//현재 위치 저장
spacecheck(input,&point);
strncpy(minc,input+temp+1,point-temp-1);
}
printf("descending ordersorting 전 maxc: %s, midc: %s, minc : %s\n",maxc,midc,minc);
max=atof(maxc);
mid=atof(midc);
min=atof(minc);
printf("descending ordersorting 전 max: %.1lf, mid: %.1lf, min : %.1lf\n",max,mid,min);
line_up(&max,&mid,&min);
printf("descending ordersorting 전 max: %.1lf, mid: %.1lf, min : %.1lf\n",max,mid,min);
return 0;
}
void spacecheck(char *input, int *point)// point는 현재 몇번 배열까지 봤는지
{
int i;
printf("for문 드가자~ %d\n",*point);
for(i=*point+1;i<strlen(input);i++)//point 부터 탐색시작
{
if(*(input+i)==' '||*(input+i)=='\n')//sp나 \n이 나왔다면
{
*point=i; //현재 위치
printf("탈출 전 point값은 %d\n",*point);
break;//탈출
}
}
}
void swap(double *pa,double *pb)
{
double temp;
temp = *pa;
*pa=*pb;
*pb=temp;
}
void line_up(double *maxp,double *midp,double *minp)
{
double arr[3];
*arr=*maxp;
*(arr+1)=*midp;
*(arr+2)=*minp;
int i,j;
for(i=0; i < 3; i++){
for(j=0; j<2-i; j++){
if(arr[j] < arr[j+1]){ // swap
swap(arr+j,arr+j+1);
}
}
}
*maxp=*arr;
*midp=*(arr+1);
*minp=*(arr+2);
}
반응형
'C Programming' 카테고리의 다른 글
[C]텍스트 파일 2개 열고 단어 비교 후 등록 안된 단어 다른 텍스트 파일에 저장 (1) | 2023.10.14 |
---|---|
[C]구조체 사용하기 (2) | 2023.10.14 |
[C]대소문자 변환 프로그램 (0) | 2023.10.14 |
[C]소수 출력 프로그램 (0) | 2023.10.14 |
[C]이차원 배열 별표 출력 프로그램 (0) | 2023.10.14 |