Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.05.2010, 23:31   #1
voffka-blogger
Пользователь
 
Аватар для voffka-blogger
 
Регистрация: 09.04.2010
Сообщений: 13
Радость Уменьшить количество циклов с 3-х до 1-ого

Добрый день. Всех с прадником. Подкиньте, пожалуйста, идей, как в данной программе всё это сделать в 1 цикле. Хочу заметить, что для каждого цикла, кол-во итераций может быть разное, то, в чём именно и заключается проблема.
Код:
const e=0.001; 
var
  cn1,cn2,cn3,fcn1,fcn2,fcn3,f1cn1,f1cn2,f1cn3,cn11,cn12,cn13,cncn11,cncn12,cncn13:real;
begin
  write('Введiть Cn для першого вiдрiзку [0; 0.5]: ');
  readln(cn1);
  write('Введiть Cn для другого вiдрiзку [1; 1.44]: ');
  readln(cn2);
  write('Введiть Cn для третього вiдрiзку [2.10; 2.15]: ');
  readln(cn3);
  writeln(' ');
  
  writeln('Уточнення першого корення на вiдрiзку [0; 0.5]');
  writeln(' ');
  repeat 
  fcn1:=-15*sin(3*cn1)+0.15*power(cn1,2)+0.7;
  f1cn1:=-45*cos(3*cn1)+0.30*cn1;
  cn11:=cn1-(fcn1)/(f1cn1);
  cncn11:=abs(cn1-cn11);
  writeln('Вiдповiдь Cn: ',cn1:0:5);
  writeln('Вiдповiдь f(Cn): ',fcn1:0:5);
  writeln('Вiдповiдь f"(Cn): ',f1cn1:0:5);
  writeln('Вiдповiдь Cn+1: ',cn11:0:5);
  writeln('Вiдповiдь |Cn1-Cn+1|: ',cncn11:0:5);
  writeln('------------------------------');
  writeln(' ');
  cn1:=cn11;
  until e>cncn11; 
  
  writeln('Уточнення другого корення на вiдрiзку [1; 1.44]');
  writeln(' ');
  repeat 
  fcn2:=-15*sin(3*cn2)+0.15*power(cn2,2)+0.7;
  f1cn2:=-45*cos(3*cn2)+0.30*cn2;
  cn12:=cn2-(fcn2)/(f1cn2);
  cncn12:=abs(cn2-cn12);
  writeln('Вiдповiдь Cn: ',cn2:0:5);
  writeln('Вiдповiдь f(Cn): ',fcn2:0:5);
  writeln('Вiдповiдь f"(Cn): ',f1cn2:0:5);
  writeln('Вiдповiдь Cn+1: ',cn12:0:5);
  writeln('Вiдповiдь |Cn1-Cn+1|: ',cncn12:0:5);
  writeln('------------------------------');
  writeln(' ');
  cn2:=cn12;
  until e>cncn12; 
  
  writeln('Уточнення третього корення на вiдрiзку [2.10; 2.15]');
  writeln(' ');
  repeat 
  fcn3:=-15*sin(3*cn3)+0.15*power(cn3,2)+0.7;
  f1cn3:=-45*cos(3*cn3)+0.30*cn3;
  cn13:=cn3-(fcn3)/(f1cn3);
  cncn13:=abs(cn3-cn13);
  writeln('Вiдповiдь Cn: ',cn3:0:5);
  writeln('Вiдповiдь f(Cn): ',fcn3:0:5);
  writeln('Вiдповiдь f"(Cn): ',f1cn3:0:5);
  writeln('Вiдповiдь Cn+1: ',cn13:0:5);
  writeln('Вiдповiдь |Cn1-Cn+1|: ',cncn13:0:5);
  writeln('------------------------------');
  cn3:=cn13;
  until e>cncn13; 
   
  readln;
end.
voffka-blogger вне форума Ответить с цитированием
Старый 02.05.2010, 21:24   #2
voffka-blogger
Пользователь
 
Аватар для voffka-blogger
 
Регистрация: 09.04.2010
Сообщений: 13
По умолчанию

Вопрос решён.
voffka-blogger вне форума Ответить с цитированием
Старый 02.05.2010, 21:26   #3
Семен Бобров
Заблокирован
 
Регистрация: 02.05.2010
Сообщений: 24
По умолчанию

Код:
const e=0.001; 
var
  cn1,cn2,cn3,fcn1,fcn2,fcn3,f1cn1,f1cn2,f1cn3,cn11,cn12,cn13,cncn11,cncn12,cncn13:real;
begin
  write('Введiть Cn для першого вiдрiзку [0; 0.5]: ');
  readln(cn1);
  write('Введiть Cn для другого вiдрiзку [1; 1.44]: ');
  readln(cn2);
  write('Введiть Cn для третього вiдрiзку [2.10; 2.15]: ');
  readln(cn3);
  writeln(' ');
  
  writeln('Уточнення першого корення на вiдрiзку [0; 0.5]');
  writeln(' ');
  repeat 
  fcn1:=-15*sin(3*cn1)+0.15*power(cn1,2)+0.7;
  f1cn1:=-45*cos(3*cn1)+0.30*cn1;
  cn11:=cn1-(fcn1)/(f1cn1);
  cncn11:=abs(cn1-cn11);
  writeln('Вiдповiдь Cn: ',cn1:0:5);
  writeln('Вiдповiдь f(Cn): ',fcn1:0:5);
  writeln('Вiдповiдь f"(Cn): ',f1cn1:0:5);
  writeln('Вiдповiдь Cn+1: ',cn11:0:5);
  writeln('Вiдповiдь |Cn1-Cn+1|: ',cncn11:0:5);
  writeln('------------------------------');
  writeln(' ');
  cn1:=cn11;
  until e>cncn11;   readln;
end.
Вот. Теперь только один цикл
Семен Бобров вне форума Ответить с цитированием
Старый 02.05.2010, 21:26   #4
исчо никакой
Заблокирован
 
Регистрация: 02.05.2010
Сообщений: 38
По умолчанию

Цитата:
Сообщение от voffka-blogger Посмотреть сообщение
Вопрос решён.
Через массивы?
исчо никакой вне форума Ответить с цитированием
Старый 02.05.2010, 22:12   #5
voffka-blogger
Пользователь
 
Аватар для voffka-blogger
 
Регистрация: 09.04.2010
Сообщений: 13
По умолчанию

Семен Бобров, молодец! До 3-х считать умеешь.
исчо никакой, да через массив, вот код программы:
Код:
const
  e=0.001;
  s: array[1 .. 3] of string =
  (
    'Уточнення першого корення на вiдрiзку [0; 0.5]',
    'Уточнення другого корення на вiдрiзку [1; 1.44]',
    'Уточнення третього корення на вiдрiзку [2.10; 2.15]'
  );
var
  cn: array[1 .. 3] of real;
  fcn1, f1cn1, cn11, cncn11: real;

  i: integer;
begin
  write('Введiть Cn для першого вiдрiзку [0; 0.5]: ');
  readln(cn[1]);
  write('Введiть Cn для другого вiдрiзку [1; 1.44]: ');
  readln(cn[2]);
  write('Введiть Cn для третього вiдрiзку [2.10; 2.15]: ');
  readln(cn[3]);
  writeln(' ');

  for i := 1 to 3 do
  begin
    writeln(s[i]);
    writeln;

    repeat
    fcn1:=-15*sin(3*cn[i])+0.15*power(cn[i],2)+0.7;
    f1cn1:=-45*cos(3*cn[i])+0.30*cn[i];
    cn11:=cn[i]-(fcn1)/(f1cn1);
    cncn11:=abs(cn[i]-cn11);
    writeln('Вiдповiдь Cn: ',cn[i]:0:5);
    writeln('Вiдповiдь f(Cn): ',fcn1:0:5);
    writeln('Вiдповiдь f"(Cn): ',f1cn1:0:5);
    writeln('Вiдповiдь Cn+1: ',cn11:0:5);
    writeln('Вiдповiдь |Cn1-Cn+1|: ',cncn11:0:5);
    writeln('------------------------------');
    writeln(' ');
    cn[i]:=cn11;
    until e>cncn11;
  end;
  readln;
end.
voffka-blogger вне форума Ответить с цитированием
Старый 02.05.2010, 22:13   #6
исчо никакой
Заблокирован
 
Регистрация: 02.05.2010
Сообщений: 38
По умолчанию

Цитата:
Сообщение от voffka-blogger Посмотреть сообщение
Семен Бобров, молодец! До 3-х считать умеешь.
исчо никакой, да через массив, вот код программы:
Код:
const
  e=0.001;
  s: array[1 .. 3] of string =
  (
    'Уточнення першого корення на вiдрiзку [0; 0.5]',
    'Уточнення другого корення на вiдрiзку [1; 1.44]',
    'Уточнення третього корення на вiдрiзку [2.10; 2.15]'
  );
var
  cn: array[1 .. 3] of real;
  fcn1, f1cn1, cn11, cncn11: real;

  i: integer;
begin
  write('Введiть Cn для першого вiдрiзку [0; 0.5]: ');
  readln(cn[1]);
  write('Введiть Cn для другого вiдрiзку [1; 1.44]: ');
  readln(cn[2]);
  write('Введiть Cn для третього вiдрiзку [2.10; 2.15]: ');
  readln(cn[3]);
  writeln(' ');

  for i := 1 to 3 do
  begin
    writeln(s[i]);
    writeln;

    repeat
    fcn1:=-15*sin(3*cn[i])+0.15*power(cn[i],2)+0.7;
    f1cn1:=-45*cos(3*cn[i])+0.30*cn[i];
    cn11:=cn[i]-(fcn1)/(f1cn1);
    cncn11:=abs(cn[i]-cn11);
    writeln('Вiдповiдь Cn: ',cn[i]:0:5);
    writeln('Вiдповiдь f(Cn): ',fcn1:0:5);
    writeln('Вiдповiдь f"(Cn): ',f1cn1:0:5);
    writeln('Вiдповiдь Cn+1: ',cn11:0:5);
    writeln('Вiдповiдь |Cn1-Cn+1|: ',cncn11:0:5);
    writeln('------------------------------');
    writeln(' ');
    cn[i]:=cn11;
    until e>cncn11;
  end;
  readln;
end.
Можно просто writeln;
исчо никакой вне форума Ответить с цитированием
Старый 02.05.2010, 22:15   #7
voffka-blogger
Пользователь
 
Аватар для voffka-blogger
 
Регистрация: 09.04.2010
Сообщений: 13
По умолчанию

Цитата:
Сообщение от исчо никакой Посмотреть сообщение
Можно просто writeln;
Если не сложно, можешь показать?
voffka-blogger вне форума Ответить с цитированием
Старый 02.05.2010, 22:16   #8
исчо никакой
Заблокирован
 
Регистрация: 02.05.2010
Сообщений: 38
По умолчанию

Цитата:
Сообщение от voffka-blogger Посмотреть сообщение
Если не сложно, можешь показать?
не writeln(' ');
а writeln;
исчо никакой вне форума Ответить с цитированием
Старый 02.05.2010, 22:22   #9
voffka-blogger
Пользователь
 
Аватар для voffka-blogger
 
Регистрация: 09.04.2010
Сообщений: 13
По умолчанию

Цитата:
Сообщение от исчо никакой Посмотреть сообщение
не writeln(' ');
а writeln;
А я думал, вы об альтернативном способе решения... Аж удивился))Спасибо за замечание, учту.
voffka-blogger вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удалить 7-ого Осла и вместо него поставить 6-ого Altera Софт 2 25.10.2009 08:44
Min сумма столбцов 2-ого массива Sparky Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 23.09.2009 17:20
Как найти количество n-ого символа в строке? zver777 Общие вопросы Delphi 7 25.08.2009 20:25
Как уменьшить количество цветов в рисунке? HELP!!! risya Мультимедиа в Delphi 0 03.06.2009 19:44
Когда премьера Гарри Поттера 6-ого? Altera Свободное общение 4 18.11.2008 06:11