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

Просьба помочь с задачкой

Добавлено: 22 янв 2009, 19:44
PRo9
Перепишите в форме предусловием (while) следующий оператор цикла паскаля
к:=0; for i:='z' down to 'a' do k:=k+1

Заранее спасибо

Re: Просьба помочь с задачкой

Добавлено: 22 янв 2009, 23:16
Creatizmo

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

k := 0;
i := z;
while i <= a do
  begin
  k := k + 1;
  i := i - 1;
  end;

Re: Просьба помочь с задачкой

Добавлено: 22 янв 2009, 23:21
dr.Jekill
Creatizmo, я что-то не понял, ты что из символьной i отнимаешь потом единицу? :
i:=z;
..
i:=i-1;


Может попробовать что-то подобное?

var k,j:byte;
i:char;
begin
k:=0;i:='z';j:=26;
while (i<='a') and (j>0) do
begin
k:=k+1;
j:=j-1;//тут конечно коряво
end;
writeln(k:2);
readln;
end.

Re: Просьба помочь с задачкой

Добавлено: 23 янв 2009, 00:26
PRo9
тут вот челы еще написали так

k:=0;
i:='z';
while i<>'a' do
begin
k:=k+1;
i:=pred(i);
end.

препод придрался к тому что выделено жирным. судя по вашим решениям нужно заменить i<>'a' на i<='a' ???

Re: Просьба помочь с задачкой

Добавлено: 23 янв 2009, 04:47
Creatizmo
dr.Jekill писал(а):Creatizmo, я что-то не понял, ты что из символьной i отнимаешь потом единицу?


ммм.. да ошибочка вышла... принял z и a за числовые константы... :(

у тебя кстати тоже в программке ошибочка ;)

PRo9
<> - не равно
>= - больше либо равно
<= - меньше либо равно

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

...
k := 0;
i := 'z';
j := 26;
while (i>='a') and (j>0) do
   begin
   inc(k);
   dec(j);
   i := pred(i);
   end;
writeln(k);
...

Добавлено: 23 янв 2009, 11:09
PRo9
Creatizmo что такое j := 26??? количество букв

А где в твоей задаче k:=k+1??? или это inc(k)

Re: Просьба помочь с задачкой

Добавлено: 23 янв 2009, 19:58
Creatizmo
j - это кол-во латинских букв
Да процедура inc(k) увеличивает k на единицу ;)

Re: Просьба помочь с задачкой

Добавлено: 24 янв 2009, 02:01
dr.Jekill
Creatizmo писал(а):ммм.. да ошибочка вышла... принял z и a за числовые константы... :(

у тебя кстати тоже в программке ошибочка ;)

PRo9
<> - не равно
>= - больше либо равно
<= - меньше либо равно

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

...
k := 0;
i := 'z';
j := 26;
while (i>='a') and (j>0) do
   begin
   inc(k);
   dec(j);
   i := pred(i);
   end;
writeln(k);
...


Все мы не без греха!

var k:byte;
i,m:char;
begin
k:=0;i:='a';m:='z';
while i<=m do
begin
m:=pred(m);
k:=k+1;
end;
writeln(k:2);
readln;
end.