Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2011, 15:25   #1
GamBitFRK
Пользователь
 
Регистрация: 17.12.2011
Сообщений: 78
По умолчанию Задачи на строки и множества паскаль

Доброе утро! Есть не большое зависание в плане написания программы на Pascal

1) В каждом слове, имеющем не четную длину, сделать все нечетные буквы заглавными

В принципе знаю, что во вложенном цикле буду просматриваться слова, там же будут изменяться в зависимости от длины, но реализовать это не получается, запрещено пользоваться всеми процедурами строк кроме lenght

2) Найдите все слова первой строки, которые встречаются во второй и выведи их в алфавитном порядке.

Тут знаю что надо делать через массив строк, но с телом мучаюсь

3) Задача про множества - знаю что легкая, торможу полностью

Дана строка, вывести на экран знаки препинания, которые встречаются хотя бы 2 раза

Заранее спасибо
GamBitFRK вне форума Ответить с цитированием
Старый 17.12.2011, 15:49   #2
_Alerter_
Пользователь
 
Регистрация: 25.05.2011
Сообщений: 89
По умолчанию

Цитата:
1) В каждом слове, имеющем не четную длину, сделать все нечетные буквы заглавными
сделать цикл while do, ввести переменную-счётчик i и пока не достигнут конец строки заменять i-тый символ, если он не заглавная буква, на символ, отстоящий на 32 позиции левее текущего(используя Chr и Ord). i увеличивать на 2 в конце каждой итерации.
Цитата:
2) Найдите все слова первой строки, которые встречаются во второй и выведи их в алфавитном порядке.
Можно разбить строки на два массива строк, состоящих из слов в той и другой строке, а можно и не разбивать, а просто просматривать сами строки, считая концом слова пробел, запятую, точку и т.д.
Цитата:
Дана строка, вывести на экран знаки препинания, которые встречаются хотя бы 2 раза
Просматривать строку, если встретили знак препинания и его нет в множестве, то добавить его в множество и просмотреть строку до конца на наличие повтора этого знака. Повторять пока не достигнем последнего символа строки.
_Alerter_ вне форума Ответить с цитированием
Старый 17.12.2011, 16:02   #3
GamBitFRK
Пользователь
 
Регистрация: 17.12.2011
Сообщений: 78
По умолчанию

Спасибо огромное)
GamBitFRK вне форума Ответить с цитированием
Старый 17.12.2011, 16:03   #4
GamBitFRK
Пользователь
 
Регистрация: 17.12.2011
Сообщений: 78
По умолчанию

Только не понятно, зачем сдвигать на 32 позиции при просмотре?
GamBitFRK вне форума Ответить с цитированием
Старый 17.12.2011, 16:05   #5
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

зачем сдвигать на 32 позиции
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 17.12.2011, 18:33   #6
GamBitFRK
Пользователь
 
Регистрация: 17.12.2011
Сообщений: 78
По умолчанию

Спасибо, да если не трудно, пожалуйста, реализуйте 1 и 3 программу в коде, просто что то не выходит
GamBitFRK вне форума Ответить с цитированием
Старый 17.12.2011, 19:31   #7
_Alerter_
Пользователь
 
Регистрация: 25.05.2011
Сообщений: 89
По умолчанию

Покажите, что не выходит
_Alerter_ вне форума Ответить с цитированием
Старый 17.12.2011, 19:36   #8
GamBitFRK
Пользователь
 
Регистрация: 17.12.2011
Сообщений: 78
По умолчанию

Ну в 1 задаче не понятно, как записать, в зависимости от длины слова замену на большую букву, давже думаю третью не надо, там легко, а вот первую, если не трудно, напишите, пожалуйста
GamBitFRK вне форума Ответить с цитированием
Старый 17.12.2011, 20:52   #9
GamBitFRK
Пользователь
 
Регистрация: 17.12.2011
Сообщений: 78
По умолчанию

Со 2 задачей, тоже глючки, с массивами и просмотром слов
GamBitFRK вне форума Ответить с цитированием
Старый 17.12.2011, 22:58   #10
_Alerter_
Пользователь
 
Регистрация: 25.05.2011
Сообщений: 89
По умолчанию

для первой задачи
Код:
i := 1;
while i <= length(str) do
begin
   if (Ord(str[i]) >= Ord('a')) and (Ord(str[i]) <= Ord('z')) then
       str[i] := Chr(Ord(str[i]) - 32);
   i := i + 2;
end;
Для второй задачи сделал перевод первой строки в массив строк, состоящий из слов первой строки, если разберёшься с этим, сможешь сделать и остальную часть:
Код:
var
   str1, str2 : string;
   strs : array [1 .. 100] of string;
   i, j, k : integer;

procedure DeleteSpace(var str : string);
var
   i : integer;
begin
   i := 1;
   while i < length(str) do
   begin
      if (str[i] = ' ') and (str[i + 1] = ' ') then
         Delete(str, i + 1, 1)
      else
         i := i + 1;
   end;
end;

begin
readln(str1);
DeleteSpace(str1);
DeleteSpace(str2);
i := 1;
j := 1;
k := 1;
while i <= length(str1) do
begin
  if (str1[i] <> ' ') and (str1[i] <> ',') and (str1[i] <> '.') then
  begin
     strs[j, k] := str1[i];
     k := k + 1;
  end
  else
  begin
     strs[j, 0] := Chr(k - 1);
     j := j + 1;
     k := 1;
  end;
  i := i + 1;
end;
strs[j, 0] := chr(k - 1);
for i := 1 to j do
writeln(strs[i]);
readln
end.

Последний раз редактировалось _Alerter_; 17.12.2011 в 23:37.
_Alerter_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
3 задачи: на простые числа, на матрицу и на обработку строки. Дорешать. Паскаль gena1128 Помощь студентам 6 02.06.2011 18:21
Паскаль(строки и множества) sllh_111 Помощь студентам 7 28.11.2010 17:44
Паскаль. Задачи. (Графика, БД, строки) Aferist Помощь студентам 16 19.02.2010 17:48
Паскаль, 2 задачи на строки, 1 на процедуру Qfast Помощь студентам 15 25.12.2008 21:58