| 
| 
 | Вопрос # 3 441/ вопрос открыт / | 
 |  Доброго времени суток, уважаемые эксперты!Очень срочно нужно решить данную задачу с помощью всех трех видов циклов – while, do, for
 Заранее спасибо!
 П.С. Задача на Pascal
 
|  |   Вопрос задал: Nepwk (статус: Посетитель)Вопрос отправлен: 24 ноября 2009, 10:51
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: Паровоз Здравствуйте, Яньков Артём Сергеевич!
 В Delphi цикл for vможет быть только с целочисленным параметром и с шагом 1. Поэтому нужно пересчитать переменные:
 
 var
  i,cnt:Integer;
  F:Real;
begin
  cnt:=Round(Int((F2-F1)/h));
  Memo1.Clear;
  for i:=0 to cnt do
  begin
    F:=F1+i*h;
    if (F > 0.03*S) then N:=F*(D-R)+R*S
    else N:=F*D+R*S;
    Memo1.Lines.Add('N('+IntToStr(i)+')='+FloatToStr(N));
  end;
end;
|  | Ответ отправил: Паровоз (статус: 10-ый класс)Время отправки: 27 ноября 2009, 15:32
 
 |  
 Мини-форум вопросаВсего сообщений: 2; последнее сообщение — 25 ноября 2009, 19:16; участников в обсуждении: 2. 
|   | IlluminatI (статус: 2-ой класс), 24 ноября 2009, 21:02 [#1]:Первым делом считываем все значения с клавиатуры 
   var F1, F2, S, R, D, h, N: real;
      x: byte;
      i, z: integer;
begin
 z:=0;
 writeln('F1, F2 = ?');
 readln(F1, F2);
 writeln('S, R, D - ?');
 readln(S, R, D);
 writeln('Step H - ?');
 readln(h);
 ....Тогда, цикл while..do будет иметь такую реализацию:
 
 
 while F1(меньше равно)F2 do
       begin
        inc(z);
        F1:=F1+H;
        if (F1 (больше) 0.03 * S) then
         begin
           N:=F1*D - F1*R + R*S;
           writeln('N[',z,'] = ', N:0:2);
         end else
        if (F1 (меньше равно) 0.03 * S) then
          begin
           N:=F1*D + R*S;
           writeln('N[',z,'] = ', N:0:2);
          end;
       end;Цикл Repeat..until:
 
 
 repeat
       if F1 (больше) F2 then exit;
       F1:=F1+H;
       Inc(z);
       if (F1 (больше) 0.03 * S) then
         begin
           N:=F1*D - F1*R + R*S;
           writeln('N[',z,'] = ', N:0:2);
         end else
        if (F1 (меньше равно) 0.03 * S) then
          begin
           N:=F1*D + R*S;
           writeln('N[',z,'] = ', N:0:2);
          end;
      until F1 (больше) F2;Насчет цикла for..to..do, я еще подумаю
   |  
|   | Nepwk (статус: Посетитель), 25 ноября 2009, 19:16 [#2]:Огромное спасибо IlluminatI, Вы просто меня спасли   |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |