suraj0152

TASK1

Jul 4th, 2023
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.94 KB | Software | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main() {
  5.     double current_var1, var2, var3, current_var4, current_var5;
  6.     double prev_var1 = 0.0;
  7.     double prev_var4 = 0.0;
  8.     double prev_var5 = 0.0;
  9.  
  10.     char infilename[100] = "";
  11.     char outfilename[100] = "";
  12.     int NodeCount = 0, PLUS = 0, ONLY_RIGHT = 0, ONLY_LEFT = 0, Left_Straight = 0, Right_Straight = 0,reversetrans = 0,errorflag2 = 0,errorflag1 = 0;
  13.     FILE* filein;
  14.     FILE* fileout;
  15.  
  16.     printf("\nEnter the name of the file to be read (.txt filename): ");
  17.     scanf("%s", infilename);
  18.     filein = fopen(infilename, "r");
  19.  
  20.     int direction = 1; // 1: North, 2: East, 3: South, 4: West
  21.  
  22.     while (!feof(filein)) {
  23.         int directionflag = 0;
  24.         fscanf(filein, "%lf %lf %lf %lf %lf\n", &current_var1, &var2, &var3, &current_var4, &current_var5);
  25.  
  26.         /*WHEN LINE TO NON-LINE TRANSITION HAPPEN FOR SENSOR 5, THEN THERE ARE 2 POSSIBLE NODES ONLY RIGHT OR
  27.         ONLY LEFT, (OR DEAD END ALSO) SO TO CHECK THAT NODES INDIVIDUALLY WE SET ERRORFLAG1 TO 1..*/
  28.         if (prev_var5 > 0.6 && current_var5 < 0.6) {
  29.             errorflag1 = 1;//ERRORFLAG SET TO 1 TO REMOVE ERROR..
  30.         } else if ((prev_var1 < 0.6 && current_var1 > 0.6 && current_var5 > 0.6) ||
  31.                    (prev_var4 < 0.6 && current_var4 > 0.6 && current_var5 > 0.6)) {
  32.         /*WHEN NON-LINE TO LINE TRANSITION HAPPEN FOR SENSOR 1&4 THEN THERE ARE 3 POSSIBLE NODES: STRAIHGHT+RIGHT, STRAIHGHT+LEFT,
  33.         PLUS, (OR END ALSO) SO TO CHECK THAT NODES INDIVIDUALLY WE SET ERRORFLAG2 TO 1..*/
  34.             errorflag2 = 1;
  35.         }
  36.  
  37.         if (errorflag1) {
  38.             if (current_var1 < 0.6 && current_var4 > 0.6 && current_var5 < 0.6) {
  39.                 ONLY_RIGHT = 1;
  40.                 errorflag1 = 0;
  41.             } else if (current_var1 > 0.6 && current_var4 < 0.6 && current_var5 < 0.6) {
  42.                 ONLY_LEFT = 1;
  43.                 errorflag1 = 0;
  44.             }
  45.         } else if (errorflag2) {
  46.             /*TO REMOVE ERROR I IMPLEMENTED ONE LOGIC:WHEN NON-LINE TO LINE TRANSITION HAPPEN FOR SENSOR 1&4. AFTER THAT
  47.             IF CURRENT VALUE OF SENSOR 1&4 IS GREATER THAN 0.6 THEN DIRECTLY PLUS NODE WILL COUNT. ELSE IF LINE TO NON-LINE
  48.             TRANSITION IS HAPPEN THEN IF PREVIOUS VALUE OF 1 IS GREATER THAN 0.6 THEN STRAIGHT+LEFT NODE WILL COUNT.
  49.             OTHERWISE STRAIGHT+RIGHT NODE WILL COUNT.*/
  50.             if (current_var1 > 0.6 && current_var4 > 0.6) {
  51.                 PLUS = 1;
  52.                 errorflag2 = 0;
  53.             } else if ((prev_var1 > 0.6 && current_var1 < 0.6) || (prev_var4 > 0.6 && current_var4 < 0.6)) {
  54.                 if (prev_var1 > 0.6 && prev_var4 < 0.6) {
  55.                     Left_Straight = 1;
  56.                     errorflag2 = 0;
  57.                 } else {
  58.                     Right_Straight = 1;
  59.                     errorflag2 = 0;
  60.                 }
  61.             }
  62.         }
  63.  
  64.         if (PLUS) {
  65.             printf("LEFT TURN");
  66.             printf("\tPLUS             ");
  67.             direction = (direction - 1) % 4; // Rotate direction 90 degrees counterclockwise
  68.                 if (direction == 0) direction = 4;
  69.                 directionflag = 1;
  70.             PLUS = 0;
  71.         }
  72.         else if (ONLY_RIGHT) {
  73.             printf("RIGHT TURN");
  74.             printf("\tONLY RIGHT       ");
  75.             direction = (direction + 1) % 4; // Rotate direction 90 degrees clockwise
  76.                 if (direction == 0) direction = 4;
  77.                 directionflag = 1;
  78.             ONLY_RIGHT = 0;
  79.         }
  80.         else if (ONLY_LEFT) {
  81.             printf("LEFT TURN");
  82.             printf("\tONLY LEFT       ");
  83.             direction = (direction - 1) % 4; // Rotate direction 90 degrees counterclockwise
  84.                 if (direction == 0) direction = 4;
  85.                 directionflag = 1;
  86.             ONLY_LEFT = 0;
  87.         }
  88.  
  89.  
  90.  
  91.         else if (Left_Straight){
  92.              printf("LEFT TURN");
  93.              printf("\tLeft + Straight      ");
  94.              direction = (direction - 1) % 4; // Rotate direction 90 degrees counterclockwise
  95.                 if (direction == 0) direction = 4;
  96.                 directionflag = 1;
  97.              Left_Straight=0;
  98.         }
  99.  
  100.         else if (Right_Straight){
  101.              printf("STRAIGHT");
  102.              printf("\tRight + Straight");
  103.              directionflag=1;
  104.              Right_Straight=0;
  105.         }
  106.  
  107.         if (directionflag) {
  108.             switch (direction) {
  109.                 case 1:
  110.                     printf("\t North\n");
  111.                     break;
  112.                 case 2:
  113.                     printf("\t East\n");
  114.                     break;
  115.                 case 3:
  116.                     printf("\t South\n");
  117.                     break;
  118.                 case 4:
  119.                     printf("\t West\n");
  120.                     break;
  121.             }
  122.         }
  123.  
  124.  
  125.         prev_var1=current_var1;
  126.         prev_var4=current_var4;
  127.         prev_var5=current_var5;
  128. }
  129.  
  130. return 0;
  131.  
  132. }
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
Advertisement
Add Comment
Please, Sign In to add comment