0 / 0 / 0
Регистрация: 11.07.2014
Сообщений: 33
1

Ошибка в коде программы, которая определяет наличие заданной буквы в строке

16.08.2014, 17:09. Показов 1327. Ответов 7
Метки нет (Все метки)

В общем : я ввожу строку и букву, если буква в строке есть программа пишет мне true а если нету false. Но вот что-то не получается. Помогите пожалуйста.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function search(str:string; ch:char):integer;
var i,q:integer; 
begin
q:=0;
for i:=1 to length(str) do
if str[i]=ch then q:=q+1;
search:=q;
end;
var s:string;
b:char;
a:boolean;
begin
writeln('Введите строку');
readln(s);
writeln('Введите букву');
readln(b);
search(s,b);
if search>0 then a=true else a=false;
readln;
end.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.08.2014, 17:09
Ответы с готовыми решениями:

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

Нужно составить программу которая определяет если в строке заданы ЛИШЬ буквы.
1)Нужно составить программу которая определяет если в строке заданы ЛИШЬ буквы. Строка вводится...

Разработать программу, которая определяет сколько в строке букв, одинаковых с заданной буквой
Разработать программу, которая определяет сколько в строке букв, одинаковых с буквой, введенных с...

Разработать программу, которая определяет сколько в строке букв, одинаковых с заданной буквой
Помогите с решением программы Разработать программу, которая определяет сколько в строке букв,...

7
2509 / 1130 / 582
Регистрация: 07.06.2014
Сообщений: 3,286
16.08.2014, 17:28 2
Лучший ответ Сообщение было отмечено TravienDay как решение

Решение

а так?

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function search(s1: string; ch: char): integer;
var i, q: integer;
begin
  q := 0;
  for i := 1 to length(s1) do
    if s1[i] = ch then q := q + 1;
  search := q;
end;
var s: string;
  b: char;
  a: boolean;
begin
  writeln('Введите строку');
  readln(s);
  writeln('Введите букву');
  readln(b);
  if search(s, b) > 0 then a := true else a := false;
  WriteLn('a = ',a);
  readln;
end.
я исправил пару ошибок и одно "нехорошее" имя параметра.
Разберетесь, что у Вас было неверно или подсказать?


кстати, если нужно знать есть буква или нет, то удобнее возвращаеть булевское выражение в функции
(да и цикл можно сразу прерывать, не считать, сколько раз раз встретили нужную букву)
и результат можно записать так:
Pascal
1
a := search(s, b);
но и в вашем случае можно написать так:
Pascal
1
a := search(s, b) > 0;
1
Почетный модератор
64276 / 47575 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
16.08.2014, 17:37 3
А так не проще?
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function search(s1: string; ch: char): boolean;
begin
search := pos(ch,s1)>0
end;
var s: string;
    b: char;
begin
  writeln('Введите строку');
  readln(s);
  writeln('Введите букву');
  readln(b);
  WriteLn(search(s,b));
  readln;
end.
1
0 / 0 / 0
Регистрация: 11.07.2014
Сообщений: 33
16.08.2014, 17:39  [ТС] 4
Sergio Leone, насчет булевы понял, спасибо Вам
А что не так с названием str?

Добавлено через 1 минуту
Puporev, проще, спасибо
0
Почетный модератор
64276 / 47575 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
16.08.2014, 17:44 5
Цитата Сообщение от TravienDay Посмотреть сообщение
А что не так с названием str?
Str это зарезервированное слово, имя стандартной процедуры
Pascal
1
procedure Str(X [: Width [: Decimals ]]; var S : String);
1
0 / 0 / 0
Регистрация: 11.07.2014
Сообщений: 33
16.08.2014, 17:46  [ТС] 6
Puporev, понятно, cпасибо
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7520 / 4384 / 2781
Регистрация: 22.11.2013
Сообщений: 12,546
Записей в блоге: 1
18.08.2014, 12:12 7
Цитата Сообщение от Puporev Посмотреть сообщение
Str это зарезервированное слово, имя стандартной процедуры
Str -- это имя стандартной процедуры, зарезервированным словом не является, может быть переопределено в текущей области видимости без каких-либо последствий, но при необходимости использовать процедуру Str, на неё придётся ссылаться в этом случае с явным указанием имени модуля -- System.Str.
1
Почетный модератор
64276 / 47575 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
18.08.2014, 12:15 8
Цитата Сообщение от bormant Посмотреть сообщение
арезервированным словом не является,
Да, погорячился...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.08.2014, 12:15
Помогаю со студенческими работами здесь

Напишите программу, которая заменяет в символьной строке все буквы a на буквы b , a буквы A на буквы B
Здравствуйте,помогите пожалуйста написать программу .Напишите программу, которая заменяет в...

Написать и протестировать функцию, которая определяет, совпадают ли в заданной строке первая и последняя буквы
Написать и протестировать функцию, которая определяет, совпадают ли в заданной строке первая и...

Функция, которая определяет русские буквы в строке
Здравствуйте!!! Ребята, подскажите, по такому вопросу фукция isalpha определяет латинские буквы...

Составить программу, которая определяет количество слов начинающихся с заданной буквы
Задан исходный текст на английском языке. Длина текста не более 30 символов. Составить программу,...


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

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

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