Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2010, 12:26   #1
STIFLER32
Пользователь
 
Регистрация: 12.11.2009
Сообщений: 13
Печаль строки в delphi

Добрый день! Прошу вас помочь в решении задач на DELPHI:

1
Дана строка. Исключить из неё подстроку, расположенную между самой левой открывающейся скобкой "(" и самой правой закрывающейся скобкой")". Сами скобки должны быть так же исключены.

2
Дана строка. Заменить в ней все строчные буквы соответствующими заглавными.
Спасибо тем кто поможет!
STIFLER32 вне форума Ответить с цитированием
Старый 26.03.2010, 12:27   #2
IT-man
АльTRUEи$т
Форумчанин
 
Аватар для IT-man
 
Регистрация: 19.03.2009
Сообщений: 784
По умолчанию

стучись! аська под ником! недорого
Цитата:
«Никто не войдет в Рай, имея хотя бы крупицу гордыни в своем сердце». «Аллах Красив и любит красоту. Гордыня означает отказ от истины и высокомерие»
IT-man вне форума Ответить с цитированием
Старый 26.03.2010, 12:48   #3
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

Код:
// преобразование строки в нижний регистр
function LowCase(s: string): string; 
var
  tmp: string;
  i, k: Integer;
begin
  k := Length(s);  // длина входной строки
  for i := 1 to k do begin    // перебираем каждый символ строки
    case Ord(s[i]) of  // Ord - возвращает ASCII код буквы, т.е. число, Chr возвращает букву из кода
      // в этом диапазоне лежат большие англ буквы
      65..96: tmp := tmp + Chr(Ord(s[i]) + 32);  // прибавляя к коду число 32 мы получаем маленькую букву
      // в этом диапазоне лежат большие русские буквы
      192..223: tmp := tmp + Chr(Ord(s[i]) + 32);
      168: tmp := tmp + Chr(184); // буква ё
      else begin
        tmp := tmp + s[i]; // если попались другие символы, то их не преобразуем
      end;
    end;
  end;
  Result := tmp; // возвращаем результат
end;

// преобразование строки в верхний регистр
function UpCase(s: string): string; // делаем то же самое, но обратное по сравнению с функцией LowCase
var
  tmp: string;
  i, k: Integer;
begin
  k := Length(s);
  for i := 1 to k do begin
    case Ord(s[i]) of
    // в этом диапазоне лежат маленькие англ буквы
      97..122: tmp := tmp + Chr(Ord(s[i]) - 32); // получаем большую буковку
      // в этом диапазоне лежат маленькие русские буквы
      224..255: tmp := tmp + Chr(Ord(s[i]) - 32);
      184: tmp := tmp + Chr(168);
      else begin
        tmp := tmp + s[i];
      end;
    end;
  end;
  Result := tmp;
end;

procedure TForm1.btn1Click(Sender: TObject);
begin
  txt2.Text := LowCase(txt1.Text);
end;

procedure TForm1.btn2Click(Sender: TObject);
begin
  txt2.Text := UpCase(txt1.Text);
end;
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Старый 26.03.2010, 13:36   #4
TzX
Пользователь
 
Аватар для TzX
 
Регистрация: 23.12.2009
Сообщений: 57
По умолчанию

1
Код:
var
  s:string;
  a,b,i:integer;
Begin
  readln(s);
  a:=pos('(',s);
  For i:=1 to length(s) do
  Begin
       if s[i]=')' then b:=i;
  End;
  delete(s,a,b-a+1);
TzX вне форума Ответить с цитированием
Старый 26.03.2010, 13:59   #5
Google2010
Форумчанин
 
Регистрация: 16.02.2010
Сообщений: 316
По умолчанию

Код:
a:=pos('(',s);
-даст самую правую '(', а надо самую левую
вот это надо поменять
Код:
a:=pos('(',s);
  For i:=1 to length(s) do
  Begin
       if s[i]=')' then b:=i;
  End;
на
Код:
b:=pos(')',s);
  For i:=1 to length(s) do
  Begin
       if s[i]='(' then begin  a:=i;break;end;
  End;
ну и далее
Код:
delete(s,a,b-a+1);

Последний раз редактировалось Google2010; 26.03.2010 в 14:03.
Google2010 вне форума Ответить с цитированием
Старый 26.03.2010, 16:46   #6
STIFLER32
Пользователь
 
Регистрация: 12.11.2009
Сообщений: 13
По умолчанию

большое спасибо!
STIFLER32 вне форума Ответить с цитированием
Старый 27.03.2010, 13:44   #7
TzX
Пользователь
 
Аватар для TzX
 
Регистрация: 23.12.2009
Сообщений: 57
По умолчанию

Цитата:
Сообщение от Google2010 Посмотреть сообщение
Код:
a:=pos('(',s);
-даст самую правую '(', а надо самую левую
вот это надо поменять
Код:
a:=pos('(',s);
  For i:=1 to length(s) do
  Begin
       if s[i]=')' then b:=i;
  End;
на
Код:
b:=pos(')',s);
  For i:=1 to length(s) do
  Begin
       if s[i]='(' then begin  a:=i;break;end;
  End;
ну и далее
Код:
delete(s,a,b-a+1);
a:=pos('(',s) - Почему это самую правую скобку? поз возвращает позицию первого вхождения подстроки в строку, да и вообще пример проверен и прекрасно работает. Не пойму смысл ваших поправок
TzX вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строки (Delphi) giga_person Помощь студентам 2 07.03.2010 20:11
Строки в Delphi 534 Помощь студентам 22 24.02.2010 00:57
Строки в Delphi QuadroX Фриланс 9 08.02.2010 16:20
Строки Delphi Дешук Елена Помощь студентам 2 30.12.2009 16:39
строки в Delphi Михаил70 Помощь студентам 2 15.09.2009 02:05