![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Alucard |
![]() ![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 15 Пол: Мужской Реальное имя: Влад Репутация: ![]() ![]() ![]() |
Дана символьная строка. Подсчитать в ней количество вхождений букв г, k, t.
Использую 2 версии паскаля, но код работает неверно в обоих. алгоритм if s[i]=x then find:=p+1; всегда равен 1, а если буквы в строке нет, то значение выставляется 85 в одной версии и 93 в другой 0_о. Где мой косяк? Код program new; uses crt; var s:string; i:integer; function find(x:string):byte; var p:byte; begin for i:=1 to length(s) do if s[i]=x then find:=p+1; end; begin clrscr; writeln('VVedite stroky'); readln(s); writeln('Bykv r ',find('r')); writeln('Bykv k ',find('k')); writeln('Bykv t ',find('t')); readln; end. Сообщение отредактировано: Alucard - 10.02.2009 4:01 |
![]() ![]() |
Ozzя |
![]()
Сообщение
#2
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 220 Пол: Мужской Репутация: ![]() ![]() ![]() |
function find(x:string):byte; |
Alucard |
![]()
Сообщение
#3
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 15 Пол: Мужской Реальное имя: Влад Репутация: ![]() ![]() ![]() |
Ozzя
Спасибо!!! Код function find(x:string):byte; var p:byte; begin p:=0; for i:=1 to length(s) do if s[i]=x then p:=p+1; find:=p; end; Вот так всё работает! |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Цитата Вот так всё работает! Все-таки, на будущее... Если тебе надо искать букву (т.е., символ), то и передавай символ, а не строку:function find(x: char):byte;И понятнее, что от функции требуется, и оградит тебя от проблем, скажем, при попытке посчитать слова, а не буквы: s := 'Вот это да!!!';(раз написано, что принимает строку, даже не сомневайся, кто-нибудь все равно в эту функцию строку передаст. А ты делай так, чтоб ошибка возникнуть вообще не могла). |
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 14:10 |