Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ символы Char

Автор: }0pa 5.10.2006 20:10

Используя только информацию о длине строки и переменную (конечно, можно использовать и др. переменные, но не String

Код
var c:char;

написать программу, выводящую на экран все слова, разделенные пробелами, начинающиеся на "М" и заканчивающиеся на "Е"...
Код

var c:char;
  i,n:integer;
begin
writeln('DLINA STROKI: ');readln(n);
for i:=1 to n do
  begin
   read(c);
   if c=' ' then         {не знаю, что делать}
-------------------     {нужно как-то ограничить слова пробелами}
-------------------
  end;
end.


Заранее благодарю!
P.S. Пардон, что пытался тему в Факе разместить, просто искал инфу там и на автопилоте начал там тему создавать

Автор: volvo 5.10.2006 21:00

Тебе еще не надоела эта задача? Мне уже надоела...

Вот так попробуй:

uses crt;

var
n, i: byte;
ch, prev: char;
first, is_ok: boolean;

count: integer;

begin
count := 0;

n := 12;
first := true; prev := #0;

for i := 1 to n do begin
ch := readkey;
write(ch);

if first then
is_ok := (ch = 'm');

case ch of
#32:
begin
if prev <> #32 then
if is_ok and (prev = 'e') then inc(count);
first := true;
end;
else
first := false;
end;
prev := ch;
end;
writeln;
writeln('count = ', count);
readln;
end.


Для тестирования вводилась строка 'my moe meme '
(Примечание: последним вводимым символом должен быть пробел)

Автор: }0pa 7.10.2006 13:32

Цитата
Тебе еще не надоела эта задача? Мне уже надоела...

Да, мне тоже порядком поднадоела.Только не мог бы ты пояснитьэту строчку
Код
  is_ok := (ch = 'm');

Спасибо. большое за задачу!

Автор: klem4 7.10.2006 13:53

Логическая переменная is_ok принимает такое-же значение как и выражение (ch = 'm')

т.е is_ok будет принимать значение true, только в случае если переменная ch будет хранить символ 'm', в любом другом случае is_ok будет принимать значение false;

ch := 'A';
is_ok := (ch = 'm'); // is_ok == false;
ch := 'm';
is_ok := (ch = 'm'); // is_ok == true;