SFXack.narod.ru - софт-сайт команды SFXack

| |
Еще чтото

Задача из легких

Автор: Virpool


Сейчас много изучающих программирование, особенно среди школьников, осознавших, что компьютер — это не только игрушки, но и мощный аппарат для написания полезных программ. Обычное дело, когда на форумах начинающие программисты обращаются к более продвинутым «кодерам» с просьбой что-либо разъяснить. Или берутся самостоятельно изучать разные учебники. Но теория теорией, а практика все-таки не помешает.

Предлагаю подборку задач, решая которые, можно научиться много чему полезному в программировании (не говорю уже об элементарном расширении кругозора). Если вы крутой кодер, которому моря по колено, возможно, эти задачи покажутся вам примитивными. Но если вы сомневаетесь в своих силах, то предлагаю прочесть эту статью и сделать соответствующие выводы.

Недавно передо мной встала одна проблема: как упорядочить текст (слова) в переменной типа string по алфавиту? Как бы и не особая проблема, но оказалось, для кого как. Особенно для начинающих программистов. Поэтому вот такая обрисовалась задача.

Задача №1:

Дана строка, в которой находятся, допустим, пять слов (количество несущественно, хоть миллион), разделенных пробелом. Задача состоит в том, чтобы упорядочить слова по алфавиту средствами Паскаля (Object Pascal).

Решение:

Эту задачу можно решить многими способами, но лучше всего создать массив из этих слов, отсортировать, а затем вывести полученный массив на экран. Для решения этой задачи будем использовать среду разработки Delphi 7.

Поначалу нужно написать подпрограмму для преобразования строки из слов в массив. Допустим, мы напишем процедуру. У меня получилось такое:

Далее нужно отсортировать этот массив любым из известных вам методов. Не мудрствуя лукаво, используем самый простой. В итоге у нас получится что-то вроде этого:

В принципе, наша задача решена. Но благо мы пишем на Delphi, создадим еще одну подпрограмму вывода массива, например, в компонент Memo. Тогда в нашу программу добавится еще одна процедура:

И еще… Чтобы уже наверняка разобраться с задачей :-), представим, что все эти действия будут происходить при нажатии на кнопку Button1:

Вместо эпилога

В ходе решения задачи мы затронули некоторые аспекты программирования, такие как работа со строками, массивами. Надеюсь, время, которое ушло на прочтение данного материала (и, смею надеяться, его реализации), не потрачено вами даром.

Эту задачу можно было решить и без использования массива: берем две подстроки, в нашем случае два слова, заносим их в две разных переменных, а затем попарно их сравниваем и сортируем. Но этот метод (ИМХО) не очень рационален, есть множество других вариантов, получше.

И главное — в строке может быть сколь угодно много слов. Для того чтобы увеличить число обрабатываемых слов, нужно просто увеличить значение константы Count. Например, с пяти до ста, или более. Собственно, это и будет вашим заданием. Подсказка: можно объявить динамический массив, в процедуре StringToArray узнать количество слов, в соответствии с ним установить размерность массива (при помощи стандартной подпрограммы SetLenght), а потом уже его заполнить. Это задание очень легкое, поэтому оставляю вас с ним наедине.

P.S. Если у вас получилось решение лучше и компактнее, чем у меня, прошу поделиться. Удачи вам в ваших начинаниях… и, собственно, продолжениях :-).

Источник: http://mycomp.com.ua

Инфа, фуфло, ссылки
Используются технологии uCoz