Comment detail

法演算 (Nested Flatten)

適当に書いてみました。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <stdio.h>

int normalize(int num,int law){
    num%=law;
    if(num<0) num=law+num;
    return num;
}

void calc(char* expression ,int law){
    int num1;
    char c;
    int num2;
    int ret;

    ret=sscanf(expression,"%d %c %d =",&num1,&c,&num2);
    if(ret!=3||(c!='+'&&c!='-'&&c!='*')) {
        printf("数式エラー:%s\n",expression);
        return;
    }
    if(c=='-'){
        num2*=-1;
        c='+';
    }
    normalize(num1,law);
    normalize(num2,law);
    if(c=='+'){
        num1+=num2;
    }else{
        num1*=num2;
    }
    printf("%s%d\n",expression,normalize(num1,law));
}

int main(){
    char expression[][20]={
        //足し算
        "1+2= ",
        "7 + 3 = ",
        "11 + 12 = ",
        //引き算
        "3 - 2 = " ,
        "2 - 3 = ",
        //掛け算 
        "2 * 3 = ",
        "11 * 12 = ",
        "18 * 39 = ",
        //対応していない割り算
        "1 / 3 = ",
        ""
    };
    int i=0;
    while(expression[i][0]){
        calc(expression[i],10);
        i++;
    }
    return 0;
}

Index

Feed

Other

Link

Pathtraq

loading...