Есть ответ 👍

)напишите программу, определяющую, сколько слов в данной строке текста.(pascal) на вход программы поступает строка текста, в которой могут встречаться: — прописные и строчные (т.е. большие и маленькие) латинские буквы; — пробелы; — знаки препинания: точка, запятая, восклицательный и вопросительный знак; — символ –, обозначающий в некоторых случаях тире, а в некоторых — дефис. слово — это последовательность подряд идущих латинских букв и знаков дефис, ограниченная с обоих концов. в качестве ограничителей могут выступать начало строки, конец строки, пробел, знак препинания, тире. тире отличается от дефиса тем, что слева и справа от знака дефис пишутся буквы, а хотя бы с одной стороны от тире идет либо начало строки, либо конец строки, либо пробел, либо какой-либо знак препинания, либо еще одно тире.

228
410
Посмотреть ответы 2

Ответы на вопрос:


Получилась громоздкая конструкция из логический условий, но по-другому никак не придумалось var t: string; n: integer; i,x,y: byte; begin   writeln ('введите строку');   readln (t);   n: =length(t);   t: =t+'.'; //пририсовываем к строке лишний символ "не буква", иначе программа может  не посчитать последнее слово в случае,  если строка кончается буквой.   x: =0;     // переменная для обозначения конца каждой группы из букв, идущих подряд      y: =0;   // переменная для подсчета количества групп из букв, идущих  подряд      for i: =1 to n do      begin       // определяем, является ли текущий символ буквой:       if ((ord(t[i])> 64) and (ord(t[i])< 91)) or ((ord(t[i])> 96) and (ord(t[i])< 123)) or ((ord(t[i])> 191) and (ord(t[i])< 256))         then x: =1     //если да, то х=1         else            begin             if x=1 then begin y: =y+1; x: =0 end;   // если текущий символ не буква, то проверяем "х" -  если х=1, значит слово кончилось и "у" увеличиваем на 1, а "х" соответственно снова обнуляем. теперь при следующем символе "небуква" наш "у" не увеличится                   //в следующем длинном условии проверяем исключение - является ли текущий символ тире или дефисом. если дефис, то количество уже посчитанных слов уменьшим на 1, т.к. дефис стоит в середине слова и значит предыдущее прибавление 1 было неправильным.             if (t[i]='-') and (t[i-1])> 64) and (ord(t[i-1])< 91)) or ((ord(t[i-1])> 96) and (ord(t[i-1])< 123)) or ((ord(t[i-1])> 191) and (ord(t[i-1])< and (t[i+1])> 64) and (ord(t[i+1])< 91)) or ((ord(t[i+1])> 96) and (ord(t[i+1])< 123)) or ((ord(t[i+1])> 191) and (ord(t[i+1])<               then y: =y-1           end     end;       writeln('в данной строке ',y,' слов') end. результат работы программы: введите строку ali-baba,- это не имя атамана разбойников, это китайский магазин. в данной строке 9 слов
ileuova1
4,4(70 оценок)

у тебя не 60 а 30

,когда ты ставишь число в знаниях уменьшает в 2раза меньше

Реши свою проблему, спроси otvet5GPT

  • Быстро
    Мгновенный ответ на твой вопрос
  • Точно
    Бот обладает знаниями во всех сферах
  • Бесплатно
    Задай вопрос и получи ответ бесплатно

Популярно: Информатика

Caktus Image

Есть вопросы?

  • Как otvet5GPT работает?

    otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса.
  • Сколько это стоит?

    Проект находиться на стадии тестирования и все услуги бесплатны.
  • Могу ли я использовать otvet5GPT в школе?

    Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое!
  • В чем отличия от ChatGPT?

    otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.

Подпишись на наш телеграмм канал

GTP TOP NEWS