Advertisement
Asmund_11

Untitled

Nov 22nd, 2019
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.94 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.     } else {
  53.         //FreeElement(p);
  54.         return;
  55.     }
  56. }
  57.  
  58. void AddElem(LIST* pnew, LIST* pold)
  59. {
  60.     head->prev = pnew;
  61.     pnew->next = head;
  62.     pnew->prev = NULL;
  63.     head = pnew;
  64.     return;
  65. }
  66.  
  67. void PrintList(void)
  68. {
  69.     LIST* p = head;
  70.     printf("%s", p->rech);
  71.     /*while (p != NULL) {
  72.         printf("\n%s", p->rech);
  73.         p = p->next;
  74.     }*/
  75. }
  76.  
  77. LIST* DeleteElem(LIST* p)
  78. {
  79.     LIST* pnext;
  80.     p->next->prev = p->prev;
  81.     pnext = p->prev->next = p->next;
  82.     FreeElement(p);
  83.     return pnext;
  84. }
  85.  
  86. void FreeElement(LIST* p)
  87. {
  88.     free(p->rech);
  89.     free(p);
  90. }
  91.  
  92. void FreeList(LIST* p)
  93. {
  94.     if (p == NULL)
  95.         return;
  96.     head = p->next;
  97.     FreeElement(p);
  98.     FreeList(head);
  99. }
  100.  
  101. void Func(char rech[], char letter)
  102. {
  103.     char* p = strtok(rech, " ");
  104.     while (p != NULL) {
  105.         for (int i = 0; i < strlen(p); i++) {
  106.             if (p[i] == letter) {
  107.                 for (int i = 0; i < strlen(p); i++)
  108.                     p[i] = '*';
  109.                 goto A;
  110.             }
  111.         }
  112.         A:
  113.         printf("%s ", p);
  114.         p = strtok(NULL, " ");
  115.     }
  116. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement