• Помогите,пожалуйста.
    Дана строка не более 50 символов. Переписать в обратном порядке все слова, начинающиеся с заданной буквы. Определить количество предложений в строке.
    Написать программу в паскале

Ответы 7

  • Я думал последнее - первое
  • Я думаю развернуть - это да, "оволс"
    • Автор:

      michael15
    • 6 лет назад
    • 0
  • Хотя, кто знает... может "переписать в обратном порядке" - это у автора обозначает "создать массив слов и вывести его списком от последнего слова к первому"
  • Но раз на мои вопросы не отвечено, наверно, каждый понимает, как хочет.
    • Автор:

      ebony
    • 6 лет назад
    • 0
  • Оставлю пока так, если автор одумается и отпишет - изменю, пока так)
  • // PascalABC.NET // Версия 3.3.5 сборка 1662 (29.04.2018)begin  var b := ReadlnString('Введите строку -').ToLower+' ';   var (z,r) := (',!?.:;'.ToCharArray,'!.?;'.ToCharArray);  var tt:=true; Range(1,b.Length+b.ToCharArray.Where(t->t in z).Count).ForEach(t->if (b[t] in z) and tt then begin Insert(' ', b, t); tt:=false end else tt:=true);  var a := b.ToWords;  var x := ReadlnChar('Буква -');  var (w, i) := a.Select((w, i)-> (w, i)).Where(t -> t[0].ToString.First.ToLower = x).Reverse.UnZipTuple;   i := i.Reverse;  foreach var t in w.Zip(i, (p, q)-> (p, q)) do a[t[1]] := t[0];  b := string.Join(' ', a);  tt:=true; Range(1,b.Length-b.ToCharArray.Where(t->t in z).Count+1).ForEach(t->if (b[t] in z) and tt then begin Delete(b, t - 1, 1); tt:=false end else tt:=true);   b.Println; Println('Количество предложений:',b.ToWords(r).Count);end.Пример в приложении.
    answer img
    • Автор:

      sage
    • 6 лет назад
    • 0
  • PascalABC.NET 3.4.0, сборка 1675 от 12.06.2018Внимание! Если программа не работает, обновите версию!begin  var adelim:=' .,;:!?-'.ToCharArray;  var s:=ReadlnString;  Writeln(25*'- ');  var c:=ReadlnChar('Буква для поиска слов:'); Writeln(25*'- ');  var ww:=s.ToWords(adelim).Where(w->w.First=c);  foreach var w in ww do begin    var i:=Pos(w,s);    Delete(s,i,w.Length); Insert(w.Inverse,s,i)    end;  s.Println; Writeln(25*'- ');  Writeln('Предложений всего: ',s.ToWords('.').Count)end.
    answer img
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years