Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int (*fptr[])(beg*) = { NULL, D_Add_room, D_Add_pathway, D_Delete_room, D_Find_exit,
- D_Show, D_Timing, D_File_in, D_File_out, D_Random_Generation };
- int getInt(int* pn) {
- const char* errmsg = "";
- int n;
- do {
- puts(errmsg);
- errmsg = "Repeat input";
- n = scanf_s("%d", pn);
- if (n < 0)
- return 0;
- scanf_s("%*[^\n]");
- scanf_s("%*c");
- } while (n == 0);
- return 1;
- }
- char* getStr() {
- char* ptr = (char*)malloc(sizeof(char));
- char buf[81];
- int n, len = 0;
- *ptr = '\0';
- do {
- n = scanf_s("%80[^\n]", buf, 81);
- if (n < 0) {
- free(ptr);
- return NULL;
- }
- else
- if (n) {
- len += strlen(buf);
- ptr = (char*)realloc(ptr, len + 1);
- int k = strcspn(buf, "\0"); // длина слова
- int l = strlen(ptr) + k + 1;
- strncat_s(ptr, l, buf, k);
- }
- } while (n > 0);
- scanf_s("%*c");
- return ptr;
- }
- int dialog(const char* msgs[], int N) {
- const char* errmsg = "";
- int rc;
- int i, n;
- do {
- puts(errmsg);
- errmsg = "You are wrong. Repeate, please!";
- for (i = 0; i < N; ++i)
- puts(msgs[i]);
- puts("Make your choice: --> ");
- n = getInt(&rc);
- if (n == 0)
- rc = 0;
- } while (rc < 0 || rc >= N);
- return rc;
- }
- int main() {
- beg maze=init();
- int rc;
- while (rc = dialog(msgs, NMsgs))
- if (!fptr[rc](&maze))
- break;
- if (FileOpenFlag)
- D_File_out(&maze);
- deleteall(&maze);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement