Помогите с задачей, никак не могу разобраться
Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill
итак, все по порядку..задача на Паскале, я на 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.
подскажите пожалуйста, что не так...наверняка ошибка ерундовая, только сильно не ругайте за мою бестолковость))) я все решила, кроме этой...
Условие: в заданной строке символов, где между группами символов стоят пробелы, найти количество групп.
Вот мой текст:
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.
подскажите пожалуйста, что не так...наверняка ошибка ерундовая, только сильно не ругайте за мою бестолковость))) я все решила, кроме этой...
Дело в том что ты непонятно что считываешь переменной а не имеет значения.. И если честно не помню как работает 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.
насколько я помню readln -это ввод с клавиатуры, а пустым readln мы всегда программу заканчиваем(не знаю зачем)
у меня по прежнему не работает...теперь ставит ошибку после строчки c := copy(a, i, 1); и пишет : Error 26 Type mismatch Что это и как исправить?
у меня по прежнему не работает...теперь ставит ошибку после строчки c := copy(a, i, 1); и пишет : Error 26 Type mismatch Что это и как исправить?
- Oleg_Rus
- Сообщения: 335
- Зарегистрирован: 16 окт 2006, 09:56
- Откуда: г.Улан-Удэ, респ.Бурятия, Российская Федерация
- Контактная информация:
а почему бы и не так:
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.
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.
e-mail: garmayev@yandex.ru
---------------------------------------------------------------------------
<a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmay ... =2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>
---------------------------------------------------------------------------
<a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmay ... =2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>
Oleg_Rus, спасибо большое! такой вариант работает. Только вот
это что за функция? что то я не нашла чтобы мы такое изучали...а то меня спросят, а я не знаю что это...." писал(а):Inc(c);
Inc(c) --> C := C + 1;
О, да, точно! это было по другому предмету...команды инкремента, декремента...кажется так, теперь я вспомнила)
У меня такое чувство, что в таком разрезе программа считает количество пробелов в строке. А нам вроде бы как надо количество групп
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
- Oleg_Rus
- Сообщения: 335
- Зарегистрирован: 16 окт 2006, 09:56
- Откуда: г.Улан-Удэ, респ.Бурятия, Российская Федерация
- Контактная информация:
не-не-не Хыиуду, программа читает строку и если увидит где-то пробел(т.е. конец группы), то уселичивает счетчик и в итоге, в счетчике получается кол-во групп.
e-mail: garmayev@yandex.ru
---------------------------------------------------------------------------
<a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmay ... =2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>
---------------------------------------------------------------------------
<a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmay ... =2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>
Ага, а если два пробела подряд - Хыиуду здесь абсолютно прав, там все по-русски написано - считает кол-во пробелов. Надо тогда все идущие подряд пробелы удалять, например заменой 2 пробелов на один или проверять, если до этого был пробел, тогда счетчик групп будет неизменен