드디어!!

whs9400의 이미지

안녕하세요 얼마전까지 맘을 못잡고 다른 언어 추천해주세요 뭐 이런식의 글을 남긴 사람입니당.
근데 생각해보니 그 시간에 C언어 공부하면 많이 할것 같아서 하기 싫어도 한번 꾹 참고 해봤습니다.
결과는 아주 좋더군요.
함수를 공부하고 나서 '아 이제 내가 프로그램을 한번 제작해봐야겠다.' 라는 생각이 들어서
계산기를 선택했고,
함수를 이용해 디자인이나 기능을 분할해서 프로그램 제작을 했습니당.
계산기 아직 미완성 소스(덧셈 기능만 구현했습니당).

/**/
#include
#include
void StartView();
void SecondView();
void FuncSelectView();
void CalcSelectView();
void MainMessageView();
void CalcRetryView();
void ProgramExit();
int AddFunc();
int MinusFunc();
int MultipleFunc();
int DivideFunc();

int main(void)
{
StartView();
SecondView();
FuncSelectView();
return 0;
}
void StartView(void)
{
int i;
char star = '*';
printf("%50s \n", "Welcome To My Program!!");
printf("%70s","Loading ");
for (i = 0; i < 3; i++)
{
putchar(star);
Sleep(1000);
}
system("cls");
}
void SecondView(void)
{
int i;
int j;
char star = '*';
char escape = '\n';
for (i = 0; i < 5; i++)
{
j = 0;
for (j = 0; j < i; j++)
putchar(star);
putchar(escape);
}
for (i = 4; i >= 1; i--)
{
j = 0;
for (j = 0; j < i; j++)
putchar(star);
putchar(escape);
}
printf("\n\n");
}
void FuncSelectView(void)
{
int input = 0;

printf("1. 계산기\n\n");
printf("선택해주세요: ");
scanf_s("%d", &input);
switch (input)
{
case 1:
CalcSelectView();
break;
}
}
void CalcSelectView(void)
{
int input;
int total = 0;

printf("\n\n");
printf("1. 덧셈\n");
printf("2. 뺄셈\n");
printf("3. 곱셈\n");
printf("4. 나눗셈\n");
printf("\n\n");
printf("선택: ");
scanf_s("%d", &input);
system("cls");
switch (input)
{
case 1:
total = AddFunc();
break;
case 2:
total = MinusFunc();
break;
case 3:
total = MultipleFunc();
break;
case 4:
total = DivideFunc();
break;
}
printf("결과: %d \n", total);
MainMessageView();
}
void MainMessageView()
{
char select;
while (getchar() != '\n');
printf("메인 메뉴로 가시겠습니까?(Y/N) : ");
scanf_s("%c", &select);
switch (select)
{
case 'Y':
case 'y':
system("cls");
FuncSelectView();
case 'N':
case 'n':
system("cls");
CalcRetryView();
}

}
void CalcRetryView()
{
char select;

while (getchar() != '\n');
printf("계산기 다시시작?(Y/N) : ");
scanf_s("%c", &select);
switch (select)
{
case 'Y':
case 'y':
system("cls");
CalcSelectView();
case 'N':
case 'n':
system("cls");
ProgramExit();
}

}
void ProgramExit()
{
int i;
printf("종료");
Sleep(1000);
system("cls");
for (i = 3; i > 0; i--)
{
printf("%d", i);
Sleep(500);
system("cls");
Sleep(500);
}
exit(1);
}
int AddFunc(void)
{
int input1, input2;
int result = 0;
printf("두 정수를 입력해주세요: ");
scanf_s("%d %d", &input1, &input2);
result = input1 + input2;
return result;
}
int MinusFunc(void)
{
int input1, input2;
int result = 0;
printf("두 정수를 입력해주세요: ");
scanf_s("%d %d", &input1, &input2);
result = input1 + input2;
return result;
}
int MultipleFunc(void)
{
int input1, input2;
int result = 0;
printf("두 정수를 입력해주세요: ");
scanf_s("%d %d", &input1, &input2);
}

함수를 공부하면서 C언어 할 맛이 난다는것을 알게 되었습니당!
이때까지 저에게 여러가지 답변을 해주신 분들께 진심으로 감사드립니다.
앞으로 열심히 공부하겠습니당!! 넙죽!!

그리고 1차원 배열을 공부하니 갑자기 드는 생각(아직 2차원 공부 안했습니당.)
'음 예전에 게임 소스 보면서 분명 모양을 찍는게 있었는데 그때 2차원 배열에 0과 1의 값을 넣은것 같구, 뭔가 1에 해당하는 부분이 모양으로 출력되었던것 같은뎅~?'

그래서 갑자기 원리가 떠올랐습니다 int형 2차 배열을 선언과 동시에 초기화 할때 대충 0과 1로 모양을 만들고 for문을 중첩시켜 각각 y와 x 좌표를 찍어낸 결과
모양이 출력되더군요!! 후!! 암튼 엄청난 짜릿함을 느꼈습니당!!

모양 출력 소스

/**/

#include

int look[5][5]={
{1, 1, 1, 1, 1},
{1, 0, 0, 0, 1},
{1, 0, 0, 0, 1},
{1, 0, 0, 0, 1},
{1, 1, 1, 1, 1}
};

int main(void)
{
int x, y;

for (y = 0; y < 5; y++)
{

x = 0;
for (x = 0; x < 5; x++)
{
if (look[y][x] == 0)
printf(" ");
else if (look[y][x] == 1)
printf("*");


}
printf("\n");
}
printf("\n");
getchar();

return 0;
}

shint의 이미지

두 정수를 입력해주세요: -2+-100
결과: 4007030

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

whs9400의 이미지

음 음수인 값을 +로 만들어주는 함수를 선언한 후
입력 받은 수를 만든 함수의 인자로 보내서
입력 받은 수 중에 음수인 값을 +로 바꾼 후 두 수를 더한 후에 이 값을 result에 저장 후 반환을 해서 결론적으로 마지막에 result 앞에 -를 붙여주면 되겠군용.
그리고 조언해주신것보다 더 깊숙히 생각해보니
절댓값이 큰 음수에서 양수를 더했을때도 생각을 해봐야겠네용

-----------------------------------------------------------------------------------------------------
'Python'

whs9400의 이미지

조언 감사합니당 ㅎㅎ

-----------------------------------------------------------------------------------------------------
'Python'

whs9400의 이미지

그리고 왠지 %c를 이용해서 하는것도 가능할것 같다는 생각이..ㅎㅎ

-----------------------------------------------------------------------------------------------------
'Python'