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

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

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

 
 Ответить  Открыть новую тему 
> СТРОКИ, Получается неправильный вывод!
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 60
Пол: Женский
Реальное имя: Света

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


blink.gif Здравствуйте!!!
Не могли бы Вы помочь мне подкорректировать задачку...
Она звучит так: Дана символьная строка, содержащая англ. текст. Найти количество слов, начинающихся с буквы b.
Вот решение.

Program b;
var S:string;
i,p,n:integer;
begin
S:='boy bought a blue car';
writeln(S);
p:=0;
for i:=1 to n do begin
if S[i]='' then inc(i);
if S[i]='b' then inc(p);
end;
writeln('kol-vo slov s bykvoi b ravno',p);
readln;
end.

Но у меня в конце пишется, что кол-во слов с буквой b равно 0...

Подскажите, пож-та, в чем ошибка?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Perl. Just code it!
******

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

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


Во первых, у тебя цикл по i до n, а чему равно n ? Неизвестно, во вторых, ты внутри цикла FOR изменяешь переменную цикла - это черевато большими ошибками, а некоторыми компиляторами и вовсе не пропускается, в третьих задача решается так:

(если между словами только _один_пробел)

count := 0;
i := 1;

while (i <= Length(s)) do begin
if s[i] = ' ' then inc(i);
if s[i] = 'b' then inc(count);
while (i <= Length(s)) and (s[i] <> ' ') do inc(i);
end;


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 60
Пол: Женский
Реальное имя: Света

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


Мммм, ясненько!!! Спасибо большое, что помогли и нашли мою ошибку!!!!! good.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Цитата(klem4 @ 23.11.2006 21:53)
(если между словами только _один_пробел)
yes2.gif А если может быть несколько - то так:
var
s: string;
i, p, count: integer;

begin
s := ' boy bought a blue car';

i := 0;
repeat

p := pos(' b', copy(' ' + s, i + 1, length(' ' + s)));
if p > 0 then begin
inc(count); inc(i, p)
end

until p = 0;
writeln('count = ', count);
end.
smile.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Пионер
**

Группа: Пользователи
Сообщений: 60
Пол: Женский
Реальное имя: Света

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


Здравствуйте еще раз!
Я вот переделала немного данную задачку. Она звучит так: Дана символьная строка, содержащая англ. текст. Найти количество слов, начинающихся с буквы b.
Но у меня высвечиваются ошибки... Помогите пож-та подкорректировать.
Заранее спасибо!


Program b;
var S:string;
i,a,p:integer;
begin
S:='boy bought a blue car';
Writeln(S);
a:=length(S);
p:=0;
begin
if S[0]='b' then p:=p+1;
for i:=1 to i<a-1; i:=i+1;
if S[i]='' and S[i+1]='b' then p:=p=1;
end;
writeln('kol-vo slov,na4inaushihsya s bukvy b ravno',p);
end.



М
Полжалуйста, используй теги

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


тебе дали работающий вариант... чем он не понравился?
у тебя же что-то непонятное...
Program b;
var S:string;
i,a,p:integer;
begin
S:='boy bought a blue car';
Writeln(S);
a:=length(S);
p:=0;
begin{к чему этот бегин относится?}
if S[0]='b' then p:=p+1; {в S[0] хранится длина строки. равной 'b' она никак не может быть}
for i:=1 to i<a-1; i:=i+1;{от 1 до i<a-1 - это как? от 1 до истины? копать от забора и до обеда?}
if S[i]='' and S[i+1]='b' then {вряд ли символ - а S[i]-символ - будет равен пустой строке... наверное, речь о пробеле}
p:=p=1;{p:=p=1? пытаешься присвоить значение истина/ложь?}
end;
writeln('kol-vo slov,na4inaushihsya s bukvy b ravno',p);
end.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Пионер
**

Группа: Пользователи
Сообщений: 60
Пол: Женский
Реальное имя: Света

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


[quote name='мисс_граффити' date='29.11.2006 19:37' post='81202']
тебе дали работающий вариант... чем он не понравился?

хм... спасибо!!!! Я поняла! smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 29.03.2024 6:50
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name