Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- if (strcmp(tmp, "AND") == 0) { // ========================== AND Case ==============================
- if (validLine[j] == 0) {
- char temp[100];
- char Input1[100];
- char Input2[100];
- fscanf(fp, "%s %s %s\n", Input1, Input2, temp);
- if (isValid(Input1) && isValid(Input2)) {
- Operate(Input1, Input2, temp, MAX, 'A');
- validLine[j] = 1;
- }
- } else fgets(NA, 10000, fp);
- } else if (strcmp(tmp, "OR") == 0) { // ========================== OR Case ==============================
- if (validLine[j] == 0) {
- char temp[100];
- char Input1[100];
- char Input2[100];
- fscanf(fp, "%s %s %s\n", Input1, Input2, temp);
- if (isValid(Input1) && isValid(Input2)) {
- Operate(Input1, Input2, temp, MAX, 'O');
- validLine[j] = 1;
- }
- } else fgets(NA, 10000, fp);
- } else if (strcmp(tmp, "NOT") == 0) { // ========================== NOT Case ==============================
- if (validLine[j] == 0) {
- char temp[100];
- char Input1[100];
- fscanf(fp, "%s %s\n", Input1, temp);
- if (isValid(Input1)) {
- Operate(Input1, NULL, temp, MAX, 'T');
- validLine[j] = 1;
- }
- } else fgets(NA, 10000, fp);
- } else if (strcmp(tmp, "XOR") == 0) { // ========================== XOR Case ==============================
- if (validLine[j] == 0) {
- char temp[100];
- char Input1[100];
- char Input2[100];
- fscanf(fp, "%s %s %s\n", Input1, Input2, temp);
- if (isValid(Input1) && isValid(Input2)) {
- Operate(Input1, Input2, temp, MAX, 'X');
- validLine[j] = 1;
- }
- } else fgets(NA, 10000, fp);
- } else if (strcmp(tmp, "NAND") == 0) { // ========================== NAND Case ==============================
- if (validLine[j] == 0) {
- char temp[100];
- char Input1[100];
- char Input2[100];
- fscanf(fp, "%s %s %s\n", Input1, Input2, temp);
- if (isValid(Input1) && isValid(Input2)) {
- Operate(Input1, Input2, temp, MAX, 'D');
- validLine[j] = 1;
- }
- } else fgets(NA, 10000, fp);
- } else if (strcmp(tmp, "NOR") == 0) { // ========================== NOR Case ==============================
- if (validLine[j] == 0) {
- char temp[100];
- char Input1[100];
- char Input2[100];
- fscanf(fp, "%s %s %s\n", Input1, Input2, temp);
- if (isValid(Input1) && isValid(Input2)) {
- Operate(Input1, Input2, temp, MAX, 'R');
- validLine[j] = 1;
- }
- } else fgets(NA, 10000, fp);
- } else if (strcmp(tmp, "DECODER") == 0) { // ========================== Decoder Case ==============================
- if (validLine[j] == 0) {
- int nInputs, VALID = 0;
- fscanf(fp, "%d ", &nInputs);
- int nOutputs = pow(2, nInputs);
- char **inputs = malloc(sizeof(char*) * 5000);
- for (i = 0; i < 5000; i++) inputs[i] = malloc(sizeof(char) * 500);
- char **outputs = malloc(sizeof(char*) * 10000);
- for (i = 0; i < 5000; i++) outputs[i] = malloc(sizeof(char) * 500);
- for (i = 0; i < nInputs; i++) fscanf(fp, "%s ", &inputs[i][0]);
- for (i = 0; i < nOutputs; i++) (i == nOutputs-1) ? fscanf(fp, "%s\n", &outputs[i][0]) : fscanf(fp, "%s ", &outputs[i][0]);
- for (i = 0; i < nInputs; i++) {
- if (isValid(inputs[i])) {
- VALID = 1;
- } else {
- VALID = 0;
- break;
- }
- }
- if (VALID == 1) {
- Decoder(nInputs, nOutputs, inputs, outputs, MAX);
- validLine[j] = 1;
- }
- } else fgets(NA, 10000, fp);
- } else if (strcmp(tmp, "MULTIPLEXER") == 0) { // ======================= Multiplexer Case ==============================
- if (validLine[j] == 0) {
- int nInputs, nSelectors, VALID = 0;
- fscanf(fp, "%d ", &nInputs);
- if (power2(nInputs) == 0) {
- printf("error");
- return 0;
- }
- nSelectors = log(nInputs)/log(2);
- char **inputs = malloc(sizeof(char*) * 5000);
- for (i = 0; i < 5000; i++) inputs[i] = malloc(sizeof(char) * 500);
- char **selectors = malloc(sizeof(char*) * 5000);
- for (i = 0; i < 5000; i++) selectors[i] = malloc(sizeof(char) * 500);
- char output[500];
- for (i = 0; i < nInputs; i++) fscanf(fp, "%s ", &inputs[i][0]);
- for (i = 0; i < nSelectors; i++) fscanf(fp, "%s ", &selectors[i][0]);
- fscanf(fp, "%s\n", output);
- for (i = 0; i < nInputs; i++) {
- if (isValid(inputs[i])) {
- VALID = 1;
- } else {
- VALID = 0;
- break;
- }
- }
- if (VALID == 1) {
- for (i = 0; i < nSelectors; i++) {
- if (isValid(selectors[i])) {
- VALID = 1;
- } else {
- VALID = 0;
- break;
- }
- }
- }
- if (VALID == 1) {
- Multiplexer(nInputs, nSelectors, inputs, selectors, output, MAX);
- validLine[j] = 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement