Страница 1 из 2

Помогите с задачей, никак не могу разобраться

Добавлено: 10 дек 2006, 20:09
Gekata
итак, все по порядку..задача на Паскале, я на 2 курсе, так что там ничего сложного наверное нет, просто я не мог найти свою ошибку(
Условие: в заданной строке символов, где между группами символов стоят пробелы, найти количество групп.
Вот мой текст:
program ira;
var a:string;
n,i,k:integer;
c:char;
begin
writeln('vvedi stroku');
readln(a);
k:=0;
n:=length(a);
for i:=1 to n do
begin
c:=copy(a,i,1);
if c:=' ' then k:=k+1;
end;
writeln(k);
readln;
end.

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

Re: Помогите с задачей, никак не могу разобраться

Добавлено: 10 дек 2006, 23:08
Duncon
Дело в том что ты непонятно что считываешь переменной а не имеет значения.. И если честно не помню как работает readln, я бы сделал так:

Код: Выделить всё

program ira;

var 
  a: string;
  n, i, k: integer;
  c: char;
begin
  a := 'vvedi stroku';
  writeln(a);
  //  readln(a);
  k := 0;
  n := length(a);
  for i := 1 to n do
  begin
    c := copy(a, i, 1); // если честно не очень хорошее решение, но и так покатит..
    if c := ' ' then k := k+1;
  end;
  writeln(k);
//  readln;
end.

Re: Помогите с задачей, никак не могу разобраться

Добавлено: 11 дек 2006, 10:16
Gekata
насколько я помню readln -это ввод с клавиатуры, а пустым readln мы всегда программу заканчиваем(не знаю зачем)
у меня по прежнему не работает...теперь ставит ошибку после строчки c := copy(a, i, 1); и пишет : Error 26 Type mismatch Что это и как исправить?

Re: Помогите с задачей, никак не могу разобраться

Добавлено: 11 дек 2006, 10:17
Oleg_Rus
а почему бы и не так:

Program
Ira;
Var
S: string;
i, c: Integer;
Begin
C:=0;
Readln(s);
For i:=1 To Length(s) Do
If S=' ' Then Inc(c);
End.

Re: Помогите с задачей, никак не могу разобраться

Добавлено: 11 дек 2006, 11:52
Gekata
Oleg_Rus, спасибо большое! такой вариант работает. Только вот
&quot писал(а):Inc(c);
это что за функция? что то я не нашла чтобы мы такое изучали...а то меня спросят, а я не знаю что это....

Re: Помогите с задачей, никак не могу разобраться

Добавлено: 11 дек 2006, 12:02
somewhere
Inc(c) --> C := C + 1;

Re: Помогите с задачей, никак не могу разобраться

Добавлено: 11 дек 2006, 12:33
Gekata
О, да, точно! это было по другому предмету...команды инкремента, декремента...кажется так, теперь я вспомнила)

Re: Помогите с задачей, никак не могу разобраться

Добавлено: 12 дек 2006, 10:32
Хыиуду
У меня такое чувство, что в таком разрезе программа считает количество пробелов в строке. А нам вроде бы как надо количество групп

Re: Помогите с задачей, никак не могу разобраться

Добавлено: 12 дек 2006, 11:27
Oleg_Rus
не-не-не Хыиуду, программа читает строку и если увидит где-то пробел(т.е. конец группы), то уселичивает счетчик и в итоге, в счетчике получается кол-во групп.

Re: Помогите с задачей, никак не могу разобраться

Добавлено: 12 дек 2006, 11:37
somewhere
Ага, а если два пробела подряд - Хыиуду здесь абсолютно прав, там все по-русски написано - считает кол-во пробелов. Надо тогда все идущие подряд пробелы удалять, например заменой 2 пробелов на один или проверять, если до этого был пробел, тогда счетчик групп будет неизменен