Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
2 / 2 / 0
Регистрация: 09.11.2009
Сообщений: 49
1

Подсчитать количество отрицательных частиц "не" и "ни"

11.12.2009, 15:46. Просмотров 1302. Ответов 12
Метки нет (Все метки)

В некотором тексте(например:Ни одна система не остается неизменной)определить отрицательные частицы не и ни.То есть вывести эти частицы на экран.Помогите пожалуйста написать программу
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.12.2009, 15:46
Ответы с готовыми решениями:

Подсчитать количество предложений в строке, чтобы они начинались с заглавной буквы и заканчивались"." "?" "!"
Буду очень благодарен

Подсчитать количество цифр "5", "6" и "7" (в отдельности) содержащихся в данной строке
Составить алгоритм и программу обработки введенной с клавиатуры строки с использованием стандартных...

Подсчитать количество сдвоенных символов "сс" "нн" "лл" в введенном тексте
Подсчитать количество сдвоенных символов "сс" "нн" "лл" в веденном тексе Именно этих символов !!!!

Подсчитать количество букв "й", "ы" и "я", содержащихся в заданной строке.
нужна помощь, помогите пожалуйста: Подсчитать количество букв "й", "ы" и "я" (в отдельности),...

12
1850 / 1172 / 189
Регистрация: 27.03.2009
Сообщений: 4,512
11.12.2009, 15:48 2
ччто иеммно надо вывести? если они встречаются в тексте и колько раз, или слова с ними?
0
Retired
7720 / 2552 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
11.12.2009, 15:53 3
unick12345,
Цитата Сообщение от маришkа Посмотреть сообщение
То есть вывести эти частицы на экран
Вот вариант решения
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
uses
  crt;
const
  dividers=[' ',',','.',';',':','-','=','+'];{дописать нужные}
var
  s,temp:string;
  i:integer;
begin
  clrscr;
  writeln('Введите строку:');
  readln(s);
  temp:='';
  {пробегаем всю строку посимвольно}
  for i:=1 to length(s) do
  begin
    if not (s[i] in dividers) then
      temp:=temp+s[i];
    if (s[i] in dividers) or (i=length(s)) then
      if temp<>'' then
      begin
        if (temp='Не') or(temp='НЕ') or(temp='нЕ') or(temp='не') or(temp='Ни') or(temp='НИ') or (temp='нИ') or(temp='ни') then
          write(temp,' ');
        temp:='';
      end;
  end
end.
Дополнение: Если у Вас не Turbo Pascal, то данную строку
Цитата Сообщение от Inadequate Посмотреть сообщение
Pascal
1
if (temp='Не') or(temp='НЕ') or(temp='нЕ') or(temp='не') or(temp='Ни') or(temp='НИ') or (temp='нИ') or(temp='ни') then
можно заменить на вот такую
Pascal
1
if (LowerCase(temp)='не') or (LowerCase(temp)='ни') then
1
2 / 2 / 0
Регистрация: 09.11.2009
Сообщений: 49
11.12.2009, 15:53  [ТС] 4
Встречаются в тексте и сколько раз
0
Retired
7720 / 2552 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
11.12.2009, 16:02 5
Встречаются в тексте и сколько раз
Вы совершенно не цените чужой труд...
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
uses
  crt;
const
  dividers=[' ',',','.',';',':','-','=','+'];{дописать нужные}
var
  s,temp:string;
  i,c:integer;
begin
  clrscr;
  writeln('Введите строку:');
  readln(s);
  temp:='';
  c:=0;
  {пробегаем всю строку посимвольно}
  for i:=1 to length(s) do
  begin
    if not (s[i] in dividers) then
      temp:=temp+s[i];
    if (s[i] in dividers) or (i=length(s)) then
      if temp<>'' then
      begin
        if (LowerCase(temp)='не') or (LowerCase(temp)='ни') then
          inc(c);
        temp:='';
      end;
  end;
  if c<>0 then
    writeln('Встречаются ',c,' раз(а).')
  else
    writeln('В заданном тексте эти частицы не встречаются!')
end.
1
2 / 2 / 0
Регистрация: 09.11.2009
Сообщений: 49
11.12.2009, 16:04  [ТС] 6
Спасибо большое!!!!!
0
2 / 2 / 0
Регистрация: 09.11.2009
Сообщений: 49
22.12.2009, 13:52  [ТС] 7
Извините вы не могли бы объяснить,что такое dividers и что значат эти знаки препинания в [ ] после dividers!!!!!Как вообще можно назвать то что стоит в скобках(меня преподователь сегодня спросил,а я не смогла объяснить)Спасибо заранее!!!!
0
Retired
7720 / 2552 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
22.12.2009, 13:57 8
маришkа, dividers это множество типа char; Вот Вам справка по данному вопросу из хэлпа
Множества
Множество представляет собой набор элементов одного порядкового типа. Элементы множества считаются неупорядоченными; каждый элемент может входить во множество не более одного раза. Тип множества описывается следующим образом:

set of базовый тип

В качестве базового может быть любой порядковый тип с элементами, для которых функция Ord возвращает значения в диапазоне от 0 до 255. Например:

type
ByteSet = set of byte;
CharSet = set of char;
Digits = set of '0'..'9';
SeasonSet = set of (Winter,Spring,Summer,Autumn);

Переменная типа множество занимает 16 байт и может содержать несколько значений базового типа. Чтобы сконструировать значение типа множество, используется конструкция вида

[список значений]

где в списке могут перечисляться через запятую либо выражения базового типа, либо их диапазоны в виде a..b, где a и b - выражения базового типа. Например:

var
bs: ByteSet;
bestdays: (Mon,Tue,Wed,Thi,Thr,Sat,Sun);
...
bs:=[1,3,5,20..25];
bestdays:=[Wed,Thr..Sun];

Значения в списке могут отсутствовать, тогда множество является пустым:

bs:=[];

Операция in проверяет принадлежность элемента множеству:

if Wed in bestdays then ...

Для множеств определены операции + (объединение), - (разность), * (пересечение), = (равенство), <> (неравенство), <= (вложено) и и >= (содержит). Примеры этих операций приведены в пункте Выражения и операции.

Множества с совместимыми базовыми типами неявно преобразуются одно к другому (см. пункт Неявное приведение типов). При присваивании множеству при необходимости происходит усечение его элементов до значений базового типа. Например:

var st: set of 3..9;
...
st:=[1..5,8,10,12]; // в st попадут значения [3..5,8]

Чтобы вывести значения элементов множества, необходимо перебрать всевозможные значения в цикле и проверить их на принадлежность множеству с помощью операции in:

for i:=0 to 255 do
if i in st then write(i,' ');
1
2 / 2 / 0
Регистрация: 09.11.2009
Сообщений: 49
22.12.2009, 14:03  [ТС] 9
Спасибо большое
0
2 / 2 / 0
Регистрация: 09.11.2009
Сообщений: 49
23.12.2009, 15:35  [ТС] 10
Извините за глупый вопрос,но вы не могли бы объяснить,что такое if(s[i]in dividers)or(i=length(s))
then if temp<>'' then......и для чего мы здесь это применяем!!!
0
Retired
7720 / 2552 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
23.12.2009, 15:44 11
Цитата Сообщение от маришkа Посмотреть сообщение
что такое if(s[i]in dividers)or(i=length(s))
это проверка на то, что если(if) символ(s[i]) входит в множество или это последний символ тогда(then)
Цитата Сообщение от маришkа Посмотреть сообщение
if temp<>'' then
а это проверка на пустое слово. Давайте возьмем для примера такую строку: "кар ыва"
Между этими словами 6 пробелов. И пробегая строку посимвольно, чтобы каждый раз начиная с 4 символа не проверрять вот это условие и не опустошать и без того пустую переменную
Цитата Сообщение от Inadequate Посмотреть сообщение
if (LowerCase(temp)='не') or (LowerCase(temp)='ни') then
inc(c);
мы делаем всего одну проверку на слово. Т.е. по сути можно это убрать и работать будет правильно, НО появятся лишние действия, что не есть гуд.
1
2 / 2 / 0
Регистрация: 09.11.2009
Сообщений: 49
23.12.2009, 16:01  [ТС] 12
СпасибоИзвините если надоела со своими вопросами
0
Retired
7720 / 2552 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
23.12.2009, 16:02 13
Цитата Сообщение от маришkа Посмотреть сообщение
Извините если надоела со своими вопросами
Ничего страшного, это хорошо, что Вы интересуетесь, а не тупо списываете. На будущее: половина ответов есть в хэлпе. Юзайте F1
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.12.2009, 16:02

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

Составить фразу "письменный стол" из слов "тесненный", "полка", "речь", "миф".
1) Составить фразу &quot;письменный стол&quot; из слов &quot;тесненный&quot;, &quot;полка&quot;, &quot;речь&quot;, &quot;миф&quot;. 2) Вывести...

Составить фразу "программное обеспечение" из слов "программист", "оборот", "анчоус", "измерение"
Составить фразу &quot;программное обеспечение&quot; из слов &quot;программист&quot;, &quot;оборот&quot;, &quot;анчоус&quot;,...

Составить фразу "текстовый редактор" из слов "тесто", "редакция", "мотор", "который"
1) Составить фразу &quot;текстовый редактор&quot; из слов &quot;тесто&quot;, &quot;редакция&quot;, &quot;мотор&quot;, &quot;который&quot;.

Заменить символы "1", "2", "3" словами "один", "два", "три"
Дана строка символов. Заменить символы &quot;1&quot;, &quot;2&quot;, &quot;3&quot; словами &quot;один&quot;, &quot;два&quot;, &quot;три&quot;. Оформить в...


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

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

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