IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Найти число букв в строке
Alucard
сообщение 10.02.2009 3:55
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 15
Пол: Мужской
Реальное имя: Влад

Репутация: -  0  +


Дана символьная строка. Подсчитать в ней количество вхождений букв г, 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
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Ozzя
сообщение 10.02.2009 7:20
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


function find(x:string):byte;
var p:byte;
begin
for i:=1 to length(s) do
if s[i]=x then p:=p+1;
find:=p;
end;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Alucard
сообщение 10.02.2009 12:49
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 15
Пол: Мужской
Реальное имя: Влад

Репутация: -  0  +


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;


Вот так всё работает!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 10.02.2009 13:01
Сообщение #4


Гость






Цитата
Вот так всё работает!
Все-таки, на будущее... Если тебе надо искать букву (т.е., символ), то и передавай символ, а не строку:
function find(x: char):byte;
И понятнее, что от функции требуется, и оградит тебя от проблем, скажем, при попытке посчитать слова, а не буквы:

s := 'Вот это да!!!';
writeln('Слов "да": ', find('да'));
(раз написано, что принимает строку, даже не сомневайся, кто-нибудь все равно в эту функцию строку передаст. А ты делай так, чтоб ошибка возникнуть вообще не могла).
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 18.07.2025 14:16
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"