Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.02.27;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.008 c
1-87360
dimonxp
2003-02-17 08:44
2003.02.27
Проблема при компиляци


14-87638
gn
2003-02-06 06:09
2003.02.27
Эгоисты!!!!!!!1


3-87334
Yagoda
2003-02-10 21:16
2003.02.27
Transfer data from xls ...


1-87487
Process Killer
2003-02-14 16:57
2003.02.27
Delphi and HTML


7-87724
BOBAKO
2002-12-28 19:44
2003.02.27
Помогите с кодом...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский