Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 28.05.2014
Сообщений: 12
1

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

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

Author24 — интернет-сервис помощи студентам
Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L, и, если длина L >6, то выделяется удаляется часть строки в { } скобках.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.05.2014, 18:32
Ответы с готовыми решениями:

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

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

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

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

9
Модератор
9857 / 5227 / 3304
Регистрация: 17.08.2012
Сообщений: 15,997
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
0 / 0 / 0
Регистрация: 28.05.2014
Сообщений: 12
31.05.2014, 14:14  [ТС] 3
спасибо!) а она работает если я введу вот так:
zoomi{sus{19}}

Добавлено через 1 час 0 минут
Cyborg Drone, спасибо!) а она работает если я введу вот так:
zoomi{sus{19}}
0
Модератор
9857 / 5227 / 3304
Регистрация: 17.08.2012
Сообщений: 15,997
31.05.2014, 18:11 4
Да, но несколько некорректно. Результат будет zoomi{}}, то есть, будет удалён фрагмент строки между первой "{" и первой "}" . Это потому,что в задании подразумеватся наличие только одной пары "{", "}", нигде не указано, что скобок может быть более одной пары, что следует удалять фрагмент между первой "{" и последней "}", и тому подобное. Если что-либо не так, уточните задание, я подрихтую.
1
0 / 0 / 0
Регистрация: 28.05.2014
Сообщений: 12
31.05.2014, 21:33  [ТС] 5
Cyborg Drone,
Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L, и, если длина L >6, то выделяется удаляется часть строки в { } скобках(и сами скобки), также скобок может быть несколько!
Например zoom{asdasd}asf{sadas}
Остаться должно zoomasf
0
Модератор
9857 / 5227 / 3304
Регистрация: 17.08.2012
Сообщений: 15,997
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
0 / 0 / 0
Регистрация: 28.05.2014
Сообщений: 12
01.06.2014, 21:57  [ТС] 7
Cyborg Drone, спасибо! а если так zoom{sdasd{sdasd}
0
399 / 378 / 408
Регистрация: 14.09.2013
Сообщений: 1,204
01.06.2014, 22:05 8
Цитата Сообщение от zoomisus19 Посмотреть сообщение
а если так zoom{sdasd{sdasd}
зачем Вы спрашиваете? Возьмите запустите и будет вам счастье .
0
Модератор
9857 / 5227 / 3304
Регистрация: 17.08.2012
Сообщений: 15,997
01.06.2014, 23:12 9
Цитата Сообщение от zoomisus19 Посмотреть сообщение
zoom{sdasd{sdasd}
Кроме длины строки, выведется сообщение "Скобки не парные". Ничего из строки удалено не будет, ввиду того, что выбор не определён: "zoom{sdasd" или "zoom", как удалять? В связи с этим, моя программа удаляет части строки со скобками только в том случае, если последовательность скобок правильная. В остальных случаях выводится соответствующее сообщение.
Цитата Сообщение от Svager Посмотреть сообщение
запустите
И в самом деле, запустите, а ещё лучше, разберите мой код по косточкам.
0
399 / 378 / 408
Регистрация: 14.09.2013
Сообщений: 1,204
01.06.2014, 23:15 10
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
а ещё лучше, разберите мой код по косточкам.
именно
0
01.06.2014, 23:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.06.2014, 23:15
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru