Прочитал "Философия С++" Эккеля. Вроде бы теоретический запас есть, но когда что-то пытаюсь написать - тупик на чем-то вроде бы элементарном. Начал изучать алгоритмы, например, задача была написать сортировку слиянием: в книге все расписано, на псевдокоде сам алгоритм и + принцип работы функции, которая должна объединять массивы. Понятно написано, но часа 3-4 я на это потратил и в итоге ничего.
Т.е. сложно понять что и когда применять надо. Везде советы - придумать задачу и решать ее. Долго думал, но вот такого всеобъемлюющего для себя не придумал. Может здесь кто-то помочь с этим? И что еще стоит знать, что бы лучше разбираться во всем этом? В будущем интересует работать с сетями (не изучал пока, правда), файлами и БД; где требуется скорость, высокая производительность.
Не переживайте. Переход от теории к практике это всегда непросто. Для написания первой программы, как бы внимательно вы не изучали теорию, вам придется много раз обращаться к справочникам или к гуглу. Этот этап нужно просто пройти. Ничего, что написание первого кода занимает,как вам может казаться бесконечность. Главное двигаться вперед, и понимать ( хотя бы ключевые моменты ) того что вы делаете.
Кроме того можно попробовать начать с модификации примеров рабочего кода. Берите код из туториалов по интересным вам темам ( по тому же сетевому программированию огромное количество примеров как клиентов так и серверов ).
Тут уже написали про ваш пример - расскажите с чем проблема в вашем коде? Быть может стоит его разбить на несколько частей, и убедится что каждая из них работает как задумывалось.
Да, когда не с кем поговорить на эту тему, Q/A хорошо помогают.
Благодарю, этот текст натолкнул меня на отличную идею! Надо Йорика купить, что б с ним разговаривать, если что)
@khlopko Алгоритм уже немного не тривиальный, и для понимания надо его разделить на части.
1. Пусть у нас есть 2 отсортированных массива A = {a1, a2, a3, ... , an} и B = {b1, b2, ... , bk}. Тогда первый(минимальный) элемент в C = sorted(A U B) это a1 или b1.
2. Предположим a1 < b1. Достанем a1 из A и запишем в С.
Тогда С = {a1}, A = {a2, a3, ... , an}, B = {b1, b2, ... , bk}. Заметим, что A и B по прежнему отсортированы и С тоже отсортирован и все его элементы меньше чем эл-ты A и B.
3. Теперь выбор между a2 и b1.
для начала попробуйте это написать слияние для отдельных массивов.
В вашей ситуации, когда код написан но не работает нужно либо отлаживать дебаггером, либо выводить отладочную информацию в консоль - ну и разбираться в каком месте возникает ошибка. У меня не раз случалось например что при правильном алгоритме неправильно работала финальная функция вывода значения на экран, отчего казалось будто алгоритм сломан.
Если вы будете выводить значения массивов и переменных после каждого действия алгоритма - так так вы сможете при каждом запуске быстро проверить где, в каком месте что-то пошло не так, а в таких делах - понять где - 90% успеха.
@khlopko Кнопочки пока нет для ответов, но можно копировать из редактора для комментария.
Потренируйтесь работать с отладчиком. Небольшая подсказка для просмотра массива в студии.
Для понимания алгоритма очень полезно пошагово разобрать его работу на конкретном примере на бумаге.