Как развить логические мышление для решения задач?
Изучаю язык Си, решаю в книге задачи. Но в основном решение каждой задачи сводится к одному - посмотреть ее решение в интернете, потом проанализировать каждую строчку, усвоить это, а затем написать самому по сути то же самое. То есть, если я встречу эту задачу через некоторое время, я ее решу, так как я научился подобные решать.
Но дело в том, что мне хочется как-бы самому с 0 решать, а не через что-то готовое.
Если серьезно, все это меня демотивирует, что я начинаю ощущать, что программирование - это не мое (хотя придерживаюсь принципу, что всему можно научиться).
С математикой у меня все в порядке, раз уж на это пошло.
Вот если бы я решал задачи без всяких проблем, я бы наверное учился программировать днями :)
Что посоветуете для того, чтобы научиться решать задачи по программированию?
Therapyx: Напишите программу, печатающую символы входного потока так, чтобы строки текста не выходили правее n-й позиции. Это значит, что каждая строка, длина которой превышает n, должна печататься с переносом на следующие строки. Место переноса следует "искать" после последнего символа, отличного от символа-разделителя, расположенного левее n-й позиции. Позаботьтесь о том, чтобы ваша программа вела себя разумно в случае очень длинных строк, а также когда до n-й позиции не встречается ни одного символа пробела или табуляции.
IndusDev: ну хорошо, это скорее прикладная задача, где не нужна математика. Тут скорее всего просто отсутствуют знание и понимание языка, ежели "логика". В чем к примеру в этой задаче трудность для тебя(по твоему)? )
Therapyx: не совсем понимаю, что от меня требуется. Например "Место переноса следует "искать" после последнего символа, отличного от символа-разделителя, расположенного левее n-й позиции."
IndusDev: понимаешь, в программировании нету конкретно одного решения, есть решения, еще более лучшие решения. Но даже среди лучших решений бывают комфликты между лучшим в той же производительности, или лучше в плане читабильности и хорошей структуры. Такие вещи приходят только с опытом, даже опытные программисты не знают всего "наулучшего" и могут спорить про банальные вещи.
Но что тебе мешает к примеру в этом случае сделать так как ты думаешь, а потом свои решения уже выставлять на проверку и дискутировать с другими насчет более лучших методов для этой задачи. Так "осознание" придет быстрее.
1 из многих и легких решений тут к примеру было бы сделать каунтер, который бы увеличивался при каждом вводе символа, при достижении его н-ного размера, обнулять и добавлять строке перенос на новую.
Так же можно и размер всего потока проверять... Много пробелов? Ну так же делай проверку, чтобы к примеру символ на n-1 не являлся пробелов. Если да - не записывать его. Программирование не совсем математика или физика, тут больше свободы действий.
однако, прикладное применение кем-то разработанных алгоритмов тоже может приносить радость и пользу. (интересно, хотя бы один ребенок, сам, с нуля, заговорил? :))
Но в основном решение каждой задачи сводится к одному - посмотреть ее решение в интернете, потом проанализировать
хех, а потыкать ? или ты думаешь, что в твоём мозгу должна сразу возникать правильная мысль ? это результат большого опыта - видеть картину целиком и находить единственно верное решение. это мышца, которую нужно развить.
дабы не унывать и не демотивироваться, начни достигать успехов в смежной области. например, возлюби решать шахматные задачки. https://lichess.org/training