сап двач, помоги решить задачку по программированию на плюсах. нужно создать текстовый файл, который содержит строки произвольной длинны, и дополнить все строки символом "*" до самой длинной строкихелпаните аноны!
Ищешь модуль, который делит файл на массив/коллекцию строкБерешь номер самой длиннойМеняешь через стандартный стринг.х \р\н на (звездочка) \р\н
>>204517372>Ищешь модуль, который делит файл на массив/коллекцию строкУууууууууууууууууууу. Анон, который подключает либы из милиарда строк к проекту в 100, ты?
>>204517235 (OP)О, раз такой тред, то спрошу тоже про плюсы.Как мне считать из файла все символы, начиная n-строки и до m-строки? Всё, что до и после не нужно, только в интервале.
>>204517596Ну, да, на чистом Си или плюсах около часа писать. Парсер легкий, просто придется любое действие прописывать. Тут есть работа с динамическим выделением памяти
>>204517852Ну, там два цикла будет. Первый цикл - читаем строки и ищем самую длинную. Второй - опять читаем строки, прописываем недостающие символы и пишем в файл.
>>204517953Спасибо, капитан очевидность.То что все это нужно писать тебя не смущает?Абу благословил этот пост.
>>204518056с одногруппниками особо не поддерживаю контактя не выкупаю, ибо не знаю, как обратится к данным файлам, после их записи, то бишь, как их считать и исправить
>>204518133Двачую джависта, любой студент, который планирует работать по специальности напишет эту хуйню за 15 минут
>>204518299Что сложного?Читаешь строку, дописываешь нужное число '*', тут же пишешь в поток записи.Чтобы узнать максимальную длину строки, надо пройти по файлу, читать строки от '\n' до '\n' и обновляешь, если надо максимальную длину.
>>204518299Гуглить пробовал? Любая задачка уже решена до тебя, возможно по частям. Не знаешь как обратиться к файлу - загугли. Не знаешь алгоритма - загугли. Только потом задавай вопросы на ресурсках. На счет алгоритма тебе уже подсказали выше
>>204517662Задание не выглядит сложным. Концепция и идея реализация сразу в голове появляется. Алгоритм примерно такой: считаем количество символов в 0-й строке, присваиваем это значение переменной max_ch_str, а переменной longest_str - cur_str . Затем повторяем проход с каждой следующей строкой, сравнивая cur_ch_str с max_ch_str, если первая окажется меньше второй, то выходим из цикла, иначе парсим до EOF. Потом вставляем в каждую строку символ звездочки, где заключительной строкой для вставки будет longest_str. Примерно так. Вроде, несложно, да? Но вот когда ты начнешь выполнять шаг с вставкой звездочек, ты поймешь, что тебе придется выделять память на куче для сохранения всех строчек файла, которые идут после строки, в которую ты будешь вставлять символ звездочки, а затем, надо будет перезаписывать файл, приписывая их. И так повторять столько раз, сколько нужно звездочек. Либо можно сразу весь файл залить в кучу, там есть парсить и realloc'ать на +1 байт для каждой звездочки. А потом перезаписать результат в файл. Короче, тут на час точно
>>204517235 (OP)Ты че даун?Ищешь переходы на новую строку то есть символы "\n" и добавляешь перед ним свою ебучую звездочку.
>>204518544>И так повторять столько раз, сколько нужно звездочек.Смотри: выделяем память сразу под все недостающие звездочки. Зачем тебе для каждой отдельной '*' выделять память?
>>204518669Ты меня не понял, мы выделяем память не для звездочек, а для строк из файла. Если надо, объясню подробнее
найс далбаебы файл в память загоняют как говорится дай макаке 80 гигов оперативки ей все равно не хватит чтобы запустить хеловорлдрешайте с учетом что это текстовый файл на 50гб например
>>204518699Значит, самое время писать маленький функции для выполнения маленьких задач. Если тебе надо прочитать строку - пиши функцию. Если тебе надо посчитать количество символов - пиши функцию.
>>204518710Сори, я сишник. Плюсы знаю поверхностно, но функционал ведь там обратно совместим с сишным. Тем более, если у него в файле будет больше 255 символов, то все равно придется выделять память в куче для всех строк, что не так?
>>204518699Неправильно гуглишь, Дядя Фёдор. Сначала садись, начинай писать, а если какой-то момент не понятен(именно момент, а не вся задача), то идёшь к вышеупомянутому.
>>204518802Ну, давай свое решение, умник. Как ты собираешься изменять данные в файле, не закинув их в ОЗУ?
>>204518802Сначала надо закупиться винтами, потому что надо решать задачу из расчета файла на 500 петабайт.
>>204518909В плюсах что ли стринг memory-flexible и память под него выделяется на стеке? Или к чему ты клонишь?
>>204518993Не знаю как там на ваших крестах, но вот тут описывается довольно удобный способ работы со строками:https://ru.stackoverflow.com/questions/258989/%d0%a7%d1%82%d0%b5%d0%bd%d0%b8%d0%b5-%d1%84%d0%b0%d0%b9%d0%bb%d0%b0-%d0%bf%d0%be%d1%81%d1%82%d1%80%d0%be%d1%87%d0%bd%d0%be
>>204519055файл занимает 1тб и в нем всего одна строка с разделителями эти советчики с гетлайн хуев пососут ммм вкусно
>>204519286будешь ждать правильный текстовый файл на белом коне чтобы он наконец лишил тебя девственности щеноК? хррр тьфу
>>204519055Так сама фишка в том, чтобы потом эту измененную строку записать в файл. Для этого и нужно сейвить оставшиеся строки в кучу, перезаписывать файл измененной строкой, дописывать оставшиеся из кучи. А по твоей ссылке другого решения именно для этой проблемы нет. Там просто вычленяют строку, модифицируют ее и печатают в консоль
>>204519403https://metanit.com/cpp/tutorial/8.3.phpПишем в поток. А где этот поток висит - дело десятое.
>>204518802>>204519060Так как изменять данные в файле, не сохраняя постмодифицированную часть в озу, чтобы ее потом дописывать после измененного символа? КАААААК? Вот, есть у тебя строка 123456789. Тебе нужно между 2 и 3 вставить символ 0. Как ты это сделаешь иначе? Как? Как?
>>204519530Поток обычно на харде висит. То есть мы вместо засирания ОЗУ будем засирать накопитель? А если файл на 10 гб, то мы теряем в скорости пиздец. Это очередная проблема уровня speed vs ram
>>204517235 (OP)QString fileName = "zalupa.txt"QFile file(fileName);if (file.open()) { auto data = fileReadAll(); auto stringList = data.split("\n"); auto findIterator = std::max_element(stringList .begin(), stringList.end(), [](const QString & a, const QString & b){ return a.lenth() < b.lemgth()}); int maxLength = (findIterator).length(); for_each(stringList .begin(), stringList .end(), [](QString &str){ int delta = maxLength - str.length(); QString padding_str(delta , '') str.append(padding_str); }}Чисто по памяти набросал, на плюсах я уже больше года не пишу, но должно быть примерно так.
>>204517235 (OP)Я так понимаю должно быть что-то типа:ААа*АааАааааНа плюсах не напишу, но это вроде простое задание. Тебе поможет \n, наверное
>>204519559сохранять информацию во временных файлахдля сортировки уже есть готовые алгоритмыдля задачи вроде сабжа нужно немного модифицировать
Пиздец, задача уровня первого класса, и то не можешь решить. Нахуй ты вообще учишься в этой шараге даун, иди строй дома с таджиками.
>>204519741Конкретно лабу ОПа можно любым способом решить. А если мы уже отошли от этой проблемы и анон начал выебываться, что писать оставшиеся строки в ОЗУ - моветон, то я ждал от него концептуально другой идеи по модификации строк, а не просто вариант с тем, что вместо ОЗУ надо эти стоки пушить в поток на харде
>>204519661Так временные файлы в любом случае на харде создаются. Просто ты вместо озу будешь сохранять строки на жд (или ссд). Выгоднее по ram, но значительно медленнее. Так что зависит от конкретного случая и задачи. Если файл для парсинга меньше 32 гб (на норм сервах стоит 64 гб озу+), то кидаем в озу, иначе - в поток на накопителе
>>204519886Ну, ты однохуйственно будешь это говно проталкивать в кишки потока записи. А хуле делать-то?
>>204519987Ааааааа, ебать, сразу в stdout писать, и там их копить. Понял. Точно, мы ведь из ОЗУ все равно потом туда будем толкать их. Точно, тогда надо сразу в поток вывода все скидывать
>>204520110Хотя не, чет я хуйню сказал. Льем строки в ОЗУ, а потом просто флашим их в поток (которым и будет наш исходный файл). Так что запись в промежуточый (тот же stdout, например) будет работать медленее. Собственно, зависит от задачи
>>204519650О как плюсы эволюционировали за последние 15 лет, уже на нормальный язык похоже. Надеюсь, что и миллион всяких ебанутых особенностей пофиксили, типа невозможности передать вектор не-const объектов в функцию, которая ждёт аргумент типа const vector<const T*>&.
>>204519987Так что я понял, в каком ты смысле имел в виду, что в любом случае придется проталкивать данные в поток записи. То есть, да, в конечном счете придется. Но промежуточно хранить данные мы можем либо в озу, либо на харде. В этом суть
>>204520467Ну так напиши. Я вот пишу клиент-серверную игру. Только более-менее закончил нет с инфраструктурой, сейчас начну описывать хоть какой-нибудь геймплей.
>>204520546Времени нет заниматься полноценными проектами. Правда, как раз недавно возникла острая потребность в заработке, поэтому придется, видимо, писать какой-нибудь бэк на php удаленно в сводобные часы а хули? Для сишников все вакансии на фуллтайм
>>204521262ну тогда надо читать файл чанками, делать в чанках выравнивание и мёржить чанки меняя длину.
>>204517235 (OP)Ебать, это же хуйня для школьников. Если ты это сделать сам не можешь, то пошел нахуй на завод
>>204521782Во-первых, у тебя сначала должен выполняться fwrite, а не fputs. Во-вторых, ты сделал не по ТЗ. Нужно перезаписывать в исходный файл, а не в новый поток
>>204517235 (OP)Для начала, у тебя уже есть строки, циклом перебераешь их и находишь самую длиинную, записываешь это значение в переменную, дальше опять циклом перебераешь каждую масив этих строк, в этом цикле спрашиваешь, ровняеться ли длинна этой строки значению сохраненной, если меньше, то отнимаешь от длинны большой строки эту, и опять цикл пускпешь, на разнице этих строк который будет добавлять “*” в конец после каждой итерации, и потом возвращаешь готовую строку
>>204522128мне абсолютно не всралось это программирование, зачем оно мне, если оно никак не будет связано с моей будущей профессией?
>>204523405Так что, ОП? Тебе еще нужна помощь? Напишу фулл рабочий код. 300 рублей. Кидай телегу, если что. Сори, времена такие, деньги нужны
>>204523478Дед, какие современные игры? Очнись, этого объема уже не хватает, чтобы сраный хром запустить.
>>204523405Так что, ОП? Тебе еще нужна помощь? Напишу фулл рабочий код. 200 рублей. Кидай телегу, если что. Сори, времена такие, деньги нужны
>>204523518>вроде как кодит>вроде как>вроде>нужны деньги BRUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUH!
>>204517235 (OP)Блядь, да сколько можно-то...Читай внимательно и вникай:Делаешь двойной указатель на char, смотришь как базовыми средствами плюсов читать и записывать текстовые файлы, делаешь цикл, который при каждом следующем символе новой строки генерит новую строку в том массиве, а потом во всех элементах того массива в конце впиливаешь новый char в котором конкатенируешь основную строку и символ "". В С ЁЧто тут сложного? Синтаксис понять блять? Если да, то иди и читай ёбаную литературу, я уже заебался всем макакам здесь пояснять, что нужно уметь читать базисы и вкуривать, что написано хотя бы в основной литературе, вы заебали сюда лезть со своими лабораторками первого курса шараги.А если для тебя сложно осилить полторы статьи без копипаст со стаковеофлов, то не лезь нахуй оно тебя сожрёт.мимо-горящий гейм-девелопер на плюсах