Кто нибудь писал quine? - C (СИ)

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

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

писал свой quine но не вот эту классику
#include<stdio.h>
char*i="\\#include<stdio.h> ",n='\n',q='"',*p=
"%s%cchar*i=%c%c%s%c,n='%cn',q='%c',*p=%c%c%s%c,*m=%c%c%s%c%c;%s%c",*m=
"int main(){return!printf(p,i+1,n,q,*i,i,q,*i,q,n,q,p,q,n,q,m,q,n,m,n);}"
;int main(){return!printf(p,i+1,n,q,*i,i,q,*i,q,n,q,p,q,n,q,m,q,n,m,n);}
Это классический Куайн на Си, полностью соответствующий ANSI Си.

Решение задачи: «Кто нибудь писал quine?»

textual
Листинг программы
#include <algorithm>
#include <iostream>
#include <iterator>
#include <fstream>
#include <string>
 
int main()
{
    std::copy(std::istream_iterator<std::string>(std::ifstream("main.cpp"))
              , std::istream_iterator<std::string>()
              , std::ostream_iterator<std::string>(std::cout, "\n"));
}

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

В этом коде программа считывает файл main.cpp построчно и выводит каждую строку на стандартный вывод с символом новой строки после неё. Код использует следующие стандартные библиотеки C++:

  1. <algorithm> - Эта библиотека содержит алгоритмы для работы с контейнерами.
  2. <iostream> - Эта библиотека содержит функции для ввода и вывода данных.
  3. <iterator> - Эта библиотека содержит итераторы для работы с контейнерами.
  4. <fstream> - Эта библиотека содержит классы для работы с файлами.
  5. <string> - Эта библиотека содержит классы и функции для работы со строками. Переменные, используемые в коде:
  6. std::string main_cpp_content - переменная, которая содержит содержимое файла main.cpp.
  7. std::istream_iterator<std::string> - итератор для чтения строк из потока ввода.
  8. std::ostream_iterator<std::string> - итератор для записи строк в поток вывода.
  9. std::cout - поток вывода, используемый для записи строк. Выполняемые действия:
  10. Создается объект std::istream_iterator<std::string>(std::ifstream(main.cpp)), который инициализирует итератор для чтения строк из файла main.cpp.
  11. Создается объект std::ostream_iterator<std::string>(std::cout,\n), который инициализирует итератор для записи строк в поток вывода с символом новой строки после каждой строки.
  12. Вызывается функция std::copy() для копирования строк из итератора чтения в итератор записи.
  13. Копирование продолжается до тех пор, пока не будут прочитаны все строки из файла main.cpp.
  14. Программа завершается.

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


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

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

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