Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2007, 19:55   #1
DeeCee
 
Аватар для DeeCee
 
Регистрация: 22.12.2007
Сообщений: 8
По умолчанию Строки. Помогите переделать

Моя программа считает только количество символов в строке. А как сделать что бы она считала не любые символы, а заданные только?


Код:

var
st:string[50];
p,i:integer;
begin
st:=Form1.Edit1.Text;
p:=0;
For i:=1 to length(st) do
p:=p+1;
Form1.Edit2.Text:=IntToStr(p);
begin

end;

end;
end.
а вот эта считает только пробелы и буквы b

Код:
const
s=' ';
var
st:string[50];
p,i:integer;
begin
st:=Form1.Edit1.Text;
p:=0;
For i:=1 to length(st) do
if st[i]=s then
if st[i+1]='b' then
p:=p+1;
Form1.Edit2.Text:=IntToStr(p);
begin

end;

end;
end.
DeeCee вне форума Ответить с цитированием
Старый 25.12.2007, 20:18   #2
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Создайте множество и проверяйте, входит ли в него символ
Код:
if st[i] in ['a'..'f','A'..'F','z','Z'] then p:=p+1;
_Dmitry вне форума Ответить с цитированием
Старый 25.12.2007, 21:00   #3
DeeCee
 
Аватар для DeeCee
 
Регистрация: 22.12.2007
Сообщений: 8
По умолчанию

мне нужно что бы он считал только символы - *,;:
DeeCee вне форума Ответить с цитированием
Старый 25.12.2007, 21:02   #4
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
Восклицание

Цитата:
Сообщение от DeeCee Посмотреть сообщение
Моя программа считает только количество символов в строке. А как сделать что бы она считала не любые символы, а заданные только?
Код:
 var
st:string[50];
p,i:integer;
begin
st:=Form1.Edit1.Text;
p:=0;
For i:=1 to length(st) do
p:=p+1;
Form1.Edit2.Text:=IntToStr(p);
begin
end;
end;
end.
http://www.programmersforum.ru/showp...0&postcount=11


Цитата:
Сообщение от DeeCee Посмотреть сообщение
а вот эта считает только пробелы и буквы b
Код:
 const
s=' ';
var
st:string[50];
p,i:integer;
begin
st:=Form1.Edit1.Text;
p:=0;
For i:=1 to length(st) do
if st[i]=s then
if st[i+1]='b' then
p:=p+1;
Form1.Edit2.Text:=IntToStr(p);
begin
end;
end;
end.
Замени "пробелы" и "b" на нужные тебе символы и всё будет считать!

P.S. В данном коде много лишних строк! Их можно обьеденить!
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...

Последний раз редактировалось Yurk@; 25.12.2007 в 21:11. Причина: Поправка к тексту
Yurk@ вне форума Ответить с цитированием
Старый 25.12.2007, 21:14   #5
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Цитата:
Сообщение от DeeCee Посмотреть сообщение
мне нужно что бы он считал только символы - *,;:
Ну, так в чем проблема? перечислите эти символы через запятую и проверяйте
Код:
for i:=1 to length(st) do
  if st[i] in ['*',',',';',':'] then p:=p+1;
_Dmitry вне форума Ответить с цитированием
Старый 25.12.2007, 21:25   #6
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
Лампочка

Цитата:
Сообщение от _Dmitry Посмотреть сообщение
Ну, так в чем проблема? перечислите эти символы через запятую и проверяйте
Код:
for i:=1 to length(st) do
  if st[i] in ['*',',',';',':'] then p:=p+1;
Данный код будет увеличивать счетчик при соответствии любому из перечисленных символов.

А если понадобиться посчитать каждый элемент в отдельности ???
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 25.12.2007, 21:32   #7
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

Тогда надо забацать двумерный массив.
1 столбец - символы.
2 стобец - сколько раз встретились.

Берём посимвольну данную строку и сверяем с каждым элементом массива (1 столбец) . Как только совпало делаем +1 в соответствубщей сточке массива втоогостолбца.
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
Карась вне форума Ответить с цитированием
Старый 25.12.2007, 21:32   #8
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Цитата:
Сообщение от Yurk@ Посмотреть сообщение
Данный код будет увеличивать счетчик при соответствии любому из перечисленных символов.

А если понадобиться посчитать каждый элемент в отдельности ???
Тогда придется усложнять логику.
Это один из вариантов проверки символа, окончательное же решение принимает тот кто пишет программу.
_Dmitry вне форума Ответить с цитированием
Старый 25.12.2007, 21:42   #9
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Можно использовать case
Код:
  for i:=1 to length(st) do
    case st[i] of
    '*': p1:=p1+1;
    ',': p2:=p2+1;
    ';': p3:=p3+1;
    ':': p4:=p4+1;
    end;
_Dmitry вне форума Ответить с цитированием
Старый 25.12.2007, 22:01   #10
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

Полностью согласен с _Dmitry + предлагаю ещё один вариант:
Код:
var
st:string[50];
i, kZv, kZap, kTZ, kDT :integer;

begin
kZv:=0;
kZap:=0;
kTZ:=0;
kDT:=0;
st:=Form1.Edit1.Text;
For i:=1 to length(st) do
begin
if st[i]='*' then begin Inc(kZv);  Edit2.Text:='Количество знаков "*"= '+IntToStr(kZv); end  else
if st[i]=',' then begin Inc(kZap); Edit3.Text:='Количество знаков ","= '+IntToStr(kZap); end  else
if st[i]=';' then begin Inc(kTZ);  Edit4.Text:='Количество знаков ";"= '+IntToStr(kTZ);  end  else
if st[i]=':' then begin Inc(kDT);  Edit5.Text:='Количество знаков ":"= '+IntToStr(kDT);  end  else
end;
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...

Последний раз редактировалось Yurk@; 25.12.2007 в 22:06.
Yurk@ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите переделать и проверьте Mokriy Паскаль, Turbo Pascal, PascalABC.NET 3 22.05.2008 17:26
помогите переделать программы под задание Povar Паскаль, Turbo Pascal, PascalABC.NET 7 22.05.2008 15:59
Помогите переделать Stanislav Общие вопросы Delphi 2 24.10.2007 16:14
Помогите переделать БД Antowka БД в Delphi 17 15.06.2007 21:35