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

Вниз

Как написать чтоб Делпхи считал гласные и согласные буквы?   Найти похожие ветки 

 
radion ©   (2003-02-14 14:26) [0]

В Лабораторной Работе мне надо написать функцыю которая подшитывает, в строке, на сколько гласных больше чем согласных.

Написал цикл, сделал щочики. А как опеделить какая буква гласная, а какая согласная? Или писать "if (S[i]="A") or (S[i]="B") or (S[i]="C")..." и т.д.?

***************************************************************
function HowMore(S:string):integer;
begin
Sog := 0;
Gla := 0;
For i:=1 to Length(S) do
begin
If S[i] = ??? then Sog:=Sog+1; // podschjot SOG
If S[i] = ??? then Gla:=Gla+1; // podschjot GLA
end;
Result:=Gla-Sog;
end;

***************************************************************

Спасибо!


 
Reindeer Moss Eater   (2003-02-14 14:28) [1]

Спроси у учительницы русского языка. И не только про гласные/согласные.


 
radion ©   (2003-02-14 14:31) [2]

Да буквы то вводятся англиские, типа "a,b,c,d,e,f...".


 
Reindeer Moss Eater   (2003-02-14 14:36) [3]

Ну тогда к англичанке твой путь лежит


 
Reindeer Moss Eater   (2003-02-14 14:36) [4]

Но к русичке все же заскочи.


 
Юров Владимир ©   (2003-02-14 14:48) [5]

Попробуй такой вариант:


function HowMore(S:string):integer;

Const
Sog = "bcdfg"; {Согласные}
Gla = "aei"; {Гласные}

Var
I, S, G : Integer;
C : String[1];
begin
S := 0;
G := 0;
For i:=1 to Length(Edit1.Text) do
begin
C := Copy(Edit1.Text, i, 1);
If pos(C, Sog) <> 0 then Inc(S);
If pos(C, Gla) <> 0 then Inc(G);
end;
Result := G - S;
end;



Топорно, но работает.
При желании можно оптимизировать алгоритм


 
Юров Владимир ©   (2003-02-14 14:52) [6]

Ошибся в заголовке и теле функции:

Заголовок:
function HowMore(St:string):integer;

Тело:

...
For i:=1 to Length(St.Text) do
begin
C := Copy(St, i, 1);
If pos(C, Sog) <> 0 then Inc(S);
If pos(C, Gla) <> 0 then Inc(G);
end;
...




 
MBo ©   (2003-02-14 14:59) [7]

лучше не со строками, а со множествами символов работать, применяя in


 
Юров Владимир ©   (2003-02-14 15:02) [8]

Можно и со множествами, но, ИМХО, в строки проще


 
myor ©   (2003-02-14 15:28) [9]

по-моему лучше MBo © (14.02.03 14:59)


 
radion ©   (2003-02-14 15:40) [10]

Спасибо,Юров Владимир, написал - работает :) !


Const SOG = "bcdgjklmnpqrstvwxyzBCDGJKLMNPQRSTVWXYZ";
Const GLA = "aeiouyAEIOUY";

VAR Scount,Gcount:integer;
VAR RC,i:integer;
VAR S:string;

function HowMore(S:string):integer;
begin
Scount := 0;
Gcount := 0;
For i:=1 to Length(S) do
begin
If Pos(S[i],SOG) <> 0 then Scount:=Scount+1;
If Pos(S[i],GLA) <> 0 then Gcount:=Gcount+1;
end;
Result:=Gcount-Scount;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
S:=Edit1.Text;
ListBox1.Items.Add(S);

RC:=HowMore(S);

If RC >= 3 then ListBox2.Items.Add(S);
If RC >= 3 then ListBox3.Items.Add( IntToStr(RC) );

end;

end.


 
han_malign ©   (2003-02-14 15:46) [11]

(UpperCase(S[i])in["A","E","I","O","U","Y"])


 
Shadow ©   (2003-02-14 15:46) [12]

2Radion
AnsiUpperCase не судьба использовать?


 
myor ©   (2003-02-14 17:40) [13]

...
var g_count, i: integer;
s: string;
begin
s:=edit1.text;
g_count:=0;
for i:=1 to length(s) do
if s[i] in ["E","Y","U","I","O","A","e","y","u","i","o","a"]
then inc(g_count)
else dec(g_count);
end;
...
label1.caption:=inttostr(g_count);
...



 
radion ©   (2003-02-14 21:15) [14]

не, там задание было именно чтоб с функцией написать.
А если усер цифру вбацает :) ?


 
Shc   (2003-02-14 21:16) [15]

Вообще-то, действительно, достаточно использовать только одно множество (или строку - по хелпу бистрее), причем только из больших (маленьких) букв.


 
radion ©   (2003-02-14 23:22) [16]

Нет, тут видь спрашиваются именно гласные и согласные буквы. Т.е. нелзя предпологать что "если S[i] <> согласная, то это гласная", потаму что это можит быть и цифра, или какая точка-запитая. Разве нет?


 
Shc   (2003-02-15 18:17) [17]

Как человек, причастный к составлению подобных заданий, я просто предплагаю, что в большинстве таких заданий действует принцип "исключения третьего".


 
Shc   (2003-02-15 18:18) [18]

Как человек, причастный к составлению подобных заданий, я просто предплагаю, что в большинстве таких заданий действует принцип "исключения третьего", но если такое не оговаривается, то, конечно, следует описивать оба множества (строки).


 
myor ©   (2003-02-17 12:16) [19]

поправочка (myor © (14.02.03 17:40)):

...
if s[i] in ["E","Y","U","I","O","A","e","y","u","i","o","a"]
then inc(g_count)
else
if s[i] in ["q","w","r","t",...]//согласные
then
dec(g_count);
...



 
Юров Владимир ©   (2003-02-17 12:24) [20]

2myor ©
А если надо посчитать не согласные и гласные буквы, а скажем, символы и цифры? И без вмешательства в код?


 
myor ©   (2003-02-17 12:42) [21]

как это "без вмешательства"?
если не известно наперед, что с чем сравнивать?

задаешь множества "гласные", "согласные", "знаки препинания",
"математические знаки", "цифры", "специальные знаки" и т. д..
а чекбоксом определяешь пару групп для сравнения.
так пойдет?


 
Юров Владимир ©   (2003-02-17 12:54) [22]

Я к тому что наборы символов можно хранить в отдельном файле.
ИМХО в строки проще запихать содержимое файла, чем во множества


 
myor ©   (2003-02-17 13:14) [23]

зачем же их в файле хранить?

собственно, по вопросу есть два варианта: строка + pos и множество + in.
radion, похоже, выбрал твой вариант.


 
radion ©   (2003-02-17 17:17) [24]

Строку + Пос я выбрал по тому, что, честно говоря, множества + ин мы ещо не прохадили :(

Как всё выгледит, можно увидить на
http://www.vi2.com/getFile/96536.jpg
Потом заменяети "jpg" на "doc" и открываети в Ворде.


Спасибо!


 
mate ©   (2003-02-17 17:54) [25]

radion © но вот это обязательно сделай ->
Reindeer Moss Eater (14.02.03 14:36)



Страницы: 1 вся ветка

Текущий архив: 2003.02.27;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.018 c
1-87358
serg111
2003-02-14 23:01
2003.02.27
как узнать цвет pixel а


14-87701
IlyaGer
2003-02-11 17:03
2003.02.27
Где взять с исходниками бесплат. компоненту типа TCheckTreeView


4-87764
Лёха2003
2003-01-10 23:38
2003.02.27
Дескрипторы окон в таскбаре


1-87443
яяяяяяя
2003-02-18 16:31
2003.02.27
Types of actual and and formal var parameters must be identical


1-87457
woland
2003-02-15 21:58
2003.02.27
Dll