"Simon Says" is a memory game where "Simon" outputs a sequence of 10 characters (R, G, B, Y) and the user must repeat the sequence. Create a for loop that compares the two strings starting from index 0. For each match, add one point to userScore. Upon a mismatch, exit the loop using a break statement.
Ex: The following patterns yield a userScore of 4:
simonPattern: R, R, G, B, R, Y, Y, B, G, Y
userPattern: R, R, G, B, B, R, Y, B, G, Y
#include <stdio.h>
#include <string.h>
int main(void) {
char simonPattern[50] = "";
char userPattern[50] = "";
int userScore = 0;
int i = 0;
userScore = 0;
strcpy(simonPattern, "RRGBRYYBGY");
strcpy(userPattern, "RRGBBRYBGY");
while (userPattern[i] = simonPattern[i]) {
userScore = userScore + 1;
++i;
if (userPattern[i] != simonPattern[i]) {
break;
}
}
printf("userScore: %d\n", userScore);
return 0;
}
I tried running the code, but I got this
https://i.sstatic.net/QPfwB.png
Does anyone know what's causing the extra 1?
Thanks.
Change the condition in your while loop to use ==
not =
. Right now you are making an assignment and not comparing the two meaning the first chars will always be the same and give a score of 1. You can then remove the if statement from inside the loop.
The assignment asks you to use a for loop and not a while. If you just move I into the for loop and fill out the rest, along with moving the increment to after the != check it would work.