Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/25: Рейтинг темы: голосов - 25, средняя оценка - 4.68
0 / 0 / 0
Регистрация: 04.04.2015
Сообщений: 20

Определить порядковые номера, считая от начала текста, заданных символов

04.04.2015, 11:50. Показов 5145. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Решить задачу 3 (на строки) с помощью множеств

Добавлено через 1 минуту
Вот собственно сама задачка. Определить порядковые номера, считая от начала текста, определенных символов, которые задаются в исходных данных;
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
program W3;
uses crt;
var b,s,c:string;
     K,I, ps:integer;
begin
clrscr;
 writeln ('Введите текст'); readln (s);
 writeln ('Введите символ который нужно найти '); readln (b);
 k:=0; c:='';
 ps:=pos(b,s);
 i:=0;
 while ps>0 do
 begin
  k:=k+1;
  i:=i+ps;
  c:=c+copy(s,1,ps-1)+' '' ' +b+ ' '' ';
  delete(s,1,ps+length(b)-1);
  writeln('Найден символ на  ' ,i, ' позициях');
  ps:=pos(b,s);
 end;
 c:=c+s;
 writeln('Символ найден  ',k,' раз(а)');
 writeln(c);
 readln;
end.
Добавлено через 14 минут
можно с объяснением, если не составит трудности. Заранее спасибо.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.04.2015, 11:50
Ответы с готовыми решениями:

Обработка текстов. Определить порядковые номера заданных символов, заменить их пробелами
Пожалуйста помогите, срочно нужно! Если не сложно напишите пожалуйста что бы было понятно,так как в этом чайник! =) ЗАДАЧА Обработка...

Определить порядковые номера символов ‘E’, ‘N’, ‘D’ в массиве
Обработка символьных массивов 1 задание. Определить порядковые номера символов ‘E’, ‘N’, ‘D’ в массиве.

Определить порядковые номера первой пары соседних символов
Помогите решить задания, ПОЖАЛУЙСТА. 1. "Дан текст, имеющий вид "d1+-d2+-...+-dn", где di - цифры (n>1). Вычислить записанную в тексте...

15
Модератор
10445 / 5737 / 3406
Регистрация: 17.08.2012
Сообщений: 17,451
07.04.2015, 14:07
Лучший ответ Сообщение было отмечено Woldemar96 как решение

Решение

Woldemar96, слова "номер" и "символ" в задании указаны во множественном числе. Ваша программа не соответствует заданию. Моё решение,

без множеств:
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
var s, c: string;
    i, j, k: integer;
begin
  repeat
    writeln('Введите строку:');
    readln(s);
    if length(s) = 0 then writeln('Введена пустая строка, повторите ввод.')
  until length(s) > 0;
  repeat
    writeln('Введите строку из символов, которые нужно найти:');
    readln(c);
    if length(c) = 0 then writeln('Символы не были введены, повторите ввод.')
  until length(c) > 0;
  k := 0;
  writeln('Позиции символов в строке:');
  for i := 1 to length(s) do {цикл по строке}
    for j := 1 to length(s) do {проверяем, равен ли очередной символ строки одному из заданных}
      if s[i] = c[j] {если равен}
        then begin
          write(i, ' '); {печатаем его позицию}
          inc(k); {счётчик позиций + 1}
          break {досрочно выходим из цикла, дальше искать не нужно}
        end;
  writeln;
  if k = 0 {Если символы не найдены}
    then write('Заданные символы в строке не найдены') {то печатаем, что не найдены}
    else write('Общее количество заданных символов в строке: ', k); {иначе печатаем их количество}
  readln
end.
с множествами:
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
32
33
34
35
var s, c: string;
    i, k: byte;
    p: set of byte;
    f: set of char;
begin
  repeat
    writeln('Введите строку:');
    readln(s);
    if length(s) = 0 then writeln('Введена пустая строка, повторите ввод.')
  until length(s) > 0;
  repeat
    writeln('Введите строку из символов, которые нужно найти:');
    readln(c);
    if length(c) = 0 then writeln('Символы не были введены, повторите ввод.')
  until length(c) > 0;
  f := []; {формируем множество символов для поиска}
  for i := 1 to length(c) do include(f, c[i]);
  p := []; {позиции символов пока не найдены}
  for i := 1 to length(s) do if s[i] in f then include(p, i); {ищем позиции}
  if p = [] {если позиции не найдены,}
    then write('Заданных символов в строке нет.') {то заданных символов нет}
    else begin {иначе выводим позиции символов и их количество}
      writeln('Позиции символов в строке:');
      k := 0;
      for i := 1 to 255 do {перебор возможных позиций}
        if i in p {если позиция есть в множестве,}
          then begin
            write(i, ' '); {то печатаем её}
            inc(k) {и счётчик позиций + 1}
          end;
      writeln;
      write('Общее количество заданных символов в строке: ', k)
    end;
  readln
end.
Да, и зачем применяете в программе модуль crt? Что, неужели так жизненно необходимо почистить экран в Вашей эпохальной программе?
1
0 / 0 / 0
Регистрация: 04.04.2015
Сообщений: 20
07.04.2015, 14:25  [ТС]
Люди, извините, если как то не правильно составлен код паскаль или не понятное задание отпишитесь пожалуйста. Прошарил сайты с объяснением множеств, честно говоря не знаю как применить их к этой задачке.

Добавлено через 12 минут
Cyborg Drone, Честно сказать восхищен. Считаю, что очень грамотно составлен код. посижу по разбираю. Как курсовую сдам я так же отпишусь о решении. Очень благодарен за помощь.
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
07.04.2015, 14:32
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
зачем применяете в программе модуль crt? Что, неужели так жизненно необходимо почистить экран в Вашей эпохальной программе?
В АВС экран в начале чистить не нужно, т.е. clrscr в строке 6 лишнее, но Crt позволяет работать в отдельном окне, а не в прорези внизу экрана, я например всегда пишу Crt, если вывод не более 25 строк.
1
Модератор
10445 / 5737 / 3406
Регистрация: 17.08.2012
Сообщений: 17,451
07.04.2015, 14:43

Не по теме:

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



Добавлено через 4 минуты

Не по теме:

Puporev, понятно. Спасибо. Об ABC, на самом деле, я знаю только поослышке, ну не жажду я эту бяку себе устанавливать... Потому и ничего не знаю об особенностях его интерфейса. Знаю только особенности этого диалекта, которые, как правило, представляют собой ограничения относительно других диалектов паскаля.

1
0 / 0 / 0
Регистрация: 04.04.2015
Сообщений: 20
07.04.2015, 14:46  [ТС]
Cyborg Drone, Извините. Вот тестирую программу. Ввожу предложение. Потом к примеру мне нужно найти символ "е" пишет вот так :
"Позиции символов в строке:Ошибка времени выполнения: System.IndexOutOfRangeException: Индекс находился вне границ массива.
"

Добавлено через 1 минуту
Ошибка указывает на 18 строчку первого вашего кода Pascal
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
07.04.2015, 14:52
Цитата Сообщение от Woldemar96 Посмотреть сообщение
Ошибка времени выполнения: System.IndexOutOfRangeException:
Судя по этому у товарища АВС.net. Лепят темы куда попало,только не в свой раздел.
0
Модератор
10445 / 5737 / 3406
Регистрация: 17.08.2012
Сообщений: 17,451
07.04.2015, 14:52
Ох, да. Моя невнимательность. Исправьте строку 17:
Pascal
17
    for j := 1 to length(с) do {проверяем, равен ли очередной символ строки одному из заданных}
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33400 / 21510 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
07.04.2015, 14:53
Опечатка в 17-ой строке:
Pascal
1
    for j := 1 to length(c) do {проверяем, равен ли очередной символ строки одному из заданных}
Нужно C, а бралась дважды длина строки S...
1
Модератор
10445 / 5737 / 3406
Регистрация: 17.08.2012
Сообщений: 17,451
07.04.2015, 14:56
Естественно, если строка "c" состоит из одного символа, то, если хоть один символ строки "s" отличается от этого символа, будет вылет... Длина строки "c", сдаётся мне, как-то покороче длины строки "s".
1
0 / 0 / 0
Регистрация: 04.04.2015
Сообщений: 20
07.04.2015, 15:02  [ТС]
volvo, Спасибо =)) я понял =))

Добавлено через 3 минуты
Cyborg Drone, Все работает на ура. Уже с 3ей задачкой благодарю вас.

Не по теме:

Вам бы в университете преподавать :)

0
07.04.2015, 15:03

Не по теме:

Да, Woldemar96, Вам, часом, не Pascal.ABC.NET нужен? Дело в том, что, несмотря на подкупающую схожесть его названия с Pascal ABC, два этих диалекта паскаля различаются радикально: первый базируется на технологии .net, и представляет собой весьма мощную среду программирования, второй - учебный паскаль, в котором ампутировано всё, что можно и нельзя, он даже исполняемых файлов не порождает, поскольку является интерпретатором, а не транслятором. Если всё же нужен Pascal.ABC.NET, так в ветку Pascal.ABC.NET и пишите.

0
07.04.2015, 15:08  [ТС]

Не по теме:


Cyborg Drone, ой.. честно признаться не думал, что есть отличие. Вообще сказали можно на Pascal.ABC писать код. но сейчас посмотрел свой и оказалось что у меня стоит ABC.NET

0
07.04.2015, 15:14

Не по теме:

Цитата Сообщение от Woldemar96 Посмотреть сообщение
сейчас посмотрел свой
Да уж....

0
0 / 0 / 0
Регистрация: 04.04.2015
Сообщений: 20
07.04.2015, 15:17  [ТС]

Не по теме:

Честно говоря стыдно.. если говорить о том, что поступил по направлению прикладной информатики.. для себя выводы делаю.

Всем спасибо.
0
07.04.2015, 15:19

Не по теме:

Ну, можете писать и в среде ABC.NET, с учётом ограничений для ABC. Ничего страшного. Нужно только не использовать операторы, которых нет в ABC. И желательно проверять написанное на работоспособность в ABC.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.04.2015, 15:19
Помогаю со студенческими работами здесь

Определить порядковые номера первой пары одинаковых соседних символов.
Люди плиз помогите на паскале решить задачку, срочно нужно, я на госах Дана строка. Определить порядковые номера первой пары...

Определить порядковые номера первой пары одинаковых соседних символов
Дано предложение. Определить порядковые номера первой пары одинаковых соседних символов. Если таких символов нет, то вывести...

Определить порядковые номера первой пары одинаковых соседних символов в строке
Здравствуйте, помогите, пожалуйста, с решение задачи. Задание: дана строка. Определить порядковые номера первой пары одинаковых соседних...

Дано предложение. Определить, порядковые номера первой пары одинаковых соседних символов
Дано предложение. Определить, порядковые номера первой пары одина¬ковых соседних символов. Если таких символов нет, то должно быть...

Определить номера первых символов каждого слова относительно начала строки
Добрый день,помогите написать программу на assembler. В тексте 5 слов определить номера первых символов каждого слова относительно начала...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru