Форум: "Начинающим";
Текущий архив: 2006.02.12;
Скачать: [xml.tar.bz2];
ВнизПомогите с множеством Найти похожие ветки
← →
pikass (2006-01-23 00:54) [0]Дан текст на русском языке. Напечатать в алфавитном порядке все глухие согласные буквы, которые не входят хотя бы в одно слово.
Я короче ввожу строку или слово одно, затем считываю все глухие в множество, а как мне вывести глухие которых нет в слове. Помогите, если нетрудно.
← →
Zeqfreed © (2006-01-23 01:12) [1]pikass (23.01.06 0:54)
Наиболее простой вариант: (1) завести массив, кол-во элементов которого равно кол-ву букв в алфавите, границы массива задать от Ord("а") до Ord("я"), тип массива — Boolean (2) обнулить массив (установить значения всех элементов в false (3) в цикле пройтись по строке и при нахождении глухой согласной установить соответствующий элемент Ord(Str[Idx]) массива в true (4) в цикле пройтись по всем элементам массива и вывести те из них, которые сброшены (равны false). Пользуйтесь на здоровье :)
p.s. Видимо, весьма популярна задача в институтах. Довольно-таки часто похожие поросы на форуме возникают :)
← →
Zeqfreed © (2006-01-23 01:32) [2]pikass (23.01.06 0:54)
type
TUnvoicedLetterType = (ulK = Ord("к"), ulP = Ord("п"), ulS = Ord("с"), ulT = Ord("т"), ulF = Ord("ф"),
ulH = Ord("х"), ulCh = Ord("ч"), ulShc = Ord("щ")); //Hope, didn"t miss any?
TUnvoicedLetters = set of TUnvoicedLetterType;
. . .
const
ULNUM = 8;
. . .
function GetUnvoicedLetters(const Str : String) : TUnvoicedLetters;
const
AllUnvoiced : TUnvoicedLetters = [ulK, ulP, ulS, ulT, ulF, ulH, ulCh, ulShc];
var
i : Integer;
begin
Result := [];
for i := 1 to length(Str) do begin
if (TUnvoicedLetterType(Ord(Str[i])) in AllUnvoiced) then
Include(Result, TUnvoicedLetterType(Ord(Str[i])));
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
const
ularr : array[0..ULNUM - 1] of TUnvoicedLetterType = (ulK, ulP, ulS, ulT, ulF, ulH, ulCh, ulShc);
var
ul : TUnvoicedLetters;
i : Integer;
begin
ul := GetUnvoicedLetters(AnsiLowerCase(Edit1.Text));
Memo1.Clear;
for i := 0 to ULNUM - 1 do begin
if not (ularr[i] in ul) then
Memo1.Lines.Add(Format("There""re no "%s" letters in string you typed!", [Chr(Ord(ularr[i]))]));
end;
end;
Это если приспичит реализовать через множества, чего я делать не советую :)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.02.12;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.039 c