Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 07.02.2011, 20:39   #1 (permalink)
павля
незнайка:)
 
Аватар для павля
 
Регистрация: 29.01.2011
Сообщений: 124
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 152
Unhappy Помогите, пожалуйста, написать программку на Паскале

условие таково: дана строка символов S. вывести слова по возрастанию...

если можно с пояснениями

заранее благодарна...
павля вне форума   Ответить с цитированием

Старый 07.02.2011, 20:39
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Однородные проблемы уже обсуждались, пожалуйста, обратите на них внимание

Пожалуйста, помогите написать программку. Pascal Free
Помогите пожалуйста написать проги в паскале

Старый 07.02.2011, 20:48   #2 (permalink)
Vladimir_S
Специалист
 
Аватар для Vladimir_S
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 26,343
Сказал(а) спасибо: 288
Поблагодарили 507 раз(а) в 165 сообщениях
Репутация: 91953
По умолчанию

Цитата:
Сообщение от павля Посмотреть сообщение
условие таково: дана строка символов S. вывести слова по возрастанию...
По возрастанию чего? И о каких словах речь? Строку, что ли, на слова разбить, или как?
__________________
With Mozilla Firefox - straight to communism!
Vladimir_S на форуме   Ответить с цитированием
Старый 07.02.2011, 20:56   #3 (permalink)
павля
незнайка:)
 
Аватар для павля
 
Регистрация: 29.01.2011
Сообщений: 124
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 152
По умолчанию

нууу...вот в строке несколько слов(символов) через пробел...надо по видимому посчитать количество символов(букв) в каждом слове, и сравнивая расположить по возрастанию(увеличению символов)...
павля вне форума   Ответить с цитированием
Старый 07.02.2011, 21:26   #4 (permalink)
Vladimir_S
Специалист
 
Аватар для Vladimir_S
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 26,343
Сказал(а) спасибо: 288
Поблагодарили 507 раз(а) в 165 сообщениях
Репутация: 91953
По умолчанию

Вот:
Код:
VAR
 S,S1:String;
 S2:Array[1..130] of String;
 i,i1,i2,j,k:Byte;
BEGIN
 WriteLn('Enter the string:');
 ReadLn(S);
 WriteLn;
 i:=0;
 k:=0;
 Repeat
  Repeat
   Inc(i);
  Until S[i]<>' ';
  i1:=i;
  Repeat
   Inc(i);
  Until (S[i]=' ') or (i=Length(S));
  If S[i]=' ' then i2:=i else i2:=i+1;
  Inc(k);
  S2[k]:=Copy(S,i1,(i2-i1));
 Until i=Length(S);
 WriteLn;
 WriteLn;
 For i:=1 to k do
  For j:=1 to k-i do
   If Length(S2[j])>Length(S2[j+1]) then
    begin
     S1:=S2[j+1];
     S2[j+1]:=S2[j];
     S2[j]:=S1;
    end;
 For i:=1 to k do
  Write(S2[i]+' ');
 WriteLn;
 ReadLn;
END.
Пояснения:
1. Вводится строка (которая даже может начинаться с пробелов).
2. Организуется цикл последовательного перебора символов строки.
3. Последовательно вычленяются слова. Сперва ищется номер символа, не являющегося пробелом (i1), затем перебор продолжается до первого пробела или конца строки. Номер такого символа есть i2. Таким образом, определяются номера символов-границ очередного слова.
4. Очередное найденное слово вычленяется командой Copy и заносится в массив S2.
5. Методом "пузырька" массив упорядочивается по длинам слов.

Устроит?
__________________
With Mozilla Firefox - straight to communism!
Vladimir_S на форуме   Ответить с цитированием
Старый 07.02.2011, 22:17   #5 (permalink)
павля
незнайка:)
 
Аватар для павля
 
Регистрация: 29.01.2011
Сообщений: 124
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 152
По умолчанию

оо...да да да....конечно...спасибочки огромное вам

а не могли бы вы описать все переменные использующиеся в этой программе
павля вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 07.02.2011, 22:22   #6 (permalink)
Vladimir_S
Специалист
 
Аватар для Vladimir_S
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 26,343
Сказал(а) спасибо: 288
Поблагодарили 507 раз(а) в 165 сообщениях
Репутация: 91953
По умолчанию

Цитата:
Сообщение от павля Посмотреть сообщение
оо...да да да....конечно...спасибочки огромное вам

а не могли бы вы описать все переменные использующиеся в этой программе
Так а там их всего ничего. S - исходная строка, S1 - вспомогательная строковая переменная, используемая в цикле упорядочения массива, S2, i1, i2 описаны выше в комментариях к программе, остальные (i, j, k) - счетчики да переменные циклов.
__________________
With Mozilla Firefox - straight to communism!
Vladimir_S на форуме   Ответить с цитированием
Старый 07.02.2011, 22:32   #7 (permalink)
павля
незнайка:)
 
Аватар для павля
 
Регистрация: 29.01.2011
Сообщений: 124
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 152
По умолчанию

ойой...не то...извините..."ОПЕРАТОРЫ" если можно...хотя спасибочки и за них огромненькое
павля вне форума   Ответить с цитированием
Старый 07.02.2011, 22:43   #8 (permalink)
Vladimir_S
Специалист
 
Аватар для Vladimir_S
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 26,343
Сказал(а) спасибо: 288
Поблагодарили 507 раз(а) в 165 сообщениях
Репутация: 91953
По умолчанию

Цитата:
Сообщение от павля Посмотреть сообщение
ойой...не то...извините..."ОПЕРАТОРЫ" если можно...хотя спасибочки и за них огромненькое
Из операторов интерес представляет только Copy. Это функция, значением которой является новая строка, представляющая собой копию фрагмента исходной строки, начинающегося с номера (напр.) i1 и имеющего длину в n символов. Таким образом, если S - исходная строка, R - содержащийся в ней фрагмент, то справедливо R:=Copy(S,i1,n);
Остальные использованные операторы - самые ходовые, о них можно прочитать в абсолютно любом руководстве по Паскалю.
__________________
With Mozilla Firefox - straight to communism!
Vladimir_S на форуме   Ответить с цитированием
Старый 07.02.2011, 23:03   #9 (permalink)
павля
незнайка:)
 
Аватар для павля
 
Регистрация: 29.01.2011
Сообщений: 124
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 152
По умолчанию

спасибочьки большое...безмерно благодарна вам за всё....вы мне очень помогли....СПАСИБО
павля вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 11:51.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.