Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 10.12.2015
Сообщений: 27
1

Проверить правильность написания сочетаний "жи" и "ши".Если надо, то исправить и вывести на экран

10.12.2015, 19:36. Просмотров 853. Ответов 8
Метки нет (Все метки)

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var
  s: string;
  i, k,err: byte;
 
begin
  WriteLn('Введите строку:');
  ReadLn(s);
  for i:=1 to length(s)-1 do begin 
  if (s[i]='ж') or (s[i]='ш') then begin 
     if s[i+1]='ы' then begin s[i+1]:= 'и'; end; 
     end; 
  writeln('Правильное написание строки', s) 
end;
end.
Выводит слишком много строк
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.12.2015, 19:36
Ответы с готовыми решениями:

Написать программу проверки правильности написания сочетаний "жи", "ши", "ча", "ща", "чу", "щу". Исправить ошибки
дан текст.написать программу проверки правильности написания сочетаний "жи", "ши", "ча", "ща",...

Проверить правильность написания сочетаний "жи", "ши", "ча", "ща", "чу", "щу"
дана последовательность слов. Проверить правильность написания сочетаний...

Дана последовательность слов. Проверить правильность написания слогов "жи", "ши"
Дана последовательность слов. Проверить правильность написания слогов "жи", "ши". Тема: строки

Вывести на экран фразу "Мне n лет", учитывая что при некоторых значениях n слово "лет" надо заменить на "год"
дано натуральное число n. Вывести на экран фразу "Мне n лет", учитывая что при некоторых значениях...

8
318 / 208 / 162
Регистрация: 08.12.2015
Сообщений: 861
10.12.2015, 19:42 2
Строку с выводом вынести за цикл:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var
  s: string;
  i: byte;
 
begin
  WriteLn('Введите строку:');
  ReadLn(s);
  for i := 1 to length(s) - 1 do 
  begin
    if (s[i] = 'ж') or (s[i] = 'ш') then begin
      if s[i + 1] = 'ы' then begin s[i + 1] := 'и'; end; 
    end; 
    
  end;
  writeln('Правильное написание строки: ', s)
end.
0
4191 / 1992 / 2071
Регистрация: 10.12.2014
Сообщений: 7,626
11.12.2015, 06:36 3
А если «Жи» или «шИ» встретятся с большими буквами?
А если они ни разу не встретятся в строке?
А если строка будет длиннее 255 символов? (Это же PABC.NET. Здесь строки могут быть гораздо длиннее ;–)
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
begin
  var sInsert  := ReadLnString('Введите строку:');
  var sCorrect : String := Sinsert;
  var notCorrect : array of String = ('жы', 'шы', 'Жы', 'Шы', 'жЫ', 'шЫ', 'ЖЫ', 'ШЫ');
  var Correct    : array of String = ('жи', 'ши', 'Жи', 'Ши', 'жИ', 'шИ', 'ЖИ', 'ШИ');
  var count := 0;
  for var i := 0 to notCorrect.Length-1 do
    begin
      count += (Pos(notCorrect[i], sCorrect) + Pos(Correct[i], sCorrect) > 0 ? 1 : 0);
      sCorrect := sCorrect.Replace(notCorrect[i], Correct[i]);
    end;
  if count = 0 then
    WriteLn('В введённой строке нет сочитаний «жи» и «ши».')
  else
    begin
      WriteLn('Результаты проверки на «жи-ши»:');
      if sInsert = sCorrect then
        WriteLn('Введена правильная строка.')
      else
        WriteLn('Обнаружены ошибки. Правильная строка: ', sCorrect);
    end;
end.
0
318 / 208 / 162
Регистрация: 08.12.2015
Сообщений: 861
11.12.2015, 07:12 4
Насчет 255 - паскаль как раз принимает сколько введешь в string.
Остальное - согласен
Не стал углубляться, поскольку озвучена проблема была что много выводит ответов.
Может автор топика озвучит свои мысли? )))
0
4191 / 1992 / 2071
Регистрация: 10.12.2014
Сообщений: 7,626
11.12.2015, 07:14 5
Цитата Сообщение от capricornus CF Посмотреть сообщение
Насчет 255
Дык, переменная то Byte!
0
318 / 208 / 162
Регистрация: 08.12.2015
Сообщений: 861
11.12.2015, 07:24 6
точно, проверил трассировкой - программа вылетает, а по кнопке пуск работает с любой строкой, странно ))
0
4191 / 1992 / 2071
Регистрация: 10.12.2014
Сообщений: 7,626
11.12.2015, 07:30 7
capricornus CF, ой ли?
Введи в свою программу строку:
про про про про про про про про про про про про про про про про про про про про про про про про про про про про про про про про про про про про про про про про про про про про про про про про про про про про про про про про про про про про про про про про жывотное
0
318 / 208 / 162
Регистрация: 08.12.2015
Сообщений: 861
11.12.2015, 07:36 8
У меня версия от 1 декабря, сборка 1078, может там защит от дурака стоит?

Проверить правильность написания сочетаний "жи" и "ши".Если надо, то исправить и вывести на экран

да, исправлять перестает, но не вылетает, так и должно быть?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
30763 / 20095 / 7851
Регистрация: 22.10.2011
Сообщений: 34,912
Записей в блоге: 6
11.12.2015, 13:22 9
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
uses System.Text.RegularExpressions;
var
  s: string;
  
function f(m : Match) : string;
begin
  result := m.Value[1] + (m.Value[2] = 'Ы' ? 'И' : 'и');
end;
 
begin
  WriteLn('Введите строку:');
  ReadLn(s);
  s := Regex.Replace(s, '(ж|ш)ы', f, RegexOptions.IgnoreCase);
  writeln('Правильное написание строки: ', s);
end.
, однако
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.12.2015, 13:22

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Написать программу проверки правильности написания сочетаний "жи", "ши"
Дан текст. Написать программу проверки правильности написания Сочетаний...

Написать програму проверки правильности написания сочетаний "жи", "ши"
дан текст. написать програму проверки правильности написания сочетаний "жи", "ши", "ча", "ща",...

Ввести строку. Заменить все буквы "е" и "а" в тексте на "8" , "4" и "6". Вывести на экран модифицированную строку
Ввести строку. Заменить все буквы "е" и "а" в тексте на "8" , "4" и "6". Вывести на...

Если навел мышкой на 1 то вывести "единица", если 2 то "Двойка", если на 3 то "тройка" и тд., и это все в одной функции
Ребят, выручайте. <div id="1" onMouseOver="inf()" onMouseOut="noinf()">1</div> <br> ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.