/* 論理回路シミュレータ */ #include #include #define MAX 20/* 回路数の上限 */ int num;/* 回路の個数 */ /* 回路構造体 */ struct{ int x,y,z;/* 入力、入力、出力 */ int type;/* 回路のタイプ(AND=1,OR=2,NOT=3,NAND=4,NOR=5,XOR=6) */ int next;/* 出力先の回路番号 */ int xflag,yflag;/* 入力は手動か(yes=1,no=0) */ }kairo[MAX]; /* 初期化 */ void init(){ int i; for(i=0;i"); num = atoi(gets(str)); for(i=0;i",i); kairo[i].type = atoi(gets(str)); printf("出力先回路NO(最後の場合は-1)-->"); kairo[i].next = atoi(gets(str)); if(kairo[kairo[i].next].xflag == 0){ kairo[kairo[i].next].xflag = 1; }else{ kairo[kairo[i].next].yflag = 1; } if(kairo[i].type == 3){ if(kairo[i].xflag == 0){ printf("kairo[%d].x-->",i); kairo[i].x = atoi(gets(str)); } }else{ if(kairo[i].xflag == 0){ printf("kairo[%d].x-->",i); kairo[i].x = atoi(gets(str)); } if(kairo[i].yflag == 0){ printf("kairo[%d].y-->",i); kairo[i].y = atoi(gets(str)); } } } } /* 処理 */ void syori(){ int i; for(i=0;i