9

Си (язык программирования)

Пикабу, кто знает язык Си (именно Си, не Си#, не Си++), отпишитесь пожалуйста в комментах. Нужна небольшая консультация(по теме строк). Это не займёт у вас много времени(минут 10 от силы), обещаю! Пожалуйста, срочно нужна помощь.
Не минусите пожалуйста пост, минусите мои комменты лучше.
Вы смотрите срез комментариев. Показать все
Автор поста оценил этот комментарий
Ну не томите же. Почему именно на С, вы студент? Или разработчик чего то очень и очень необычного? Что за вилы вам встретились, и каково решение?)
раскрыть ветку (22)
Автор поста оценил этот комментарий
Да, студент обыкновенный. Лабу скоро сдавать. Хочу понять само задание и что для выполнения этого задания нужна знать.
раскрыть ветку (21)
Автор поста оценил этот комментарий
На пикабу, мне кажется, немало студентов. А снятые с боевой готовности вилы - полезно изучать. Каким бы смешным и глупым не казалась их причина - ознакомившийся повторно не наступит. И нечего тут стыдиться.
раскрыть ветку (20)
Автор поста оценил этот комментарий
В текстовом файле содержится набор строк. Необходимо выдать на экран все строки, включа-
ющие в себя подстроки, соответствующие заданному шаблону. Элементы шаблона:
• . — один любой символ;
• * — любое количество предыдущего символа, в том числе его отсутствие, например шаблону a*
соответствуют: пустая подстрока, ‘a’, ‘aa’,... и т.д.;
• + — любое ненулевое количество предыдущего символа;
• ^ — символы подстроки расположены только с начала строки;
• $ — символы подстроки расположены только с конца строки;
• () — группировка элементов шаблона, например шаблону (ab)+ соответствуют: ‘ab’, ‘abab’,
‘ababababab’ и т.п.
• [] — выбор одного символа из набора в скобках.
Если в шаблоне необходим один из управляющих символов в явном виде, то перед ним ставится \,
например, если в подстроке должна присутствовать *, то в шаблоне указывается \*. Шаблон, несоответ-
ствующий указанным правилам, считается ошибочным и не обрабатывается.
раскрыть ветку (3)
Автор поста оценил этот комментарий
А что за предмет? Мат. лингвистика какая-нибудь наверно. Там же должны были давать теорию по всяким грамматикам, лексическим и синтаксическим анализаторам, автоматам, нет?

А вообще, это штука называется регулярное выражение:
https://en.wikipedia.org/wiki/Regular_expression
И книжка по теме:
http://en.wikipedia.org/wiki/Compilers:_Principles,_Techniqu...
раскрыть ветку (2)
Автор поста оценил этот комментарий
Не, не мат.лингвистика. Просто программирование. Теории нам не дают.
раскрыть ветку (1)
Автор поста оценил этот комментарий
В этом случае, если иное не оговорено в условиях, лучше наверно использовать какую-нить либу для рег. выражений под си. Тогда задача тупо сводится к циклу, внутри которого ты читаешь очередную строку из файла и проверяешь ее на соответствие строке-шаблону функцией из либы. Это пара строк кода, большая часть которого - работа с i/o.
Автор поста оценил этот комментарий
Вот задание. Пока что сижу, разбираюсь с темой про текстовые файлы. Объясните саму суть задания пожалуйста. Как я понял, подстрока - это часть строки?
раскрыть ветку (1)
Автор поста оценил этот комментарий
Вики говорит, что для строки "вики говорит" составляющие "ви", "ик", "ки" - подстр'оки подстрок'и "вики". Т.е. - подстрока текста - дробная часть строки, состоящей из набора символов, не разделенных символом пробела между собой. В задании хотят на выходе поиск по шаблону в файле. Способ указания файла для обработки и шаблона - не указан, проше всего заранее указать в исходнике. Обрабатываем шаблон, выясняем какие именно символы будем искать. Обрабатываем текстовый файл в цикле, посимвольно, от начала к концу, сравнивая посимвольно с шаблоном. При нахождении совпадающего символа - определяем количество непустых символов до и после найденного, выводим на экран. Общий алгоритм вроде бы правильный.
Автор поста оценил этот комментарий
И как примерно должна выглядеть работа программы?
Программа принимает значение шаблона, а потом уже по этому шаблону пробегает по всему текстовому файлу?
раскрыть ветку (1)
Автор поста оценил этот комментарий
Верно. Принимаешь значение шаблона. Считываешь первую строку в буфер и разбираешь, отвечает выводишь не отвечает не выводишь.
Автор поста оценил этот комментарий
Блин, из-за того что спать хочу, даже не смог правильно вопрос задать... Вообще херню написал.
Объясните что такое шаблон в си. Где можно про него почитать? В учебниках вроде про такие шаблоны не написано. Гугл вообще пишет, что шаблонов в Си нет... И как вообще такой шаблон использовать? Объясните на примере одного символа.
раскрыть ветку (11)
Автор поста оценил этот комментарий
Шаблон, в данном случае - образец для построения результирующих данных. Т.е. для строки " 1111 ыаыаыаыаыасловоываыва 2222" по выполнении программы с запросом "*слово", результатом будет "ыаыаыаыаыасловоываыва"
раскрыть ветку (2)
Автор поста оценил этот комментарий
Тьфу. Спать мне пора. программа должна выдать все строки, в которых содержатся подстроки, содержащие элемент шаблона. результатом будет вся строка. Тобишь - чтение строки, и поиск в ней того, что нужно по шаблону. Найдено совпадение - выводим в результат. Не найдено - читаем следующую строку. И так до eof.
раскрыть ветку (1)
Автор поста оценил этот комментарий
Спасибо, постараюсь разобраться)
Автор поста оценил этот комментарий
Допустим у тебя есть файл с 4 строками.
1 строка: 8bvaacv,&3
2 строка: njjjbacdeeqddd83jj
3 строка: df3rfjd.23*ds#kjjj
4 строка: nb^wdz:d sd_d2kdaaaj

Вводишь " . " у тебя на экран должно вывести по одному любому символу из каждой строки.
Например:
v
8
:
^
Если введешь какой-нибудь любой символ и добавишь к нему *. То все подстроки с его содержанием. Например вводишь *j
(пустая строка)
jjj jj
j jjj
j
Если введешь любой символ и добавишь к нему + , то должно вывести рандомное кол-во этого символа с каждой строки.
Например ввел a+
aa
a
a
Если введешь любой символ и добавишь к нему $, то будет то же самое как во 2 пункте, но только для последней под строки
Например введешь j$
Должно выйти
jj
jjj
j
Скобками () можно объединить несколько символов в один.
А квадратными [] указать набор символов, в этом случае символ из скобок выбирается один рандомно

Думаю что так.
раскрыть ветку (5)
Автор поста оценил этот комментарий
Он должен выводить всю строку, если встретит символы из шаблона. Тогда я не понимаю смысла первого шаблона.. Значит он в любом случае будет выводить все строки?
раскрыть ветку (4)
Автор поста оценил этот комментарий
почему всю строку? В задаче сказано, что при вводе . выводится один любой символ
раскрыть ветку (2)
Автор поста оценил этот комментарий
"Необходимо выдать на экран все строки, включа-
ющие в себя подстроки, соответствующие заданному шаблону."
Вроде все нужно вывести.
раскрыть ветку (1)
Автор поста оценил этот комментарий
Получается при вводе . выводятся все НЕПУСТЫЕ строки (которые содержат хотя бы один символ)
Автор поста оценил этот комментарий
точно, верно. Не так прочитал. Получается при вводе . выводятся все НЕПУСТЫЕ строки. А так эта задача состоит в том, чтобы просто тупо искать строки содержащие заданные символы. Например взяв те же строки, что я писал выше, то при вводе a+ выведутся все строки роме предпоследней
Автор поста оценил этот комментарий
Допустим у тебя есть файл с 4 строками.
1 строка: 8bvaacv,&3
2 строка: njjjbacdeeqddd83jj
3 строка: df3rfjd.23*ds#kjjj
4 строка: nb^wdz:d sd_d2kdaaaj

Вводишь " . " у тебя на экран должно вывести по одному любому символу из каждой строки.
Например:
v
8
:
^
Если введешь какой-нибудь любой символ и добавишь к нему *. То все подстроки с его содержанием. Например вводишь *j
(пустая строка)
jjj jj
j jjj
j
Если введешь любой символ и добавишь к нему + , то должно вывести рандомное кол-во этого символа с каждой строки.
Например ввел a+
aa
a
a
Если введешь любой символ и добавишь к нему $, то будет то же самое как во 2 пункте, но только для последней под строки
Например введешь j$
Должно выйти
jj
jjj
j
Скобками () можно объединить несколько символов в один.
А квадратными [] указать набор символов, в этом случае символ из скобок выбирается один рандомно

Думаю что так.
Автор поста оценил этот комментарий
шаблон это термин в данном случае не Си, а самой задачи
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества