| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > [Delphi] Простая задачка на строки |
| Автор: Denwer 26.11.2007, 20:42 |
| Помогите плиз с задачкой на строки, Нужно вывести слово в котором первая буква ходит в него только ОДИН раз, если больше, то слово не выводиться. Пример: тетрадь - выводиться; анапа - не выводиться; Задачку то я решил, но у меня выводяться слова даже если первая буква входит в него больше двух раз. Function TwoWord (var word: string) : boolean; var i: integer; first: string; begin Result := False; first := word[1]; for i:=2 to Length(Word) do if (Word[i] = first) then Result := True; end; Вот моя функця. Подправьте плиз |
| Автор: Alexeis 26.11.2007, 21:22 |
| Для домашних заданий, курсовых, существует "Центр Помощи". Тема перенесена! |
| Автор: ivan219 27.11.2007, 01:10 | ||
Тебе нужен счетчик вхождения букв в слово:
|
| Автор: Denwer 27.11.2007, 01:42 |
| Спасибо, всё работает !!! |
| Автор: THandle 27.11.2007, 10:51 |
| Я бы ещё Length(Word) вынес бы в отдельную переменную |
| Автор: Denwer 30.11.2007, 18:21 |
| Не подскажете, например та же самая задача, только вторая буква не первая? это типа так (if Word[I] = Word[2] then Inc(I1);)??? |
| Автор: mr.Anderson 30.11.2007, 19:15 |
| Denwer, именно. |
| Автор: ivan219 30.11.2007, 19:30 | ||||
Любая позиция буквы:
На все случаи
|
| Автор: Denwer 1.12.2007, 22:11 |
| Спасибо, все понял, но ещё один вопрос. 1. Функция ведь должна возвращать и вот такое слово, например (vvcccccc), так как вторая буква входит в слово ещё раз. Можно было бы конечно добавить типа того: for I := PosC to LengthW do if (Word[I] = Word[PosChar]) then Inc(I1); if (I1 = 1) or (Word[1] = Word[2]) then Result := True; но тогда она будет и возвращать и (vvcccccvv), к примеру. Вот как тут быть? |
| Автор: Denwer 5.12.2007, 21:00 |
| Я точно узнаю условие, и тогда если что обращусь. Ещё одно, у меня здесь есть процедура которая бежит по Memo и находит самое короткое слово. Но к сожалению выводит только одно слово. А надо чтоб выводило все самые коротке слова одинаковой длины. Вот код. procedure TForm1.btnFindClick(Sender: TObject); var i: integer; word: string; begin if (Memo1.Lines.Count >= 2) and (Memo1.Lines.Count < 50) then begin for i := 0 to Memo1.Lines.Count - 1 do begin if i = 0 then word := Memo1.Lines[0] else if Length(Memo1.Lines[i]) < Length(word) then word := Memo1.Lines[i]; end; end; Memo2.Lines.Add(word); end; Может подправите...? |
| Автор: ivan219 6.12.2007, 02:18 | ||||
Но вобщето эта процедура всё правильно делает, не много подправил:
А найти все короткие можно так:
Конечно алгоритм не ахти и написан на коленках но должен работать. P.S. Используй подсветку синтаксиса кнопка Код |
| Автор: Denwer 6.12.2007, 09:15 |
| Спасибо, с меня пиво... |