혹시 질문좀드려도 될까요 ㅠ
계산기 코딩을 짜봤는데
<<<<<<< 부분에서 숫자가 아닐시에 처음으로 커맨드창이꺼지지않고 다시 실행하는법과
연산시에 괄호도 연산이 되게 코딩질문드려도 될까요 2+(2+2) 같은 식으로
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
static char temp_num[10];
static int num[20];
static char op[20];
void fomula_delimit(char *fomula) {
int i;
int num_length = 0;
int op_count = 0;
int num_count = 0;
int op_state = 0;
for (i=0; fomula[i]; i++) {
if (isdigit(fomula[i]))
{
temp_num[num_length] = fomula[i];
num_length++;
op_state = 0;
}
else
{
num[num_count] = atoi(temp_num);
num_length = 0;
num_count++;
op[op_count] = fomula[i];
op_count++;
op_state++;
if (op_state > 1) {
printf("숫자가 아닙니다. 숫자를 입력해주세요\n");
exit(1); <<<<<<<<<<<<<<<
}
}
num[num_count] = atoi(temp_num);
}
}
int remake_array(int index) {
int i;
if (op[index+1]) {
for (i=index; op[i]; i++)
op[i] = op[i+1];
}
else
op[index] = '\0';
if (num[index+1]) {
for (i=index+1; num[i]; i++)
num[i] = num[i+1];
}
index--;
return index;
}
void first_fomula_calculate() {
int i;
for (i=0; op[i]; i++)
switch(op[i]) {
case '*' :
num[i] = num[i] * num[i+1];
i = remake_array(i);
break;
case '/' :
if (num[i+1] == 0) {
printf("don't zero divide\n");
exit(1);
}
num[i] = num[i] / num[i+1];
i = remake_array(i);
break;
}
}
void last_fomula_calculate() {
int i;
for (i=0; op[i]; i++)
switch(op[i]) {
case '+' :
num[i] = num[i] + num[i+1];
i = remake_array(i);
break;
case '-' :
num[i] = num[i] - num[i+1];
i = remake_array(i);
break;
}
}
void run_calculator() {
char fomula[255];
char cc;
while(1)
{
system("cls");
printf("계산식을 입력해주세요 : ");
scanf("%s", fomula);
fomula_delimit(fomula);
first_fomula_calculate();
last_fomula_calculate();
printf("waiting" );
sleep(0.1);
printf(".");
sleep(0.1);
printf(".");
sleep(0.1);
printf(".");
printf("\n");
printf("결과 : %d\n\n", num[0]);
printf("계속 사용하시려면 (Y) 그만 사용하시려면 (N) : ");
fflush(stdin);
scanf("%c", &cc);
if (cc=='y'||cc=='Y')
{
continue;
}
else if (cc=='n'||cc=='N')
{
break;
}
}
}
void main() {
run_calculator();
}
계산기 코딩을 짜봤는데 -> 계산기 코딩을 했는데 OR 계산기 코드를 짜봤는데