Перенести в конец каждой строки все входящие в неё цифры - C (СИ)

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

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

Тёмный лес для меня, те кто дал задание сказали, что оно интересное, помогите пожалуйста решить её, пока интересно только то, как её решать? Используя очередь решить следующую задачу.Содержимое текстового файла f, разделённое на строки, переписать в текстовый файл g, перенося при этом в конец каждой строки все входящие в неё цифры (с сохранением исходного порядка как среди цифр, так и среди остальных символов строки.)

Решение задачи: «Перенести в конец каждой строки все входящие в неё цифры»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
 
struct list
{
    int data;
    struct list *next;
};
struct list *ptr, *ptr2, *tmpptr;
int main()
{
    FILE *in, *out;
    int c, n=0;
    in=fopen("f.txt","r");
    out=fopen("g.txt","w");
    if(in != NULL)
    {
        while(1)
        {
            c=fgetc(in);
            if ((c!='\n')&&(c!=EOF))
            {
                if (!((c>=48)&&(c<=57)))
                {
                    fputc(c,out);
                }
                else
                {
                    /*ptr=new list;*/
                    ptr = (struct list*)malloc(sizeof(struct list));
                    ptr -> data=c;
                    if (n==0)
                    {
                        ptr2=ptr;
                    }
                    if (n!=0)
                    {
                        tmpptr -> next = ptr;
                    }
                    tmpptr=ptr;
                    n++;
                }
            }
            else
            {
                ptr=ptr2;
                for (int i=0; i<n; i++)
                {
                    fputc(ptr -> data,out);
                    ptr=ptr->next;
                }
                fputc(10,out);
                n=0;
            }
            if (c==EOF)
            {
                break;
            }
 
        }
    }
    fclose(in);
    return 0;
}

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

  1. Структура данных, используемая в программе, - это связанный список (linked list).
  2. Переменные ptr, ptr2 и tmpptr используются для работы со связанным списком.
  3. Входной файл f.txt считывается посимвольно с помощью функции fgetc().
  4. Если символ не является переносом строки (\n) и не является концом файла (EOF), то он проверяется.
  5. Если символ не является числом от 0 до 9, то он записывается в выходной файл g.txt.
  6. Если символ является числом от 0 до 9, то он добавляется в связанный список.
  7. Если это первый элемент в списке, то он становится ptr2.
  8. Если это не первый элемент, то он добавляется в конец списка, используя tmpptr.
  9. После того, как все символы в строке были обработаны, они выводятся в выходной файл g.txt.
  10. Переменная n используется для отслеживания количества элементов в списке.
  11. Переменная c используется для хранения текущего считываемого символа.
  12. Переменная in используется для открытия входного файла f.txt для чтения, а переменная out используется для открытия выходного файла g.txt для записи.
  13. Если входной файл не может быть открыт, программа выводит сообщение об ошибке и завершается.
  14. Если достигается конец файла (EOF), то программа завершается.
  15. Все открытые файлы закрываются с помощью функции fclose().
  16. Программа возвращает 0, что означает успешное выполнение.
  17. Вывод программы: в выходной файл g.txt добавляются все цифры из каждой строки входного файла f.txt, перемещая их в конец строки.

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


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

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

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