Advertisement
zodiak1

ВТорая попытка

Mar 2nd, 2022
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.37 KB | None | 0 0
  1. #include <conio.h>
  2. #include <stdio.h>
  3. #include <locale.h>
  4. #include <windows.h>
  5.  
  6. struct list
  7. {
  8.    list(char _elem = 0, list *_next = NULL) : elem(_elem), next(_next) {}
  9.  
  10.    char elem;
  11.    list *next;
  12. };
  13.  
  14. void print(list *l);
  15. void unique(list *l);
  16. char input(const char *path, list *l);
  17.  
  18. int main()
  19. {
  20.    setlocale(0, "");
  21.  
  22.    list *S = new list();
  23.  
  24.    input("symbols.txt", S);
  25.    //unique(S);
  26.    print(S);
  27.  
  28.    return 0 * _getch();
  29. }
  30.  
  31. char input(const char *path, list *l)
  32. {
  33.    FILE *stream = NULL;
  34.    fopen_s(&stream, path, "r");
  35.  
  36.    if (stream)
  37.    {
  38.       char elem = 0;
  39.  
  40.       list *d = new list();
  41.       // Считываем все символы из файла.
  42.       for (list *p = l; fscanf_s(stream, "%c", &elem, 1) != EOF && p; )
  43.       {
  44.          bool isUniq = true;
  45.          for (list *q = d; q && isUniq; q = q->next)
  46.             if (elem == q->elem) isUniq = false;
  47.  
  48.          if (!isUniq)
  49.          {
  50.             for (list **z = &l; *z; z = &((*z)->next))
  51.             {
  52.                if ((*z)->elem == elem)
  53.                {
  54.                   list *t = (*z)->next;
  55.                   delete *z;
  56.  
  57.                   *z = t;
  58.                }
  59.             }
  60.          }
  61.          else
  62.          {
  63.             p->elem = elem;
  64.             p->next = new list();
  65.             p = p->next;
  66.  
  67.             list *ld = d;
  68.             for ( ; ld->next; ld = ld->next);
  69.             ld->elem = elem;
  70.             ld->next = new list();
  71.          }
  72.       }
  73.  
  74.       fclose(stream);
  75.       return 0;
  76.    }
  77.    else
  78.    {
  79.       perror("Завершение работы программы");
  80.       return -1;
  81.    }
  82. }
  83.  
  84. void unique(list *l)
  85. {
  86.    for (list *q = l; q && q->next; q = q->next)
  87.    {
  88.       int dup_c = 0;
  89.      
  90.       for (list *t = q->next; t->next; )
  91.       {
  92.          if (t->next->elem == q->next->elem)
  93.          {
  94.             list *w = t->next->next;
  95.             delete t->next;
  96.             t->next = w;
  97.  
  98.             dup_c++;
  99.  
  100.             int a = 1;
  101.          }
  102.          else t = t->next;
  103.       }
  104.  
  105.       if (dup_c)
  106.       {
  107.          list *w = q->next->next;
  108.          delete q->next;
  109.  
  110.          q->next = w;
  111.  
  112.          int b = 2;
  113.       }
  114.       int c = 3;
  115.    }
  116. }
  117.  
  118. void print(list *l)
  119. {
  120.    printf_s("Результат работы программы: \n");
  121.    for (list *p = l; p; p = p->next)
  122.       printf_s("%c", p->elem);
  123. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement