Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.02.12;
Скачать: CL | DM;

Вниз

Помогите с множеством   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.044 c
15-1138092398
BorisMor
2006-01-24 11:46
2006.02.12
Нестандартные компоненты при написание БД


6-1131108985
XCoder
2005-11-04 15:56
2006.02.12
Ошибка при подключении к удаленному компу через интернет


15-1136963744
VID
2006-01-11 10:15
2006.02.12
Медленно работает USB 2.0 на Windows XP SP2


15-1137571462
PKT
2006-01-18 11:04
2006.02.12
Выбрать предмет в универе


8-1124957923
palgen
2005-08-25 12:18
2006.02.12
Как поменять разрешение BMP файла ...