![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Вячеслав Л. |
![]()
Сообщение
#1
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 227 Пол: Мужской Реальное имя: Вячеслав Репутация: ![]() ![]() ![]() |
Задание:
ввести строку (латинские буквы) и подсчитать кол-во букв 'а' в ней Я думаю, это будет выглядеть как-то так: Код program hg; var st:string; k:integer; begin for 1 to length(st) do k:=ord(st,'a') if k:=160 {esli ne owibayus' eto kod bykvy 'a'} then k:=k+1 else writeln('bykv 'a' v stroke net'); end. -------------------- Само знание есть сила
|
RathaR |
![]()
Сообщение
#2
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 346 Пол: Мужской Реальное имя: Иван Репутация: ![]() ![]() ![]() |
Задание: ввести строку (латинские буквы) и подсчитать кол-во букв 'а' в ней а что мешает посимвольно пройтись по строке, проверить каждый символ, ровняеться ли он "а", эфект тотже, да и намного проще чем сравнивать через ASCII таблицу: program hg;
var
st:string;
I,k:integer;
begin
k:=0;
write('Vvedite strokyy');
readln(st);
for I:=1 to length(st) do
If st[I]='a' then inc(k);
If k=0 then writeln('bykv 'a' v stroke net') else writeln('Bykv a v stroke:', k);
end.
З.Ы. Я чтото в твоей програме не увидел где ты считываеш строку St... З.З.Ы. Это роздел Паскаля, поэтому впредь бери код программ в теги "code=pas"... Сообщение отредактировано: RathaR - 29.09.2009 16:21 -------------------- Считающий себя единственым здравомыслящим человеком сумасшедший? Если да, возможно я псих...
Пусть умолкнет всякий критик! Я - системный аналитик! |
Вячеслав Л. |
![]()
Сообщение
#3
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 227 Пол: Мужской Реальное имя: Вячеслав Репутация: ![]() ![]() ![]() |
Rathar за прогу спасибо, но маленько не то. Дело в том, что мне надо использовать оператор ord, помоги пожалуйста его туда вставить.
inc это увеличение на 1, а dec уменьшение да? Цитата Я чтото в твоей програме не увидел где ты считываеш строку St... Про read(st) забыл, да, конечно... Цитата Это роздел Паскаля, поэтому впредь бери код программ в теги "code=pas"... Буду знать, спасибо -------------------- Само знание есть сила
|
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Цитата Дело в том, что мне надо использовать оператор ord, помоги пожалуйста его туда вставить. То есть, неважно, что эта функция (функция, а не оператор на самом деле) не нужна для решения задачи, главное ее запихать?for I:=1 to length(st) do
If Ord(st[I]) = Ord('a') then inc(k);
, но это - извращение... |
Вячеслав Л. |
![]()
Сообщение
#5
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 227 Пол: Мужской Реальное имя: Вячеслав Репутация: ![]() ![]() ![]() |
volvo, серьезно, ты и меня пойми
мы повторяем функции (именно функции, а не операторы, я оговорился) str, val, ord, chr. Дается задание на умение использовать эти функции. Соответственно они должны быть в программе. Цитата for I:=1 to length(st) do
If Ord(st[I]) = Ord('a') then inc(k);
Как все-таки написать это с ord? -------------------- Само знание есть сила
|
Unconnected |
![]()
Сообщение
#6
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Цитата Прости, но это глупо. Как все-таки написать это с ord? Не понял, а почему глупо? Код volvo решает твою задачу. -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
volvo |
![]()
Сообщение
#7
|
Гость ![]() |
Цитата Как все-таки написать это с ord? Показываешь ему, как написать с Ord - "глупо", показываешь, как правильно - "мне надо с Ord"... Ты определись, "тебе шашечки или ехать?" (С) Ну, захардкодил ты:for I:=1 to length(st) do
If Ord(st[I]) = 97 then inc(k);
, тебе от этого проще стало? А ничего, что компилятор сгенерирует одинаковый код для этих двух вариантов, он ведь автоматически заменит Ord('a') на то самое 97... Только учти, придется посчитать количество русских букв, а Ord('м') на разных машинах может быть разным, привыкнешь делать "как не глупо" - будешь потом иметь большие проблемы, а мой код будет одинаково работать ВЕЗДЕ...В общем, все понятно, нотации тебе не нужны, правила "как НЕ надо писать программы" ты тоже не читаешь, чего я тут распинаюсь? |
Вячеслав Л. |
![]()
Сообщение
#8
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 227 Пол: Мужской Реальное имя: Вячеслав Репутация: ![]() ![]() ![]() |
Хорошо, volvo, прости, я определился. Действительно, ord здесь не нужен, можно обойтись и без него.
Цитата А ничего, что компилятор сгенерирует одинаковый код для этих двух вариантов, он ведь автоматически заменит Ord('a') на то самое 97... Только учти, придется посчитать количество русских букв, а Ord('м') на разных машинах может быть разным, привыкнешь делать "как не глупо" - будешь потом иметь большие проблемы, а мой код будет одинаково работать ВЕЗДЕ... За объяснение, спасибо, я этого просто не знал. Твой код действительно удобнее. Цитата В общем, все понятно, нотации тебе не нужны, правила "как НЕ надо писать программы" ты тоже не читаешь, чего я тут распинаюсь? Здесь, ты не прав, если бы мне была бы не нужна ваша помощь и ваши, как ты выразился, нотации, я бы сюда не обращался. Соответсвенно, критику по делу в свой адрес только приветствую. -------------------- Само знание есть сила
|
RathaR |
![]()
Сообщение
#9
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 346 Пол: Мужской Реальное имя: Иван Репутация: ![]() ![]() ![]() |
inc это увеличение на 1, а dec уменьшение да? inc(I,N); I - переменная целого типа которая будет увеличена, а N - число на которое будет увеличено I, если N не задан, то по умолчанию используеться 1, dec(I,N); - тоже самое, только на уменьшение. -------------------- Считающий себя единственым здравомыслящим человеком сумасшедший? Если да, возможно я псих...
Пусть умолкнет всякий критик! Я - системный аналитик! |
Lapp |
![]()
Сообщение
#10
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
У меня есть предложение зайти с другой стороны)). В условии сказано:
Цитата подсчитать кол-во букв 'а' в ней - заметьте: букв, а не символов. И это при некоторой фантазии можно понять как наличие как маленьких, так и больших букв 'a'. Хотя, это еще не дает достаточно доводов в пользу использования Ord. Но если мы добавим в программу некоторую универсальность (а именно, чтобы код изменялся самым минимальным образом при изменении 'a' на 'b' или еще что-то) - вот тут наш пресловутый Ord заявит о себе во весь голос.При этом условие практически то же (а может, и более точно), требуемая функция использована, и функциональность кода повышена (на случай дописывания). -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
andriano |
![]()
Сообщение
#11
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: ![]() ![]() ![]() |
Но если мы добавим в программу некоторую универсальность (а именно, чтобы код изменялся самым минимальным образом при изменении 'a' на 'b' или еще что-то) - вот тут наш пресловутый Ord заявит о себе во весь голос. Не понял.Минимальное изменение программы, это когда она при смене буквы вообще не меняется (а нужная буква, скажем, вводится с клавиатуры или из конфигурационного файла). И в этом случае не понимаю, как замена символьной константы на символьную переменную может привенсти к использованию оператора ord. program hg;
var
st:string;
I,k:integer;
ch : char;
begin
write('Vvedite strokyy');
readln(st);
write('Vvedite bukvu dl''a poiska');
readln(ch);
k:=0;
for I:=1 to length(st) do
If st[I]=ch then inc(k);
If k=0 then
writeln('bykv ',ch,' v stroke net')
else
writeln('Bykv ',ch,' v stroke:', k);
end.
|
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 1:28 |