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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2013, 12:04   #1
idzaya2311
 
Регистрация: 21.11.2013
Сообщений: 7
Лампочка Строковый тип

Даны символы s1, s2, … Известно, что символ s1 отличен от восклицательного знака и что среди s2, s3,. .. есть по крайней мере один
восклицательный знак. Пусть s1, …, sn – символы данной последовательности, предшествующие первому восклицательному
знаку (n заранее неизвестно). Выяснить, имеется ли среди s1, …, sn пара соседствующих одинаковых символов.

в выводе выдает такое:

Код:
var
  S:string;
  i:integer;

begin
  SetconsoleCP(1251);
  SetconsoleOutputCP(1251);

 writeln('Введите строку символов');
 read(S);
 if S[1]='!' then
   S[1]:='0';

  for i:=1 to length(S) do
    begin
    if S[i]=S[i+1] then
   writeln(S[i],' ',' true ')
    else
      writeln(' false ');

    end;

readln;
readln;
end.
правильный ли у меня вообще код?
idzaya2311 вне форума Ответить с цитированием
Старый 30.11.2013, 12:20   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

нет. не правильный.
я бы рекомендовал такой код:
Код:
var
  ch, chPrev : char;
  isPovtor : boolean;

begin
  SetconsoleCP(1251);
  SetconsoleOutputCP(1251); 
  
   isPovtor := false;

   writeln;
   write('Введите строку символов (воскл.знак для окончания ввода: ');
   read(ch);
   chPrev := ch;
   while ch<>'!' do begin
     Read(ch);
     if ch=chPrev then isPovtor := true;
     chPrev := ch;
   end;

   if isPovtor then
     writeln(' в строке есть пара соседствующих одинаковых символов.')
    else
     writeln(' в строке нет пары соседствующих одинаковых символов.');

   Readln;
   Readln;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 30.11.2013, 12:29   #3
idzaya2311
 
Регистрация: 21.11.2013
Сообщений: 7
По умолчанию

Спасибо за код))
но у меня вопросы, так как я же учусь этому и мне нужно знать что да как.

как программа видит одинаковые символы? и обязательно ли в конце ставить Восклицательный знак?
idzaya2311 вне форума Ответить с цитированием
Старый 30.11.2013, 12:48   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
как программа видит одинаковые символы?
программа ничего "не видит"! у неё и глаз то нет.
Программа осуществляет обработку информации (данных) по заложенному в неё алгоритму.
В том, коде, который я предложил Вам примерно такой алгоритм поиска одинаковых символов-соседей: символ вводится (сохраняется) в переменной ch (типа char = один символ). После проверки, равен ли введённый символ предыдущему символ
(это выполняет код if ch=chPrev then )
мы сохранем это символ как предудущий для следующего цикла обработки.

если введённый символ равен предыдущему, это означает, что в строке есть как минимум одна пара одинаковых соседних символов.
вот и всё.
стало понятнее?

Цитата:
и обязательно ли в конце ставить Восклицательный знак?
да. Это нам задано в условии задачи:
Цитата:
Известно, что символ s1 отличен от восклицательного знака и что среди s2, s3,. .. есть по крайней мере один
восклицательный знак.
более того, мы должны проверить только
Цитата:
символы данной последовательности, предшествующие первому восклицательному
знаку
Serge_Bliznykov вне форума Ответить с цитированием
Старый 30.11.2013, 13:02   #5
idzaya2311
 
Регистрация: 21.11.2013
Сообщений: 7
По умолчанию

Спасибо вам огромное
за такое объяснение, очень приятно ^^
idzaya2311 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
СТРОКОВЫЙ ТИП христик Помощь студентам 1 03.12.2011 22:16
Строковый тип McJordan Паскаль, Turbo Pascal, PascalABC.NET 1 26.08.2010 17:22
Строковый тип dusya9992 Паскаль, Turbo Pascal, PascalABC.NET 1 26.08.2010 00:53
Строковый тип DrDre Паскаль, Turbo Pascal, PascalABC.NET 1 26.08.2010 00:32
Строковый тип Koshmarick Помощь студентам 8 05.11.2009 12:37