Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 25.10.2016
Сообщений: 10
Записей в блоге: 1
1

Определить номер позиции первой буквы в строке

30.10.2016, 20:31. Показов 2194. Ответов 11
Метки нет (Все метки)

буква может быть маленькой или большой русского или англ. алфавита.
Delphi
1
2
3
4
5
6
7
8
9
10
11
procedure TForm1.Button1Click(Sender: TObject);
var st:string;
i,j:integer;
begin
st:=Edit1.Text;
j:=0;
for i:=Length(st) downto 1 do
if (st[i] in['а'..'я']) or (st[i] in ['А'..'Я']) then j:=i;
Edit2.Text:=IntToStr(i);
end;
end.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.10.2016, 20:31
Ответы с готовыми решениями:

Программа определяет в строке номер позиции слова(первой буквы) с заданным номером
Программа определяет в строке номер позиции слова(первой буквы) с заданным номером Помогите...

В текстовом файле.Определить номер строки и номер позиции в этой строке, с которой начинается слово “plus”
Определить номер строки и номер позиции в этой строке, с которой начинается слово “plus”. Вывести...

Определить номер первой и номер последней буквы К в тексте
Ребята, я уже вчера обращалась за помощью, простите меня за наглость, сделаю это еще раз.. У меня...

Дано предложение. Определить порядковый номер первой встреченной буквы 'к', если буквы нет, сообщить об этом
C# Дано предложение. Определить порядковый номер первой встреченной буквы 'к'. Если такой буквы...

11
botsik
262 / 262 / 140
Регистрация: 05.06.2016
Сообщений: 1,247
Записей в блоге: 1
30.10.2016, 20:54 2
Ca4ik32, не забудьте про ё и Ё.
Delphi
1
2
3
4
5
6
7
8
9
10
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
s:string;
begin
s:=ansilowercase(edit1.Text); //нижний регистр (чтобы в условии не писать для больших букв)
for i:=0 to length(edit1.text)-1 do
if (s[i] in ['a'..'z']) or (s[i] in ['а'..'я']) or (s[i]='ё') then
break;
edit2.text:=inttostr(i);
end;
чуть чуть упростил

Добавлено через 1 минуту
Цитата Сообщение от Ca4ik32 Посмотреть сообщение
Delphi
1
2
...................then j:=i; 
Edit2.Text:=IntToStr(i);
зачем вам переменная "j"? выводите вы все равно "i"
0
0 / 0 / 0
Регистрация: 25.10.2016
Сообщений: 10
Записей в блоге: 1
30.10.2016, 21:02  [ТС] 3
просто возможно еще в условии и большие англ,рус. буквы запихнуть надо. а вот по вашему сейчас попробывал что-то ошибку выдает.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TForm1.Button1Click(Sender: TObject);
var s:string;
i,j:integer;
begin
s:=Edit1.Text;
j:=0;
for i:=1 to Length(s) do
if (s[i]) in['a'..'z'] then j:=i;
Edit2.Text:=IntToStr(i);
if j=0 then edit2.Text:='нет букв'
else edit2.Text:=IntToStr(j);
end;
end.
вот я свою доработал только вопрос как теперь в условие запихнуть еще букв)
0
botsik
262 / 262 / 140
Регистрация: 05.06.2016
Сообщений: 1,247
Записей в блоге: 1
30.10.2016, 21:06 4
Цитата Сообщение от Ca4ik32 Посмотреть сообщение
в условии и большие англ,рус. буквы запихнуть надо
даже комментарий к коду добавил)
Цитата Сообщение от cfbogd Посмотреть сообщение
Delphi
1
s:=ansilowercase(edit1.Text); //нижний регистр (чтобы в условии не писать для больших букв)
Цитата Сообщение от Ca4ik32 Посмотреть сообщение
что-то ошибку выдает
какая ошибка?
0
0 / 0 / 0
Регистрация: 25.10.2016
Сообщений: 10
Записей в блоге: 1
30.10.2016, 21:11  [ТС] 5
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TForm1.Button1Click(Sender: TObject);
var s:string;
i,j:integer;
begin
s:=Edit1.Text;
j:=0;
for i:=1 to Length(s) do
if (s[i]) in['a'..'z'] or (s[i]) in['а'..'я'] then j:=i;
Edit2.Text:=IntToStr(i);
if j=0 then edit2.Text:='нет букв'
else edit2.Text:=IntToStr(j);
end;
end.
Вот к примеру при запуске выдает ошибку в 8 строке. И можно без break и прочего я прост хз что это :В
0
botsik
262 / 262 / 140
Регистрация: 05.06.2016
Сообщений: 1,247
Записей в блоге: 1
30.10.2016, 21:29 6
Ca4ik32, для начала посмотрите на ваш код, и на мой (а именно 7 строка моего кода). В условном операторе нужно, если несколько условий, то закрывать их кавычками, например:
if (a>10) and (a<20) then...
Во-вторых, пожалуйста, кидайте ваш код в BB-коды, вот пример: [DELPHI]Ваш код[/DELPHI]
Просто очень не просто читать ваш код...

Добавлено через 2 минуты
Цитата Сообщение от Ca4ik32 Посмотреть сообщение
break и прочего я прост хз что это
Процедура break; останавливает цикл. Break в справочнике

Добавлено через 8 минут
а если заменить
Цитата Сообщение от cfbogd Посмотреть сообщение
Delphi
1
edit2.text:=inttostr(i);
в моем коде на
Delphi
1
2
if i=0 then edit2.Text:='нет букв'
else edit2.Text:=IntToStr(i);
то будет еще лучше, прост забыл добавить тогда
0
0 / 0 / 0
Регистрация: 25.10.2016
Сообщений: 10
Записей в блоге: 1
30.10.2016, 21:54  [ТС] 7
Cпасибо, а можете изменить программу? вместо ansilowercase поставить что там надо) Мы просто этого не проходили ,мне лицо за это учителя набьют) Без break .
0
botsik
262 / 262 / 140
Регистрация: 05.06.2016
Сообщений: 1,247
Записей в блоге: 1
30.10.2016, 22:04 8
Ca4ik32, одну секундочку ...
0
2751 / 1561 / 522
Регистрация: 29.05.2013
Сообщений: 6,769
30.10.2016, 22:06 9
без приведения к нижнему регистру через ansilowercase, вам придется не 2 диапазона букв проверять, а 4 с учетом верхнего регистра:
Delphi
1
if (s[i]) in ['a'..'z','A'..'Z','а'..'я','А'..'Я'] then j:=i;
0
botsik
262 / 262 / 140
Регистрация: 05.06.2016
Сообщений: 1,247
Записей в блоге: 1
30.10.2016, 22:12 10
Лучший ответ Сообщение было отмечено Ca4ik32 как решение

Решение

пожалуйста
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure TForm1.Button1Click(Sender: TObject);
var i,j:integer;
s:string;
begin
if length(edit1.Text) = 0 then edit2.Text:='Введите текст!' else
begin
edit2.Text:='Нет букв.'; //если буквы будут, тогда этот текст перекроется
s:=edit1.Text;           
for i:=length(edit1.text) downto 1 do
if s[i] in ['a'..'z','A'..'Z','а'..'я','А'..'Я','ё','Ё'] then
begin
j:=i;
edit2.text:=inttostr(j);
end;
 
end;
 
end;
1
2751 / 1561 / 522
Регистрация: 29.05.2013
Сообщений: 6,769
30.10.2016, 22:40 11
буква Ё - это вредительская буква
Писать надо все через Е
ежик
елка
0
botsik
262 / 262 / 140
Регистрация: 05.06.2016
Сообщений: 1,247
Записей в блоге: 1
30.10.2016, 22:44 12
Пытливый, я так, чтобы наверняка)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.10.2016, 22:44

Строки. Известно, что в строке есть, по крайней мере, одна запятая. Найти номер позиции первой по порядку запятой
известно, что в строке есть, по крайней мере, одна запятая. Найти номер позиции первой по порядку...

Определить номер позиции разделителя в строке
Я понимаю,что этот алгоритм работает через ascii и написал свой код. Но он предательски...

Определить порядковый номер первой встреченной буквы 'к'
1. Дано предложение. Определить порядковый номер первой встреченной буквы 'к'. Если такой буквы...

Напечатать номер позиции пятой буквы "к" в строке, или выдать сообщение, что в строке менее 5 букв "к"
Написать программу, выдающую номер позиции заданной строки, в которой в пятый раз встречается буква...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru