Advertisement
Asmund_11

Untitled

Nov 22nd, 2019
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.89 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <stdlib.h>
  5. #define SIZE 200
  6.  
  7. typedef struct List {
  8.     char* rech;
  9.     struct List* next, * prev;
  10. } LIST;
  11. LIST *head;
  12.  
  13. void Input(LIST* p);
  14. void AddElem(LIST *pnew, LIST *pold);
  15. void PrintList(void);
  16. LIST* DeleteElem(LIST* p);
  17. void FreeElement(LIST* p);
  18. void FreeList(LIST* p);
  19. void Func(char rech[], char letter);
  20.  
  21. int main()
  22. {
  23.     system("chcp 1251");
  24.     char letter;
  25.     printf("Введіть букву: ");
  26.     scanf_s("%c", &letter);
  27.     scanf_s("%*c");
  28.     puts("Введіть речення:");
  29.     LIST input;
  30.     Input(&input);
  31.     PrintList();
  32.     //FreeList(head);
  33.     return 0;
  34. }
  35.  
  36. void Input(LIST* p)
  37. {
  38.     char buf[SIZE] = { "" };
  39.     A:
  40.     p = (LIST*)malloc(sizeof(LIST));
  41.     if (head == NULL) {
  42.         p->prev = p->next = NULL;
  43.         head = p;
  44.     }
  45.     if (*gets_s(buf, SIZE) != '\0') {
  46.         fflush(stdin);
  47.         gets(buf);
  48.         p->rech = (char*)malloc(strlen(buf) + 1);
  49.         strcpy(p->rech, buf);
  50.         AddElem(p, head);
  51.         goto A;
  52.     }
  53.     else
  54.         return;
  55. }
  56.  
  57. void AddElem(LIST* pnew, LIST* pold)
  58. {
  59.     head->prev = pnew;
  60.     pnew->next = head;
  61.     pnew->prev = NULL;
  62.     head = pnew;
  63.     return;
  64. }
  65.  
  66. void PrintList(void)
  67. {
  68.     LIST* p = head;
  69.     printf("%s", p->rech);
  70.     /*while (p != NULL) {
  71.         printf("\n%s", p->rech);
  72.         p = p->next;
  73.     }*/
  74. }
  75.  
  76. LIST* DeleteElem(LIST* p)
  77. {
  78.     LIST* pnext;
  79.     p->next->prev = p->prev;
  80.     pnext = p->prev->next = p->next;
  81.     FreeElement(p);
  82.     return pnext;
  83. }
  84.  
  85. void FreeElement(LIST* p)
  86. {
  87.     free(p->rech);
  88.     free(p);
  89. }
  90.  
  91. void FreeList(LIST* p)
  92. {
  93.     if (p == NULL)
  94.         return;
  95.     head = p->next;
  96.     FreeElement(p);
  97.     FreeList(head);
  98. }
  99.  
  100. void Func(char rech[], char letter)
  101. {
  102.     char* p = strtok(rech, " ");
  103.     while (p != NULL) {
  104.         for (int i = 0; i < strlen(p); i++) {
  105.             if (p[i] == letter) {
  106.                 for (int i = 0; i < strlen(p); i++)
  107.                     p[i] = '*';
  108.                 goto A;
  109.             }
  110.         }
  111.         A:
  112.         printf("%s ", p);
  113.         p = strtok(NULL, " ");
  114.     }
  115. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement