mirror of
https://github.com/caperren/school_archives.git
synced 2025-11-09 21:51:15 +00:00
85 lines
1.6 KiB
C
85 lines
1.6 KiB
C
#include<stdio.h>
|
|
#include<string.h>
|
|
#include<stdlib.h>
|
|
#include<time.h>
|
|
|
|
#define NUM_VALID_CHARS 13
|
|
#define STRING_LENGTH 5
|
|
|
|
char valid_chars[NUM_VALID_CHARS] = {
|
|
'(',
|
|
'[',
|
|
'{',
|
|
')',
|
|
']',
|
|
'}',
|
|
' ',
|
|
'a',
|
|
'x',
|
|
'r',
|
|
'e',
|
|
's',
|
|
't'
|
|
};
|
|
|
|
char inputChar()
|
|
{
|
|
return valid_chars[rand() % NUM_VALID_CHARS];
|
|
}
|
|
|
|
char *inputString()
|
|
{
|
|
char *temp_string = malloc((STRING_LENGTH + 1) * sizeof(char));
|
|
|
|
for(int i = 0 ; i < STRING_LENGTH ; i++){
|
|
temp_string[i] = inputChar();
|
|
}
|
|
|
|
temp_string[STRING_LENGTH] = '\0';
|
|
|
|
return temp_string;
|
|
}
|
|
|
|
void testme()
|
|
{
|
|
int tcCount = 0;
|
|
char *s;
|
|
char c;
|
|
int state = 0;
|
|
while (1)
|
|
{
|
|
tcCount++;
|
|
c = inputChar();
|
|
s = inputString();
|
|
printf("Iteration %d: c = %c, s = %s, state = %d\n", tcCount, c, s, state);
|
|
|
|
if (c == '[' && state == 0) state = 1;
|
|
if (c == '(' && state == 1) state = 2;
|
|
if (c == '{' && state == 2) state = 3;
|
|
if (c == ' '&& state == 3) state = 4;
|
|
if (c == 'a' && state == 4) state = 5;
|
|
if (c == 'x' && state == 5) state = 6;
|
|
if (c == '}' && state == 6) state = 7;
|
|
if (c == ')' && state == 7) state = 8;
|
|
if (c == ']' && state == 8) state = 9;
|
|
if (s[0] == 'r' && s[1] == 'e'
|
|
&& s[2] == 's' && s[3] == 'e'
|
|
&& s[4] == 't' && s[5] == '\0'
|
|
&& state == 9)
|
|
{
|
|
printf("error ");
|
|
free(s);
|
|
exit(200);
|
|
}
|
|
free(s);
|
|
}
|
|
}
|
|
|
|
|
|
int main(int argc, char *argv[])
|
|
{
|
|
srand(time(NULL));
|
|
testme();
|
|
return 0;
|
|
}
|