Форум программистов, компьютерный форум, киберфорум
Наши страницы
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
zoomisus19
0 / 0 / 0
Регистрация: 28.05.2014
Сообщений: 12
#1

Определить длину строки. Если длина строки >6, удалить часть строки в { } скобках. - Turbo Pascal

29.05.2014, 18:32. Просмотров 965. Ответов 9
Метки нет (Все метки)

Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L, и, если длина L >6, то выделяется удаляется часть строки в { } скобках.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2014, 18:32
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Определить длину строки. Если длина строки >6, удалить часть строки в { } скобках. (Turbo Pascal):

Строки. Определить длину введенной строки L, и если длина L<10, то выделяется подстрока в () скобках
Помогите пожалуйста. 6.1 Ввести с клавиатуры строку символов. Признак...

Строки. Определить длину введенной строки, если длина кратна 4, то первая часть строки меняется местами со второй
Ввести с клавиатуры строку символов.признак окончания ввода строки-нажатие...

Строки. Определить длину введённой строки, если длина кратна 3, удалить каждый третий символ
Вывести с клавиатуры строку символ.Признак окончания ввода строки-нажатие...

Определить длину введённой строки, если длина нечётная ,то удаляется символ, стоящий посередине строки
Вывести с клавиатуры строку символ.Признак окончания ввода строки-нажатие...

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

Дано целое число K и текстовый файл. Удалить из каждой строки файла первые K символов (если длина строки меньше K, то удалить из нее все символы)
Помогите Пожалуйста написать программу! Дано целое число K и текстовый файл....

9
Cyborg Drone
Модератор
5252 / 3119 / 2433
Регистрация: 17.08.2012
Сообщений: 10,074
30.05.2014, 23:08 #2
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var s: string;
begin
  writeln('Введите строку:');
  readln(s);
  writeln('Длина = ', length(s));
  if length(s) > 6
    then begin
      if (pos('{', s) > 0) and (pos('}', s) > 0) and (pos('}', s) > pos('{', s))
        then begin
          delete(s, pos('{', s) + 1, pos('}', s) - pos('{', s) - 1);
          writeln('Результат:');
          writeln(s)
        end
        else writeln('Не хватает фигурных скобок или неправильная их последовательность.');
    end;
  readln
end.
1
zoomisus19
0 / 0 / 0
Регистрация: 28.05.2014
Сообщений: 12
31.05.2014, 14:14  [ТС] #3
спасибо!) а она работает если я введу вот так:
zoomi{sus{19}}

Добавлено через 1 час 0 минут
Cyborg Drone, спасибо!) а она работает если я введу вот так:
zoomi{sus{19}}
0
Cyborg Drone
Модератор
5252 / 3119 / 2433
Регистрация: 17.08.2012
Сообщений: 10,074
31.05.2014, 18:11 #4
Да, но несколько некорректно. Результат будет zoomi{}}, то есть, будет удалён фрагмент строки между первой "{" и первой "}" . Это потому,что в задании подразумеватся наличие только одной пары "{", "}", нигде не указано, что скобок может быть более одной пары, что следует удалять фрагмент между первой "{" и последней "}", и тому подобное. Если что-либо не так, уточните задание, я подрихтую.
1
zoomisus19
0 / 0 / 0
Регистрация: 28.05.2014
Сообщений: 12
31.05.2014, 21:33  [ТС] #5
Cyborg Drone,
Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L, и, если длина L >6, то выделяется удаляется часть строки в { } скобках(и сами скобки), также скобок может быть несколько!
Например zoom{asdasd}asf{sadas}
Остаться должно zoomasf
0
Cyborg Drone
Модератор
5252 / 3119 / 2433
Регистрация: 17.08.2012
Сообщений: 10,074
01.06.2014, 00:47 #6
Лучший ответ Сообщение было отмечено zoomisus19 как решение

Решение

Вот, всё предусмотрел.
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
var s: string;
    i, n, k: integer;
begin
  writeln('Введите строку:'); {ввод строки}
  readln(s);
  writeln('Длина строки = ', length(s)); {печать длины строки}
  if length(s) > 6 {если длина строки больше 6,}
    then begin {потрошим строку}
      writeln('Длина строки больше 6 символов, вырезаем части строки со скобками.');
      if (pos('{', s) = 0) and (pos('}', s) = 0)
        then writeln('Скобок не обнаружено.') {если скобок нет}
        else if (pos('{', s) = 0) and (pos('}', s) > 0) or (pos('{', s) > 0) and (pos('}', s) = 0)
          then writeln('Скобка только одна.') {есть только одна скобка}
          else begin
            n := 0; {n в этом цикле используем для определения правильности последовательности скобок и их парности}
            for i := 1 to length(s) do
              begin
                if s[i] = '{' then inc(n);
                if s[i] = '}' then dec(n);
                if n < 0 then break  {скобка закрылась раньше, чем открылась, либо закрывающих скобок больше}
                              {досрочный выход из цикла}
              end;
            if n < 0
              then writeln('Неверная последовательность скобок или скобки непарные.')
                          {скобка закрылась раньше, чем открылась, либо закрывающих скобок больше}
              else if n > 0
                then writeln('Скобки не парные.') {открывающих скобок больше}
                else begin {иначе всё верно, удаляем части строк}
                  while pos('{', s) > 0 do {пока осталась хоть одна пара скобок, делаем}
                    begin
                      n := 0; {начало фрагмента, пока начало не найдено}
                      for i := 1 to length(s) do
                        begin
                          if s[i] = '{' then n := i; {найденно начало}
                          if (s[i] = '}') and (n > 0) {если найден конец и уже найдено начало,}
                            then begin {то}
                              k := i; {найден конец}
                              break {досрочно из цикла}
                            end
                        end;
                      delete(s, n, k - n + 1) {и удаляем найденный фрагмент вместе со скобками}
                    end;
                  writeln('Результат:');
                  if length(s) = 0
                    then writeln('Была вырезана вся строка.') {получилась пустая строка}
                    else writeln(s); {получилась непустая строка, печатаем}
                end
          end
    end;
  write('Нажмите <Enter> для выхода из программы.');
  readln {ждём реакции пользователя для выхода из программы}
end.
1
zoomisus19
0 / 0 / 0
Регистрация: 28.05.2014
Сообщений: 12
01.06.2014, 21:57  [ТС] #7
Cyborg Drone, спасибо! а если так zoom{sdasd{sdasd}
0
Svager
394 / 374 / 405
Регистрация: 14.09.2013
Сообщений: 1,202
01.06.2014, 22:05 #8
Цитата Сообщение от zoomisus19 Посмотреть сообщение
а если так zoom{sdasd{sdasd}
зачем Вы спрашиваете? Возьмите запустите и будет вам счастье .
0
Cyborg Drone
Модератор
5252 / 3119 / 2433
Регистрация: 17.08.2012
Сообщений: 10,074
01.06.2014, 23:12 #9
Цитата Сообщение от zoomisus19 Посмотреть сообщение
zoom{sdasd{sdasd}
Кроме длины строки, выведется сообщение "Скобки не парные". Ничего из строки удалено не будет, ввиду того, что выбор не определён: "zoom{sdasd" или "zoom", как удалять? В связи с этим, моя программа удаляет части строки со скобками только в том случае, если последовательность скобок правильная. В остальных случаях выводится соответствующее сообщение.
Цитата Сообщение от Svager Посмотреть сообщение
запустите
И в самом деле, запустите, а ещё лучше, разберите мой код по косточкам.
0
Svager
394 / 374 / 405
Регистрация: 14.09.2013
Сообщений: 1,202
01.06.2014, 23:15 #10
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
а ещё лучше, разберите мой код по косточкам.
именно
0
01.06.2014, 23:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.06.2014, 23:15
Привет! Вот еще темы с решениями:

Если длина введенной строки нечетная, удалить символ, стоящий посередине строки
помогите перевести с Си на паскаль. using System; using...

Обработка строк.определить длину введенной строки L, и, если длина L>10, то удаляются все цифры
1)Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие...

Определить длину строки, если длина L кратна 2, то удаляются все числа, которые делятся на 2
Ввести с клавиатуры строку символов. Признак окончания ввода строки - нажатие...

Определить длину строки, если длина L кратна 2, то удаляются все числа, которые делятся на 2
Ввести с клавиатуры строку символов.Признак окончания строки-нажатие клавиши...


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

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

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