Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.61/75: Рейтинг темы: голосов - 75, средняя оценка - 4.61
 Аватар для muxomor
1 / 1 / 0
Регистрация: 07.11.2009
Сообщений: 49

Дана строка. Подсчитать общее количество содержащихся в ней строчных латинских и русских букв.

03.02.2010, 16:34. Показов 15908. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дана строка. Подсчитать общее количество содержащихся в ней строчных латинских и русских букв.

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var
s:string;
i:byte;
k:integer;
 begin
 k:=0;
 writeln('vvedite predlogenie');
 readln(s);
  for i:= 1 to length(s) do begin   
 if s[i]='a' then
 k:=k+1;                                 
 end;
writeln('kolishestvo a=',k);
   readln;
end.
здесь считал кол-во букв "а", как подсчитать кол-во строчных букв?(((((((

Добавлено через 7 минут
коды строчных букв латинского алфавита с 97 по 122, коды строчных букв русского алфавита в двух диапазонах: с 160 по 175, с 224 по 239...
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.02.2010, 16:34
Ответы с готовыми решениями:

Дана строка. Подсчитать общее количество содержащихся в ней строчных латинских и русских букв
Дана строка. Подсчитать общее количество содержащихся в ней строчных латинских и русских букв.

Дана строка. Подсчитать общее количество содержащихся в ней строчных латинских и русских букв
1) Дан символ "С" и строки "S","S0". После каждого вхождения символа "С" в строку "S" вставить строку "S0". 2) Даны строки...

Дана строка. Подсчитать общее количество содержащихся в ней строчных латинских и русских букв.
Дана строка. Подсчитать общее количество содержащихся в ней строчных латинских и русских букв.срочно и с объяснениями

31
233 / 95 / 15
Регистрация: 31.12.2009
Сообщений: 224
03.02.2010, 17:23
Если я правильно понял задачу, то вот один из вариантов решения
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TFormMain.Proc1(const S: string; out Stroch, Propis: Integer);
var
  I: Integer;
begin
  Propis := 0;
  Stroch := 0; 
  for I := 1 to Length(S) do
  begin
    if (S[I] >= 'a') and (S[I] <= 'z') then Propis := Propis + 1;
    if (S[I] >= 'A') and (S[I] <= 'Z') then Stroch := Stroch + 1;
    if (S[I] >= 'à') and (S[I] <= 'ÿ') then Propis := Propis + 1;
    if (S[I] >= 'À') and (S[I] <= 'ß') then Stroch := Stroch + 1;
  end;
end;
1
 Аватар для Biggemot
163 / 140 / 23
Регистрация: 28.12.2009
Сообщений: 365
03.02.2010, 17:32
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var
s:string;
i:byte;
k,m:integer;
begin
k:=0;
m:=0;
writeln('vvedite predlogenie');
readln(s);
for i:= 1 to length(s) do begin
if s[i] in [#97..#122] then
k:=k+1;
if (s[i] in [#160..#175]) or (s[i] in [#224..#239]) then
m:=m+1;
end;
writeln('kolishestvo latiskih=',k);
writeln('kolishestvo russkih=',m);
readln;
end.
коды русских букв неправильные, а в остальном все работает )
0
 Аватар для muxomor
1 / 1 / 0
Регистрация: 07.11.2009
Сообщений: 49
04.02.2010, 07:07  [ТС]
спс, что натолкнули на правильный ход мысли))) я реалзовал эту задачу следующим способом:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
s:string;
i:byte;
k:integer;
 begin
 k:=0;
 writeln('vvedite predlogenie');
 readln(s);
 for i:= 1 to length(s) do begin   {условие для поиска}
 if ((ord(s[i])>=97) and (ord(s[i])<=122)) or ((ord(s[i])>=160) and (ord(s[i])<=175))
 or ((ord(s[i])>=224) and (ord(s[i])<=239)) then
 k:=k+1;                                 {счестчик}
 end;
   write (k);
   readln;
end.
0
 Аватар для Biggemot
163 / 140 / 23
Регистрация: 28.12.2009
Сообщений: 365
04.02.2010, 08:15
неправильно считает русские буквы у тебя, говорю же коды неверные
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
04.02.2010, 08:57
Через коды символов в данном случае лучше не делать, а написать через множества примерно следующее
Delphi
1
2
3
4
5
6
7
8
9
10
...
c1:=0;
c2:=0;
...
if s[i] in ['a'..'z'] then
  inc(c1)
else
  if s[i] in ['а'..'я'] then
    inc(c2);
...
если счетчик общий, то будет так
Delphi
1
2
3
4
5
6
...
c:=0;
...
if s[i] in ['a'..'z','а'..'я'] then
  inc(c);
...
0
 Аватар для Biggemot
163 / 140 / 23
Регистрация: 28.12.2009
Сообщений: 365
04.02.2010, 10:23
Цитата Сообщение от Inadequate Посмотреть сообщение
Через коды символов в данном случае лучше не делать, а написать через множества примерно следующее
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var
s:string;
i:byte;
k,m:integer;
begin
k:=0;
m:=0;
writeln('vvedite predlogenie');
readln(s);
for i:= 1 to length(s) do begin
if s[i] in ['a'..'z'] then
  k:=k+1
else
  if s[i] in ['а'..'я'] then
  m:=m+1;
end;
writeln('kolishestvo latiskih=',k);
writeln('kolishestvo russkih=',m);
readln;
end.
русские не считает
0
0 / 0 / 0
Регистрация: 23.11.2010
Сообщений: 3
23.11.2010, 20:32
Извините за глупый вопрос, но, что означает s[i]?
0
 Аватар для anonimus
2184 / 1255 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
23.11.2010, 20:41
KP0T, к примеру если s:='пример'; то s[i] = п потом р потом и и т.д.
0
0 / 0 / 0
Регистрация: 23.11.2010
Сообщений: 3
23.11.2010, 21:42
Я понял из программы).Я знаю, что в квадратных скобках задается длина строки, а как она с циклом связана не знаю. Можно ссыль на учебник или справку об этом моменте? Заранее спасибо
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
24.11.2010, 01:48
KP0T, link
1
0 / 0 / 0
Регистрация: 23.11.2010
Сообщений: 3
24.11.2010, 14:18
Если s: string; i: byte; и ord работает только с char то s[i] должно быть char, но почему?
0
ALEXEIEW
11.01.2011, 14:34
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
e,r:integer;
begin
e:=0;
s:=Edit1.Text;
for r := 1 to Length(Edit1.Text)  do
if (s[r] in  ['а'..'я']) then 
e:=E+1; 
ShowMessage(InttoStr(e)+ ' - русских букв');
 
end;
 Комментарий модератора 
Код надо оформлять с применением соответствующих тегов. - Это требование правил форума.
 Аватар для Mawrat
13113 / 5894 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
11.01.2011, 15:02
Цитата Сообщение от KP0T Посмотреть сообщение
Если s: string; i: byte; и ord работает только с char то s[i] должно быть char, но почему?
Строка состоит из символов. Поэтому отдельный символ строки принадлежит типу Char.

Добавлено через 12 минут
Решение:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
program Project1;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils,
  Windows;
 
const
  //Множество строчных букв.
  //Задание множества букв в таком виде совместимо и с кодовой страницей CP1251 (Windows)
  //и с CP866 (DOS).
  Da = [
    //Буквы кириллицы.
    'а'..'п', 'р'..'я', 'ё',
    //Буквы латиницы.
    'a'..'z'
  ];
var
  S : String;
  i, Cnt : Integer;
begin
  //Переключаем консоль на кодовую страницу CP1251 (Win-1251).
  //Если после переключения буквы кириллицы показываются неверно, следует
  //открыть системное меню консоли - слева вверху окна консоли - и выбрать:
  //свойства - закладка "Шрифт" - выбрать шрифт: "Lucida console".
  SetConsoleCp(1251);
  SetConsoleOutputCP(1251);
 
  repeat
    Writeln('Задайте строку:');
    Readln(S);
    Cnt := 0;
    for i := 1 to Length(S) do
      if S[i] in Da then Inc(Cnt)
    ;
    Writeln('Всего строчных латинских и русских букв: ', Cnt);
    Writeln(S);
 
    Writeln('Повторить - Enter, выход - любой символ + Enter.');
    Readln(S);
  until S <> '';
end.
---
Обращу внимание. Код вводится в редакторе Delphi в кодировке CP1251, а когда программа запускается на выполнение, консольное окно работает с кодовой страницей CP866. Поэтому коды букв, которые заданны в тексте программы не соответствуют кодам букв в консольном окне. Чтобы эту проблему решить, следует переключить окно консоли на кодовую страницу CP1251 - что и сделано в показанном выше коде.
0
0 / 0 / 0
Регистрация: 21.11.2010
Сообщений: 37
20.02.2011, 12:28
Плиз помогите....тоже примерная такая же задача=)

Дана строка. Подсчитать количество содержащихся в ней цифр1|[прописных букв]2|[строчных букв]3.
0
 Аватар для Mawrat
13113 / 5894 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
21.02.2011, 03:54
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
program Project1;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils,
  Windows;
 
const
  //Множество заглавных букв.
  Dau = [
    //Буквы кириллицы.
    'А'..'П', 'Р'..'Я', 'Ё',
    //Буквы латиницы.
    'A'..'Z'
  ];
  //Множество строчных букв.
  Dal = [
    //Буквы кириллицы.
    'а'..'п', 'р'..'я', 'ё',
    //Буквы латиницы.
    'a'..'z'
  ];
  //Множество цифр.
  Dd = ['0'..'9'];
var
  S : String;
  i, CntAu, CntAl, CntD : Integer;
begin
  SetConsoleCp(1251);
  SetConsoleOutputCP(1251);
 
  repeat
    Writeln('Задайте строку:');
    Readln(S);
    CntAu := 0;
    CntAl := 0;
    CntD := 0;
    for i := 1 to Length(S) do
      if S[i] in Dau then Inc(CntAu)
      else if S[i] in Dal then Inc(CntAl)
      else if S[i] in Dd then Inc(CntD)
    ;
    Writeln('Всего заглавных букв: ', CntAu);
    Writeln('Всего строчных букв: ', CntAl);
    Writeln('Всего цифр: ', CntD);
 
    Writeln('Повторить - Enter, выход - любой символ + Enter.');
    Readln(S);
  until S <> '';
end.
0
 Аватар для ArtGrek
425 / 53 / 15
Регистрация: 31.12.2010
Сообщений: 191
21.02.2011, 05:50
Mawrat воспользовался вашим кодом как шаблоном и изменил на еше один из вариантов
только для латинских букв и цифр
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
program Project1;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils,
  Windows;
 
var
  S : String;
  i, CntAu, CntAl, CntD : Integer;
  //  A 65-91 Z; // a 97-123 z; // 0 48-57 1
begin
  SetConsoleCp(1251);
  SetConsoleOutputCP(1251);
 
  repeat
    Writeln('Задайте строку:');
    Readln(S);
    CntAu := 0;      
    CntAl := 0;  
    CntD := 0;
    for i := 1 to Length(S) do
    begin
      if (ord(S[i]) >= 65) and (ord(S[i]) <= 91) then Inc(CntAu)
      if (ord(S[i]) >= 97) and (ord(S[i]) <= 123) then Inc(CntAl)
      if (ord(S[i]) >= 48) and (ord(S[i]) <= 57) then Inc(CntD)
    end;
 
    Writeln('Всего заглавных букв A-Z: ', CntAu);
    Writeln('Всего строчных букв a-z: ', CntAl);
    Writeln('Всего цифр 0-9: ', CntD);
 
    Writeln('Повторить - Enter, выход - любой символ + Enter.');
    Readln(S);
  until S <> '';
end.
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
21.02.2011, 07:29
Цитата Сообщение от ArtGrek Посмотреть сообщение
Mawrat воспользовался вашим кодом как шаблоном и изменил на еше один из вариантов только для латинских букв и цифр
Зачем ?
0
 Аватар для ArtGrek
425 / 53 / 15
Регистрация: 31.12.2010
Сообщений: 191
21.02.2011, 09:18
Зачем ?
что зачем?
воспользовался кодом? что б время съекономить?
показал еше один вариант? что б автор знал что можно зделать и по другому?
Inadequate вы возражаете? даже не представляю в связи с чем?
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
21.02.2011, 11:19
Цитата Сообщение от ArtGrek Посмотреть сообщение
Inadequate вы возражаете? даже не представляю в связи с чем?
Да нет, мне просто интересно было для чего ты вообще что-то переделывал. Дело хозяйское конечно, но можно ведь сделать еще N-ое количество вариантов, например для цифр 1-5, для букв от a-f, ну чтобы автор знал, что и так можно. Вопрос только зачем ? Паша написал довольно подробный пример, тщательно прокомментировал ключевые строки этого кода. Если после прочтения его кода gugavi (который между прочим влез в чужую тему) не поймет, что все зависит от того как задашь множество, то значит оно ему и не нужно. Если он сам не будет понимать таких мелочей, то лучше пока не поздно подумать о чем-нибудь другом.
Цитата Сообщение от ArtGrek Посмотреть сообщение
что б время съекономить?
Экономя на времени очень, часто экономят и на качестве. Ты вроде дописал всего пару строк, но и те с ошибками. Возможно, если бы ты не брал чужое, а писал все сам, то не допустил бы их. Кроме того в подобных задачах лучше использовать именно множества. Во-первых код становится более понятен другому человеку, а во-вторых он становится более компактный.

Не по теме:

P.S. Вопросительный знак не единственный, чем могут оканчиваться предложения.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.02.2011, 11:19
Помогаю со студенческими работами здесь

Подсчитать общее количество содержащихся в ней строчных латинских и русских букв
Дана строка. Подсчитать общее количество содержащихся в ней строчных латинских и русских букв.

Дана строка. Подсчитать общее колличество прописных и строчных латинских и русских букв и вывести на консоль количество
Нужно ввести с консоли строку символов (длиной до 80 символов), и вывести на консоль количество маленьких букв в строке и количество...

Подсчитать общее количество строчных латинских и русских букв, содержащихся в строке
Visual Studio 2013 Проблема в том , что не выводит количество В чем ошибка? #include &lt;iostream&gt; #include &lt;conio.h&gt; ...

Подсчитать общее количество содержащихся в строке строчных латинских и русских букв
Дана строка. Подсчитать общее количество содержащихся в ней строчных латинских и русских букв.

Подсчитать общее количество содержащихся в строке строчных латинских и русских букв
Дана строка. Подсчитать общее количество содержащихся в ней строчных латинских и русских букв.На с++


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru