Question: Help Me it is due today! Read through the code, and tell me what the password of method part5,6,7! It is confusing for me. This
Help Me it is due today!
Read through the code, and tell me what the password of method part5,6,7!
It is confusing for me.
This code is about to defuse the bomb by interning each password for each stage.
The code:
V
V
#include #include #include
void explode(const int code);
void readInput(char buffer[], const int bufferSize){ int i; int c; for(i=0; i<=bufferSize; ++i){ c = getchar();
/* this checks that you are at the end of the line */ /* Windows encodes an end-of-line as two characters: */ /* Linux just uses */ /* This will accept either version */ if(c == ' '){ c = getchar(); }
if(c == ' '){ break; } else if(i buffer[i] = (char)c; } }
}
void part1(){ const int bufferSize = 12; char buffer[bufferSize]; char target[] = "Optimus"; int i; const int n = strlen(target);
readInput(buffer, bufferSize);
for(i=0; i if(buffer[i] != target[i]){ explode(1); } } }
int part2(){ int i,z;
const int bufferSize = 12; char buffer[bufferSize];
readInput(buffer, bufferSize);
/* atoi takes a string representation of a number (e.g. "1234") */ /* and converts it to an int representation of the number (e.g. 1234) */ z = atoi(buffer); if(!z) explode(20);
z += 22;
if(z != 53) explode(21);
return z / 2; }
void part3(){ int i,z;
const int bufferSize = 12; char buffer[bufferSize];
readInput(buffer, bufferSize);
i=0; while(i < bufferSize && (buffer[i] == 'H' || buffer[i] == 'w')){ i++; }
if(i != 4) explode(70); }
void part4(const int x){ int i,y,z; const int bufferSize = 12; char buffer[bufferSize];
readInput(buffer, bufferSize);
/* atoi takes a string representation of a number (e.g. "1234") */ /* and converts it to an int representation of the number (e.g. 1234) */ z = atoi(buffer); if(!z) explode(20);
y = z; for(i=0; i<50; i++){ y += z * i * y; }
if(z + 12 != x){ explode(21); } }
void part5(char buffer[], const int bufferSize){ const char allowed[] = "a3hUD6Cc8bTzv"; int i, j, x;
for(i=0; i char c;
x = getchar(); if(x == EOF) explode(10); else if(x == ' ') explode(11);
c = (char)x; for(j=2; j<10; ++j){ if(c == allowed[j]){ buffer[i] = c + 1; break; } } if(j == 10){ explode(12); }
}
j = 0; for(i=1; i if(buffer[i] != buffer[i-1]){ j = 1; break; } } if(j == 0) explode(13);
/* Windows encodes an end-of-line as two characters: */ /* Linux just uses */ /* This will accept either version */ x = getchar(); if(x == ' ') x = getchar(); if(x != ' ') explode(14); }
void part6(const char buf1[], const int bufSize){ char buf2[bufSize]; int i, c;
readInput(buf2, bufSize);
for(i=0; i if(buf1[i] != buf2[bufSize - 1 - i]) explode(-44); }
}
void part7(int *x){ int y = 19; int *z = &y; int k;
const int bufSize = 12; char buffer[bufSize];
*z -= 3;
readInput(buffer, bufSize);
/* atoi takes a string representation of a number (e.g. "1234") */ /* and converts it to an int representation of the number (e.g. 1234) */ k = atoi(buffer);
if(k + *x != y) explode(70);
}
void theBomb(){ const int bufSize = 10; char buffer[bufSize]; int result;
printf("Enter the stage 1 password: "); part1(); printf("Stage 1 defused. ");
printf("Enter the stage 2 password: "); result = part2(); printf("Stage 2 defused. ");
printf("Enter the stage 3 password: "); part3(); printf("Stage 3 defused. ");
printf("Enter the stage 4 password: "); part4(result); printf("Stage 4 defused. ");
printf("Enter the stage 5 password: "); part5(buffer, bufSize); printf("Stage 5 defused. ");
printf("Enter the stage 6 password: "); part6(buffer, bufSize); printf("Stage 6 defused. ");
printf("Enter the stage 7 password: "); part7(&result); printf("Stage 7 defused. ");
printf("The entire bomb has been defused. ");
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
