Задача из легких
Сейчас много изучающих программирование, особенно среди школьников, осознавших, что компьютер это не только игрушки, но и мощный аппарат для написания полезных программ. Обычное дело, когда на форумах начинающие программисты обращаются к более продвинутым «кодерам» с просьбой что-либо разъяснить. Или берутся самостоятельно изучать разные учебники. Но теория теорией, а практика все-таки не помешает.
Предлагаю подборку задач, решая которые, можно научиться много чему полезному в программировании (не говорю уже об элементарном расширении кругозора). Если вы крутой кодер, которому моря по колено, возможно, эти задачи покажутся вам примитивными. Но если вы сомневаетесь в своих силах, то предлагаю прочесть эту статью и сделать соответствующие выводы.
Недавно передо мной встала одна проблема: как упорядочить текст (слова) в переменной типа string по алфавиту? Как бы и не особая проблема, но оказалось, для кого как. Особенно для начинающих программистов. Поэтому вот такая обрисовалась задача.
Задача №1:
Дана строка, в которой находятся, допустим, пять слов (количество несущественно, хоть миллион), разделенных пробелом. Задача состоит в том, чтобы упорядочить слова по алфавиту средствами Паскаля (Object Pascal).
Решение:
Эту задачу можно решить многими способами, но лучше всего создать массив из этих слов, отсортировать, а затем вывести полученный массив на экран. Для решения этой задачи будем использовать среду разработки Delphi 7.
Поначалу нужно написать подпрограмму для преобразования строки из слов в массив. Допустим, мы напишем процедуру. У меня получилось такое:
Далее нужно отсортировать этот массив любым из известных вам методов. Не мудрствуя лукаво, используем самый простой. В итоге у нас получится что-то вроде этого:
В принципе, наша задача решена. Но благо мы пишем на Delphi, создадим еще одну подпрограмму вывода массива, например, в компонент Memo. Тогда в нашу программу добавится еще одна процедура:
И еще… Чтобы уже наверняка разобраться с задачей :-), представим, что все эти действия будут происходить при нажатии на кнопку Button1:
Вместо эпилога
В ходе решения задачи мы затронули некоторые аспекты программирования, такие как работа со строками, массивами. Надеюсь, время, которое ушло а прочтение данного материала (и, смею надеяться, его реализации), не потрачено вами даром.
Эту задачу можно было решить и без использования массива: берем две подстроки, в нашем случае два слова, заносим их в две разных переменных, а затем попарно их сравниваем и сортируем. Но этот метод (ИМХО) не очень рационален, есть множество других вариантов, получше.
И главное в строке может быть сколь угодно много слов. Для того чтобы увеличить число обрабатываемых слов, нужно просто увеличить значение константы Count. Например, с пяти до ста, или более. Собственно, это и будет вашим заданием. Подсказка: можно объявить динамический массив, в процедуре StringToArray узнать количество слов, в соответствии с ним установить размерность массива (при помощи стандартной подпрограммы SetLenght), а потом уже его заполнить. Это задание очень легкое, поэтому оставляю вас с ним наедине.
P.S. Если у вас получилось решение лучше и компактнее, чем у меня, прошу поделиться. Удачи вам в ваших начинаниях… и, собственно, продолжениях :-).
|