Получить те символы, принадлежащие последовательности, которые входят в нее одни раз - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Задача Дана последовательность символов S1,s2...Sn n=>2 . Получить те символы,принадлежащие последовательности ,которые входят в нее одни раз
#include <iostream>
struct list 
{   list *next;
    char elem;}*ph;
 
int main ()
{
    FILE *file;
    file=fopen("input.txt","r");
    list *p,*r,*z;
    ph=new list;
    ph->next=NULL;
    p=ph;
    p=new list;
    p->next=new list;
    p->elem =NULL;
    do 
    {   p=p->next;
        fscanf(file,"%c",&(p->elem));
        p->next=new list;
    }
    while (p->elem!='\n');
    for (p=ph;p->next!=NULL;p->next)
    {   int t=0;
            for(r=p->next;r!=NULL;r=r->next)
            {   if (p==r) 
                {z=r->next;
                    r->next=r->next->next;
                    delete z;
                    t=1;
                };
                r=r->next;
            };
        if(t==1)
        {   z=p->next;
            p->next=p->next->next;
            delete z;
        };
        p=p->next;
    };
    file=fopen("output.txt","w");
    do
    {   p=p->next;
        fprintf(file,"%c",(p->elem));
    }
    while(p->elem!='\n');
    fclose(file);
 
}
выдает ошибку в строке "fscanf(file,"%c",&(p->elem));" подскажите что не так, и правильно ли вообще сделат ввод и вывод данных?

Решение задачи: «Получить те символы, принадлежащие последовательности, которые входят в нее одни раз»

textual
Листинг программы
#include <stdio.h>
#include <limits.h>
#define FILE_NAME "file.txt"
 
int main(void){
    FILE * f;
    int cnt[UCHAR_MAX + 1] = { 0 }, i;
    
    if ( ( f = fopen(FILE_NAME, "r") ) == NULL ){
        fprintf(stderr, "Can't open input file.\n");
        return 1;
    }
    while ( ( i = getc(f) ) != EOF )
        cnt[i]++;
    fclose(f);
    
    for ( i = 0; i < UCHAR_MAX + 1; ++i )
        if ( cnt[i] == 1 )
            putchar(i);
    putchar('\n');
    return 0;
}

Объяснение кода листинга программы

  1. Подключение необходимых библиотек для работы с файлами и для определения диапазона значений символов.
  2. Объявление имени файла, с которым будет работать программа.
  3. Объявление переменной f типа FILE* для работы с файлом.
  4. Проверка открытия файла и вывод сообщения об ошибке в случае неудачи.
  5. Установка значения переменной i равным EOF перед выходом из цикла.
  6. Организация цикла, который выполняется до тех пор, пока не достигнут конец файла.
  7. Увеличение счетчика символа в массиве cnt на единицу.
  8. Закрытие файла после окончания чтения.
  9. Организация цикла для вывода символов, которые встречаются в файле только один раз.
  10. Вывод символа, который является текущим элементом цикла.
  11. Возврат 0 для успешного выполнения программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.182 из 5
Похожие ответы