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


Ответ
 
Опции темы Опции просмотра
Старый 08.05.2014, 15:55   #51 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от pashasnuff Посмотреть сообщение
Дело в том что старый я лучше понял.
Да в новом еще проще - безо всяких упорядочений пузырьком! Просто перебираем подряд ВСЕ БУКВЫ от "б" до "р" (включая и глухие, и гласные), и если таковая содержится в множестве Found, то выводим ее на экран.
Vladimir_S вне форума   Ответить с цитированием
Старый 08.05.2014, 16:07   #52 (permalink)
pashasnuff
Member
 
Регистрация: 16.04.2014
Сообщений: 51
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Проблемки. Буква "а"
Миниатюры
1234567.png   eaaa12ea.png  
pashasnuff вне форума   Ответить с цитированием
Старый 08.05.2014, 16:17   #53 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от pashasnuff Посмотреть сообщение
Проблемки. Буква "а"
Не могу знать. Букве "а" там уж вовсе взяться неоткуда:
Миниатюры
aa01.jpg  
Vladimir_S вне форума   Ответить с цитированием
Старый 08.05.2014, 19:04   #54 (permalink)
pashasnuff
Member
 
Регистрация: 16.04.2014
Сообщений: 51
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

А вторая ошибка вылазит когда я ввожу только пробел в строку, в важем же варианте если я вводил только пробел он говорил что таких букв нет, а в моем выдает ошибку. Как исправить не знаете?
pashasnuff вне форума   Ответить с цитированием
Старый 08.05.2014, 22:03   #55 (permalink)
pashasnuff
Member
 
Регистрация: 16.04.2014
Сообщений: 51
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

И вправду буквы а нету, но вот со второй ошибкой не справился пока что
pashasnuff вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 08.05.2014, 22:06   #56 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от pashasnuff Посмотреть сообщение
А вторая ошибка вылазит когда я ввожу только пробел в строку, в важем же варианте если я вводил только пробел он говорил что таких букв нет, а в моем выдает ошибку. Как исправить не знаете?
Так, ну вот что, сударь. Вам предлагается окончательный вариант, в котором отслеживаются все мыслимые ошибки ввода, как то слишком короткая строка, наличие каких-либо символов, кроме строчных русских букв, запятых и пробелов, отсутствие запятых, ситуации, когда перед пробелом нет запятой и когда после запятой нет пробела.
Код:
Const
  Sonants:Set of Char=['б','в','г','д','ж','з','л','м','н','р'];
  Letters:Set of Char=['а'..'я']+[',']+[' '];

Var
 S:String;
 C:Char;
 i,k,N,L:integer;
 Found:Set of char;
 p,b1,b2,b3,b4,b5:boolean;

begin
 p:=false;
 while p=false do
  begin
   Writeln('Введите строку:');
   Readln(S);
   L:=Length(S);
   b1:=false;
   if L<2 then b1:=true;
   if not b1 then
    begin
     b2:=false;
     for i:=1 to L do
      if not (S[i] in Letters) then b2:=true;
    end;
   if not b1 and not b2 then
    begin
     b3:=true;
     for i:=1 to L-1 do
      if (S[i]=',') and (S[i+1]=' ') then b3:=false;
    end;
   if not b1 and not b2 and not b3 then
    begin
     b4:=false;
     for i:=1 to L-1 do
      if (S[i]=',') and not (S[i+1]=' ') then b4:=true;
    end;
   if not b1 and not b2 and not b3 and not b4 then
    begin
     b5:=false;
     for i:=2 to L do
      if (S[i]=' ') and not (S[i-1]=',') then b5:=true;
    end;
   if b1 or b2 or b3 or b4 or b5 then
     Writeln('Некорректный ввод!')
   else p:=true;
  end;
 Writeln;
 Found:=[];
 N:=1;
 i:=1;
 while (i<L-1) do
  begin
   If (S[i] in Sonants) and not (S[i] in Found) then
    begin
     C:=S[i];
     k:=i;
     while (S[k]<>',') and (k<L) do k:=k+1;
     if S[k]=',' then
      while (S[k]<>C) and (k<L) do k:=k+1;
     if S[k]=C then
      begin
       Found:=Found+[C];
       N:=N+1;
      end;
    end;
   i:=i+1;
  end;

 If N=0 then
  Writeln('Таких букв нет!')
 else
  begin
   Writeln('Результат:');
   for C:='б' to 'р' do
    if C in Found then write(C+' ');
  end;
 Readln
End.
Теперь так. Если хотите в очередной раз переделывать - в добрый путь! Но и отлаживайте сами. А то бесконечные "я вот переделал, а оно почему-то не работает" уже, знаете, утомили. Но вопросы по программе, естественно, принимаются.
Vladimir_S вне форума   Ответить с цитированием
Старый 08.05.2014, 22:23   #57 (permalink)
pashasnuff
Member
 
Регистрация: 16.04.2014
Сообщений: 51
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Так, вначале мы проверяем на корректный ввод строки а именно:
p - признак того что наша строка введена правильно
b1 - признак того что длина строки больше 2 символов( но зачем это непонятно)
b2 - признак того что рассматриваемый символ строки это не буква русского алфавита
b3 - признак того что мы нашли конец слова(после слова есть пробелы)
b4 - признак того что мы нашли конец слова(после слова нет пробелов)
b5 - признак того что мы нашли слово, а не запятые и пробелы( , , или ,,)

Так?
pashasnuff вне форума   Ответить с цитированием
Старый 08.05.2014, 22:29   #58 (permalink)
pashasnuff
Member
 
Регистрация: 16.04.2014
Сообщений: 51
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

А почему при любом вводе он пишет не правильный ввод?)
pashasnuff вне форума   Ответить с цитированием
Старый 08.05.2014, 22:38   #59 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от pashasnuff Посмотреть сообщение
Так, вначале мы проверяем на корректный ввод строки а именно:
p - признак того что наша строка введена правильно
b1 - признак того что длина строки больше 2 символов( но зачем это непонятно)
b2 - признак того что рассматриваемый символ строки это не буква русского алфавита
b3 - признак того что мы нашли конец слова(после слова есть пробелы)
b4 - признак того что мы нашли конец слова(после слова нет пробелов)
b5 - признак того что мы нашли слово, а не запятые и пробелы( , , или ,,)

Так?
Не совсем.
b1 - признак того, что длина строки больше 1 символа. Хорошенькое "непонятно"! Вы же сами всё время норовите вместо строки ввести пробел и добиться того, чтобы программа такое отрабатывала! Ну а я расширил несколько: согласитесь, что строка в 1 символ не может быть объектом программы.
b2 - правильно. Только кроме букв еще допустимыми символами являются запятые и пробелы.
b3 - признак того, что есть хотя бы одна комбинация запятая+пробел.
b4 - признак того, что нет запятых, после которых отсутствует пробел (исключение комбинаций типа "железный,лизун").
b5 - признак того, что нет пробелов, перед которыми отсутствует запятая (исключение комбинаций типа "железный лизун").
Vladimir_S вне форума   Ответить с цитированием
Старый 08.05.2014, 22:41   #60 (permalink)
pashasnuff
Member
 
Регистрация: 16.04.2014
Сообщений: 51
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Сейчас попробую найти почему всегда Некорректный ввод выдает
pashasnuff вне форума   Ответить с цитированием
Ads

Яндекс

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


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

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




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

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