• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Помогите с контрольными по программированию на Паскале

  • Автор темы Автор темы EVO_X
  • Дата начала Дата начала
Можете еще объяснить как с помощью этого строится таблица?
Writeln(x:6:3,S:15:5,Ln(1+x):15:5);
Writeln(f,x:6:3,S:15:5);
 
Что-то такое получилось для учета отрезка:)

Var
n,i,M:integer;
a,x,S,h,mn,mx:real;
f:Text;
Begin
Assign(f,'Ln.txt');
Rewrite(f);
Write('Введите нижнюю грань отрезка');
Readln(mn);
Write('Введите верхнюю грань отрезка');
Readln(mx);
Write('Введите шаг разбиения');
Readln(h);
if not ((mn>-1) and (mx<1)) then
writeln('Введенный отрезок выходит за промежуток действия формулы суммирования')
else
M:=Round((mx-mn)/h)+2;
x:=mn-h;
for i:=1 to M do
begin
x:=x+h;
a:=x;
S:=a;
n:=1;
repeat
n:=n+1;
a:=-a*(n-1)/n*x;
S:=S+a;
until Abs(a)<1E-7;
Writeln(x:6:3,S:15:5,Ln(1+x):15:5);
Writeln(f,x:6:3,S:15:5);
end;
Close(f);
Readln
End.
 
Можете еще объяснить как с помощью этого строится таблица?
Writeln(x:6:3,S:15:5,Ln(1+x):15:5);
Writeln(f,x:6:3,S:15:5);
Так а чего тут объяснять? Выводится в строку аргумент, сосчитанное число и точное значение, потом строка переводится, и так пока весь цикл не пройдёт. Первый вывод - на экран, второй - в файл (туда точное значение не посылается).
 
Нет, вот это нехорошо.
Write('Введите нижнюю грань отрезка');
Readln(mn);
Write('Введите верхнюю грань отрезка');
Readln(mx);
Write('Введите шаг разбиения');
Readln(h);
if not ((mn>-1) and (mx<1)) then writeln('Введенный отрезок выходит за промежуток действия формулы суммирования')
else
Во-первых, ввод надо бы зациклить, а во-вторых - else тут ни к чему.
Я бы так:
Код:
Repeat
 Write('Введите нижнюю грань отрезка');
 Readln(mn);
 Write('Введите верхнюю грань отрезка');
 Readln(mx);
 Write('Введите шаг разбиения');
 Readln(h);
 if not ((mn>-1) and (mx<1)) then 
  writeln('Введенный отрезок выходит за промежуток действия формулы суммирования');
Until (mn>-1) and (mx<1);
 
С процедурой:
Код:
Var
 mn,mx,h:real;
 f:Text;

Procedure Calc_Ln(lb,hb,step:real);
Var
 n,M,i:integer;
 a,S,x:real;
begin
 M:=Trunc((hb-lb)/Step)+2;
 x:=lb-step;
 for i:=1 to M do
  begin
   x:=x+Step;
   a:=x;
   S:=a;
   n:=1;
   repeat
    n:=n+1;
    a:=-a*(n-1)/n*x;
    S:=S+a;
   until Abs(a)<1E-7;
   Writeln(x:6:3,S:15:5,Ln(1+x):15:5);
   Writeln(f,x:6:3,S:15:5);
  end;
  Readln
end;

Begin
 Assign(f,'Ln.txt');
 Rewrite(f);
 Repeat
  Write('Low border: ');
  Readln(mn);
  Write('High border: ');
  Readln(mx);
  Write('Step: ');
  Readln(h);
  if not ((mn>-1) and (mx<1)) then
   writeln('Incorrect values!');
 Until (mn>-1) and (mx<1);
 Calc_Ln(mn,mx,h);
 Close(f);
End.
 
А можно чтобы и показ на экран и запись в файл тоже в виде процедуры было?
 
А можно чтобы и показ на экран и запись в файл тоже в виде процедуры было?
Всё можно. Только сейчас мне некогда. Так что или ждите, или (что куда лучше) сделайте сами.
 
Все, не надо, сделал и сдал
 
Назад
Сверху