Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.02.2009, 21:21
Аватар для segas
segas segas вне форума
Новичок
 
Регистрация: 08.02.2009
Сообщения: 97
Репутация: 10
Стрелка Функция

Помогите пожалуйста написать функцию кот. определяет входит ли данная цифра в заданную строку не менее 2-х раз. (желательно с пояснением )

зарание спасибо.
Ответить с цитированием
  #2  
Старый 18.02.2009, 21:23
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,094
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цифра какой длинны? 1 символ или м.б. больше?
Если 1 - то просто идешь по строке, как по массиву и проверяешь каждый символ. Если больше, то чуть сложнее. PosEx тебе поможет.
Ответить с цитированием
  #3  
Старый 18.02.2009, 21:43
4EJIOBEK 4EJIOBEK вне форума
Прохожий
 
Регистрация: 13.12.2007
Адрес: Днепропетровск
Сообщения: 19
Репутация: 10
По умолчанию

Воть... что-т тип так?

Код:
Var S:String; // строка где будет поиск
Ch:String[1]; // символ поиска
Number,Count,Len,i:Byte; 
MoreThenOne:Boolean; // ответ 
begin 
S:='jasfaf25jkaf53ld22xakh3g2';//ввод строки...мож через TEdit и тп...
Number:=2; // само число 
Ch:=IntToStr(Number); // Перевод числа в знак
Len:=Length(S); // Определение длинны строки
For i:=1 to Len do   // В цикле мы просматриваем каждый знак строки S
  If (S[i] = Ch) then  // и если i-тый знак равен числу тогда
    Inc(Count); // увеличиваем счетчик на 1

  If (Count >= 2) then // если счетчик более или равно 2 тогда
    MoreThenOne:=True // ответ - да
  Else // в противном случае
    MoreThenOne:=False; // нет

End;

Так? Или я что-т не так понял?
Ответить с цитированием
  #4  
Старый 18.02.2009, 23:14
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Ты многое не так понял
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #5  
Старый 19.02.2009, 00:39
Аватар для Karsh
Karsh Karsh вне форума
Активный
 
Регистрация: 22.09.2007
Адрес: SPb
Сообщения: 228
Версия Delphi: 7, 2009, XE2
Репутация: 70
По умолчанию

вот функция, определяющая сколько раз строка num появляется в строке s:
Код:
function gg(num, s: string): Integer;
var
  tmp: string;
  x, l: Integer;
begin
  Result:= 0;
  tmp:= s;
  x:= Pos(num, tmp);
  l:= Length(num);
  while x > 0 do
  begin
    tmp:= Copy(tmp, x + l, Length(tmp));
    inc(Result);
    x:= Pos(num, tmp);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(IntToStr(gg(Edit2.Text, Edit1.Text)));
end;
Ответить с цитированием
  #6  
Старый 19.02.2009, 00:42
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

posEx не пробовали?
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #7  
Старый 19.02.2009, 09:23
Аватар для segas
segas segas вне форума
Новичок
 
Регистрация: 08.02.2009
Сообщения: 97
Репутация: 10
Стрелка

Цитата:
Сообщение от Karsh
вот функция, определяющая сколько раз строка num появляется в строке s:
[/code]

Спасибо то что нада
осталось только разобраться в кодинге какая строчка за что отвечает, поможеш?
Ответить с цитированием
  #8  
Старый 19.02.2009, 12:30
Аватар для Karsh
Karsh Karsh вне форума
Активный
 
Регистрация: 22.09.2007
Адрес: SPb
Сообщения: 228
Версия Delphi: 7, 2009, XE2
Репутация: 70
По умолчанию

Код:
function gg(num, s: string): Integer;
var
  tmp: string;
  x, l: Integer;
begin
  Result:= 0; //Устанавливаем значение функции на 0
  tmp:= s; //Сохраняем строку во временной переменной (т.к. мы будем ее изменять)
  x:= Pos(num, tmp); //Смотрим встречается ли num в s
  l:= Length(num); //Определяем длину num (дабы не определять ее каждый раз в цикле)
  //если x=0 тогда выход из функции (поэтому используем while, а не repeat)
  while x > 0 do //Цикл работает пока строка num встречется в строке tmp
  begin
    tmp:= Copy(tmp, x + l, Length(tmp)); //удаляем из строки tmp начальные символы до позиции num + дляна num (т.к. Pos() ищет только первое вхождение одной строки в другую)
    inc(Result); //Увеличиваем значение функции на 1, т.к. одно вхождение мы обнаружили
    x:= Pos(num, tmp); //Смотрим встречается ли num в измененной строке tmp (если нет, то выход из цикла)
  end;
end;
Понятно объяснил?
Ответить с цитированием
  #9  
Старый 19.02.2009, 16:13
Аватар для segas
segas segas вне форума
Новичок
 
Регистрация: 08.02.2009
Сообщения: 97
Репутация: 10
По умолчанию

Ага понятно,
только 4EJIOBEK правильно понял задачу)) там кокрас надо узнать: проверяемая цифра встречается в числе 2 или более раза или нет)
Ответить с цитированием
  #10  
Старый 19.02.2009, 17:18
Аватар для Karsh
Karsh Karsh вне форума
Активный
 
Регистрация: 22.09.2007
Адрес: SPb
Сообщения: 228
Версия Delphi: 7, 2009, XE2
Репутация: 70
По умолчанию

Цитата:
Сообщение от segas
Ага понятно,
только 4EJIOBEK правильно понял задачу)) там кокрас надо узнать: проверяемая цифра встречается в числе 2 или более раза или нет)
А что тебе мешает сделать такое условие:
Код:
var
  IsTrue: Boolean;
begin
  IsTrue:= (gg(num, s) >= 2);

end;
Ответить с цитированием
  #11  
Старый 19.02.2009, 18:12
Аватар для segas
segas segas вне форума
Новичок
 
Регистрация: 08.02.2009
Сообщения: 97
Репутация: 10
По умолчанию

гыг я так и зделал
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 22:09.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025