Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- int main() {
- double current_var1, var2, var3, current_var4, current_var5;
- double prev_var1 = 0.0;
- double prev_var4 = 0.0;
- double prev_var5 = 0.0;
- char infilename[100] = "";
- char outfilename[100] = "";
- int NodeCount = 0, PLUS = 0, ONLY_RIGHT = 0, ONLY_LEFT = 0, Left_Straight = 0, Right_Straight = 0,reversetrans = 0,errorflag2 = 0,errorflag1 = 0;
- FILE* filein;
- FILE* fileout;
- printf("\nEnter the name of the file to be read (.txt filename): ");
- scanf("%s", infilename);
- filein = fopen(infilename, "r");
- int direction = 1; // 1: North, 2: East, 3: South, 4: West
- while (!feof(filein)) {
- int directionflag = 0;
- fscanf(filein, "%lf %lf %lf %lf %lf\n", ¤t_var1, &var2, &var3, ¤t_var4, ¤t_var5);
- /*WHEN LINE TO NON-LINE TRANSITION HAPPEN FOR SENSOR 5, THEN THERE ARE 2 POSSIBLE NODES ONLY RIGHT OR
- ONLY LEFT, (OR DEAD END ALSO) SO TO CHECK THAT NODES INDIVIDUALLY WE SET ERRORFLAG1 TO 1..*/
- if (prev_var5 > 0.6 && current_var5 < 0.6) {
- errorflag1 = 1;//ERRORFLAG SET TO 1 TO REMOVE ERROR..
- } else if ((prev_var1 < 0.6 && current_var1 > 0.6 && current_var5 > 0.6) ||
- (prev_var4 < 0.6 && current_var4 > 0.6 && current_var5 > 0.6)) {
- /*WHEN NON-LINE TO LINE TRANSITION HAPPEN FOR SENSOR 1&4 THEN THERE ARE 3 POSSIBLE NODES: STRAIHGHT+RIGHT, STRAIHGHT+LEFT,
- PLUS, (OR END ALSO) SO TO CHECK THAT NODES INDIVIDUALLY WE SET ERRORFLAG2 TO 1..*/
- errorflag2 = 1;
- }
- if (errorflag1) {
- if (current_var1 < 0.6 && current_var4 > 0.6 && current_var5 < 0.6) {
- ONLY_RIGHT = 1;
- errorflag1 = 0;
- } else if (current_var1 > 0.6 && current_var4 < 0.6 && current_var5 < 0.6) {
- ONLY_LEFT = 1;
- errorflag1 = 0;
- }
- } else if (errorflag2) {
- /*TO REMOVE ERROR I IMPLEMENTED ONE LOGIC:WHEN NON-LINE TO LINE TRANSITION HAPPEN FOR SENSOR 1&4. AFTER THAT
- IF CURRENT VALUE OF SENSOR 1&4 IS GREATER THAN 0.6 THEN DIRECTLY PLUS NODE WILL COUNT. ELSE IF LINE TO NON-LINE
- TRANSITION IS HAPPEN THEN IF PREVIOUS VALUE OF 1 IS GREATER THAN 0.6 THEN STRAIGHT+LEFT NODE WILL COUNT.
- OTHERWISE STRAIGHT+RIGHT NODE WILL COUNT.*/
- if (current_var1 > 0.6 && current_var4 > 0.6) {
- PLUS = 1;
- errorflag2 = 0;
- } else if ((prev_var1 > 0.6 && current_var1 < 0.6) || (prev_var4 > 0.6 && current_var4 < 0.6)) {
- if (prev_var1 > 0.6 && prev_var4 < 0.6) {
- Left_Straight = 1;
- errorflag2 = 0;
- } else {
- Right_Straight = 1;
- errorflag2 = 0;
- }
- }
- }
- if (PLUS) {
- printf("LEFT TURN");
- printf("\tPLUS ");
- direction = (direction - 1) % 4; // Rotate direction 90 degrees counterclockwise
- if (direction == 0) direction = 4;
- directionflag = 1;
- PLUS = 0;
- }
- else if (ONLY_RIGHT) {
- printf("RIGHT TURN");
- printf("\tONLY RIGHT ");
- direction = (direction + 1) % 4; // Rotate direction 90 degrees clockwise
- if (direction == 0) direction = 4;
- directionflag = 1;
- ONLY_RIGHT = 0;
- }
- else if (ONLY_LEFT) {
- printf("LEFT TURN");
- printf("\tONLY LEFT ");
- direction = (direction - 1) % 4; // Rotate direction 90 degrees counterclockwise
- if (direction == 0) direction = 4;
- directionflag = 1;
- ONLY_LEFT = 0;
- }
- else if (Left_Straight){
- printf("LEFT TURN");
- printf("\tLeft + Straight ");
- direction = (direction - 1) % 4; // Rotate direction 90 degrees counterclockwise
- if (direction == 0) direction = 4;
- directionflag = 1;
- Left_Straight=0;
- }
- else if (Right_Straight){
- printf("STRAIGHT");
- printf("\tRight + Straight");
- directionflag=1;
- Right_Straight=0;
- }
- if (directionflag) {
- switch (direction) {
- case 1:
- printf("\t North\n");
- break;
- case 2:
- printf("\t East\n");
- break;
- case 3:
- printf("\t South\n");
- break;
- case 4:
- printf("\t West\n");
- break;
- }
- }
- prev_var1=current_var1;
- prev_var4=current_var4;
- prev_var5=current_var5;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment