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

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

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

 
 Ответить  Открыть новую тему 
> Задача о строках
Юра
сообщение 1.12.2005 17:23
Сообщение #1


Гость






Помагите сделать последний штрих, вроде бы все уже сделано
Задача:Определить, сколько слов в последовательности А начинается с буквы N и сколько слов в последовательности В начинается с буквы Y.
Для подсчета в произвольной последовательности числа слов, начинающихся с заданного символа, использовать самостоятельно разработанную процедуру.
Вот что я написал:
program Project5;

{$APPTYPE CONSOLE}

uses
SysUtils;

var s:string;s1:string;
i,n,m,k,l:integer;
d,p:char;
procedure Bukv(s:string;d:char;var k:integer);
var i:integer;
begin
for i:=1 to n do
if(i<n) and (s[i]=d) and (s[i-1]=' ') then
k:=k+1;
end;
Begin

writeln ('Input S');
readln(s);
writeln ('Input S1');
readln(s1);
n:=length(s);

writeln ('Input d');
readln(d);
writeln ('Input p');
readln(p);
begin
Bukv(s,d, k);
writeln(k);
Bukv(s1,p, l);
writeln(l);
end;
readln;
end.

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

Сообщение отредактировано: volvo - 6.11.2006 17:47
 К началу страницы 
+ Ответить 
volvo
сообщение 1.12.2005 17:43
Сообщение #2


Гость






Юра,
процедуру Bukv перепиши:
procedure  Bukv(s:string; d:char; var k:integer);
var i:integer;
begin
k := 0;
for i:=1 to length(s) do
if (
(i = 1) or ((i > 1) and (s[i - 1] = ' '))
) and (s[i] = d) then k := k + 1;
end;
и все будет работать...
 К началу страницы 
+ Ответить 
Юра
сообщение 1.12.2005 18:36
Сообщение #3


Гость






Спасибо, я все понял, все работает.
 К началу страницы 
+ Ответить 

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

 



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