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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.11.2013, 13:48   #1
Василий_0110
 
Регистрация: 05.11.2013
Сообщений: 8
По умолчанию Турбо-Паскаль, циклические программы.

Тут 3 вложения:
1) написать программу
2) написать программу, которая вычисляет значения функции при зад. аргументах
3) условие на фото
Изображения
Тип файла: jpg пр 1.jpg (38.2 Кб, 124 просмотров)
Тип файла: jpg пр 1 (1).jpg (38.5 Кб, 126 просмотров)
Тип файла: jpg пр 1 (2).jpg (79.3 Кб, 127 просмотров)
Василий_0110 вне форума Ответить с цитированием
Старый 09.11.2013, 13:58   #2
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

В чем проблема/затык?
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 09.11.2013, 14:08   #3
Василий_0110
 
Регистрация: 05.11.2013
Сообщений: 8
По умолчанию

В первой задаче не знаю, как обозначить близость точки, принадлежащей графику началу координат; в третьей не пойму, что такое точность и когда умножать на 2 в формуле. Вторую пытаюсь сейчас написать.
Василий_0110 вне форума Ответить с цитированием
Старый 09.11.2013, 14:12   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Про первую:
Расстояние между 2 точками считается по теореме Пифагора (можно не извлекать корень, так как это не влияет на знак сравнения). Нужно перебрать все возможные значения x с заданным шагом и выбрать минимальное.
Про третью:
Нужно посчитать сумму. Каждое следующее слагаемое меньше предыдущего. В конце концов, очередное слагаемое будет меньше E - заданной точности. Продолжать суммирование не имеет смысла, так как сумма будет изменяться крайне слабо. Умножать на 2 после того, как посчитана сумма.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 09.11.2013 в 14:34.
BDA вне форума Ответить с цитированием
Старый 09.11.2013, 14:36   #5
Василий_0110
 
Регистрация: 05.11.2013
Сообщений: 8
По умолчанию

Вот код Паскаль ко второй задаче (тут еще ошибка в операторе for, но я не пойму, как ее исправить) остальное верно? :
Код:
Program zadanie4;
   const xn=0.1;
         xk=0.9;
         dx=0.1;
   var x, y, c, b, S, n:real;
Begin
   x:=xn;
   S:=0;
   Repeat
   c:=(sin(x)+2)/(3+cos(x));
       For n:=0 to 20 do
       begin
       if (x<=0.5) then a:=2*n 
       else a:=n/2;
       b:=a*exp(a*ln(x));
       b:=b+S;
       
       end;

   y:=c*b;
   writeln ('Pri x=',x:3:1, '  y=', y:8:2);
   x:=x+dx;
   until x=xk
End.

Последний раз редактировалось Василий_0110; 09.11.2013 в 14:39.
Василий_0110 вне форума Ответить с цитированием
Старый 09.11.2013, 14:47   #6
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

у вас x в степени n,а не a
Код:
b:=a*exp(n*ln(x));s:=b+S;{...}y:=c*s;
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"

Последний раз редактировалось Mad_Cat; 09.11.2013 в 14:49.
Mad_Cat вне форума Ответить с цитированием
Старый 09.11.2013, 23:46   #7
Василий_0110
 
Регистрация: 05.11.2013
Сообщений: 8
По умолчанию

всё равно пишет "Invalid FOR control variable"
там, где n:=0
в чём тут ошибка?
Василий_0110 вне форума Ответить с цитированием
Старый 09.11.2013, 23:51   #8
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Цитата:
Сообщение от Василий_0110 Посмотреть сообщение
всё равно пишет "Invalid FOR control variable"
там, где n:=0
в чём тут ошибка?
В том, что
Код:
 var n:real;
Тип .
type_Oleg вне форума Ответить с цитированием
Старый 10.11.2013, 00:06   #9
Василий_0110
 
Регистрация: 05.11.2013
Сообщений: 8
По умолчанию

я исправил, но теперь пишет, что ошибка переполнения.
Код:
Program zadanie4;
   const xn=0.1;
         xk=0.9;
         dx=0.1;
   var x, y, c, b, a, S :real;
       n:integer;
Begin
   x:=xn;
   S:=0;
   Repeat
   c:=(sin(x)+2)/(3+cos(x));
       For n:=0 to 20 do
       begin
       if (x<=0.5) then a:=2*n
       else a:=n/2;
       b:=a*exp(n*ln(x));
       b:=b+S;
     
       end;

   y:=c*b;
   writeln ('Pri x=',x:8:2, '  y=', y:8:2);
   x:=x+dx;
   until x=xk
End.
Программа зацикливается, x идет равным больше 70, потом выбивает ошибку переполнения. но я же написал условие выхода из цикла, почему так?

Я написал третью программу, помогите исправить, пожалуйста.
В виде таблицы я потом сам сделаю и алгоритм нарисую.
Помогите, пожалуйста найти ошибку:
Код:
Program zad5;
  const MaxIter=1000;
  var x, xn, dx, xk, EPS, S, c, P, Y: double;
      n:integer;

Begin
writeln ('vvedite xn, xk, dx, EPS');
Readln(xn, xk, dx, EPS);
 x:=xn;
 S:=c;
 n:=0;
 while abs(y)>EPS do
   begin
   if n<=MaxIter then
   c:=1/((2*n+1)*exp((2*n+1)*ln(x)));
   y:=c*2;
   S:=y+S;
   writeln ('x=',x, '  y=', y, ' n=', n);
   readln
   end;
end.

Последний раз редактировалось Stilet; 10.11.2013 в 16:17.
Василий_0110 вне форума Ответить с цитированием
Старый 10.11.2013, 18:34   #10
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
Program zad5;
var
    x, xn, dx, xk, EPS, S, a{, c, P, Y}: double;
    n: integer;
Begin
    writeln ('vvedite xn, xk, dx, EPS');
    Readln(xn, xk, dx, EPS);
    x := xn;
    while x <= xk do
    begin
        S := 0;
        a := 1 / x;
        n := 0;
        while abs(a) > EPS do
        begin
            S := S + a;
            inc(n);
            a := (2 * n - 1) * a / ((2 * n + 1) * x * x);
        end;
        writeln ('x = ', x:0:4, '  y = ', 2 * S:0:4, ' n = ', n);
        x := x + dx;
    end;
    readln;
end.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как можно в Паскаль АВС (Паскаль-Турбо) вставлять в результаты печати программы графики, таблицы, схемы, набранные формулы, выраже IZOPGRAM Паскаль, Turbo Pascal, PascalABC.NET 0 11.06.2012 10:54
Циклические программы. allod26 Помощь студентам 2 15.09.2011 21:10
циклические программы на турбо ассемблере nomersy Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 05.12.2009 16:56
Разработка программы построения графиков функции в системе программирования Турбо-Паскаль S-Alex Помощь студентам 5 18.05.2009 20:13