![]() |
|
#1
|
||||
|
||||
![]() Помогите пожалуйста написать функцию кот. определяет входит ли данная цифра в заданную строку не менее 2-х раз. (желательно с пояснением
![]() зарание спасибо. |
#2
|
|||
|
|||
![]() Цифра какой длинны? 1 символ или м.б. больше?
Если 1 - то просто идешь по строке, как по массиву и проверяешь каждый символ. Если больше, то чуть сложнее. PosEx тебе поможет. |
#3
|
|||
|
|||
![]() Воть... что-т тип так?
Код:
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
|
||||
|
||||
![]() Ты многое не так понял
![]() Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#5
|
||||
|
||||
![]() вот функция, определяющая сколько раз строка 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
|
||||
|
||||
![]() posEx не пробовали?
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#7
|
||||
|
||||
![]() Цитата:
Спасибо то что нада ![]() осталось только разобраться в кодинге какая строчка за что отвечает, поможеш? ![]() |
#8
|
||||
|
||||
![]() Код:
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
|
||||
|
||||
![]() Ага понятно,
только 4EJIOBEK правильно понял задачу)) там кокрас надо узнать: проверяемая цифра встречается в числе 2 или более раза или нет) |
#10
|
||||
|
||||
![]() Цитата:
Код:
var IsTrue: Boolean; begin IsTrue:= (gg(num, s) >= 2); end; |
#11
|
||||
|
||||
![]() ![]() ![]() |