Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Помогите, пожалуйста, написать на Паскале программу "Циклический алгоритм" (http://www.tehnari.ru/f41/t79602/)

Alexei18 22.10.2012 19:02

Помогите, пожалуйста, написать на Паскале программу "Циклический алгоритм"
 
Распечатать таблицу значений W при изменении перменных величин a и x в данных промежутках с данными шагами:
An=0.3 , Ak=0.7 , Xn=0.1 , Xk=0.2 , m=3 , n=2
W=max{3*arctg(ax);√(a^2+b^2 );arcos(a+ x/10)}

An≤A≤Ak , Ha=(Ak-An)/m
Xn≤X≤Xk, Hx=(Xk-Xn)/n

Помогите пожалуйста ни как не могу сделать...

XELFAER 22.10.2012 19:15

что именно не выходит? Покажите ваш пример решения..

Alexei18 22.10.2012 20:23

program lab2;
var
A,An,Ak,X,Xn,Xk,Ha,Hx,Hn,Hk,W:real;
function max(b,c:real):real;
begin
if b<c then max:=b;
writeln('vvedi An,Ak,Ha');
readln(An,Ak,Ha);
writeln('vvedi Xn,Xk,Hx');
readln(Xn,Xk,Hx);
writeln('èñõîäíûå äàííûå');
writeln('An=',An:5:2,'Ak=',Ak:5:2);
writeln('Xn=',Xn:5:2,'Xk=',Xk:5:2);
writeln('Hn=',Hn:5:2,'Hk=',Hk:5:2);
writeln('òàáëèöà çíà÷åíèé');
writeln('W':9,'A':9,'X':9);
A:=An;
repeat
X:=Xn;
repeat
W:=max(3*arctan(a*x));sqrt(sqr(a)+sqr(x));arctan(s qrt(1-sqr(x))/x*(a+x/10));
writeln(W:7:2,A:7:2,X:7:2);
X:=X+Hx
untilX>Xk;
A:=A+Ha
untilA>Ak;
writeln('Wmax=',Wmax:7:2);
writeln('Amax=',Amax:7:2);
writeln('Xmax=',Xmax:7:2);
end.

Alexei18 22.10.2012 20:24

W:=max(3*arctan(a*x)) после этого пишет "ошибка неверное колличество фактических параметров"

Vladimir_S 22.10.2012 20:47

Цитата:

Сообщение от Alexei18 (Сообщение 808517)
W:=max(3*arctan(a*x)) после этого пишет "ошибка неверное колличество фактических параметров"

Естественно! Вы же описали функцию выбора максимальной из ДВУХ величин, а пытаетесь впихнуть ТРИ! Да и функцию Вы недоописали, а бросили на полпути. И к тому же при обращении к функции параметры перечисляются через запятую, а не точку с запятой. В общем - ошибка на ошибке.

Да... смотрю, Вы ни в задаче, ни в Паскале толком не разобрались.
Сейчас вынужден отключиться, если терпит до завтра, попробую объяснить, как решать эту задачу.

Alexei18 22.10.2012 21:06

конешно потерплю, спасибо большое!!!

Vladimir_S 23.10.2012 11:11

Вложений: 1
Цитата:

Сообщение от Alexei18 (Сообщение 808555)
конешно потерплю, спасибо большое!!!

Ну, поехали.
Прежде всего, выражаю своё КРАЙНЕЕ неудовольствие Вашей неряшливостью при выкладывании задания. Откуда вдруг взялся параметр b? Что за b? Ну ладно, будем считать, что b - это x.
Для решения задачи нам нужно запрограммировать целый ряд функций. Функция - это в какой-то мере автономный раздел программы, и пишется строго по определенным правилам. Она содержит название (заголовок), перечень формальных параметров с указанием их форматов, а также формат результата, т.е. значения самой функции. Это всё - содержимое первой строки. Далее, как и в программе, там при необходимости вводится раздел описания внутренних (служебных) переменных - они существуют только внутри функции, основная программа их не видит - и, собственно, тело функции, заключенное в операторные скобки begin-end. При обращении к функции из программы на место формальных параметров подставляются фактические, причем в том же количестве, в тех же форматах и в том же порядке, что и формальные. А теперь посмотрите, что Вы написали... Итак, нам понадобятся:
1. Функция ArcCos, потому что в состав стандартных функций Паскаля она не входит.
2. Функция нахождения максимального из двух чисел. Вообще-то нам понадобится выбор максимального из трех значений, и можно написать и такую функцию, но это будет довольно громоздко, поэтому в программе делается так: сравниваются два числа, а потом максимальное из них сравнивается с третьим.
3. Все три математических выражения в фигурных скобках тоже удобно оформить в виде функций.
Теперь, собственно, смысл задания. Составляем таблицу, причем договоримся, что строки соответствуют значениям х, а столбцы - значениям а. На пересечениях поместим максимальные значения из трех функций, вычисленных при данных х и а. В конце поставим readln, чтобы приостановить выполнение программы и посмотреть на результат.
Код:

Const
 An=0.3;
 Ak=0.7;
 Xn=0.1;
 Xk=0.2;
 m=3;
 n=2;

Var
 i,j:byte;
 W,Ha,Hx,a,x:real;

Function ArcCos(X:real):real;
begin
 if X=1 then ArcCos:=0 else
 if X=-1 then ArcCos:=Pi else
 ArcCos:=(Pi/2)-ArcTan(X/SQRT(1-X*X));
end;

Function Max(g1,g2:real):real;
begin
 if g1>g2 then Max:=g1 else Max:=g2;
end;

Function F1(a1,x1:real):real;
begin
 F1:=ArcTan(a1*x1)*3;
end;

Function F2(a2,x2:real):real;
begin
 F2:=Sqrt(Sqr(a2)+Sqr(x2));
end;

Function F3(a3,x3:real):real;
begin
 F3:=ArcCos(a3+x3/10);
end;

Begin
 Ha:=(Ak-An)/m;
 Hx:=(Xk-Xn)/n;
 Write('  x\a  ');
 For j:=0 to m do Write((An+Ha*j):7:3);
 Writeln;
 For i:=0 to n do
  begin
  Write((Xn+Hx*i):7:3);
  For j:=0 to m do
    begin
    a:=An+Ha*j;
    x:=Xn+Hx*i;
    W:=Max(Max(F1(a,x),F2(a,x)),F3(a,x));
    Write(W:7:3);
    end;
  Writeln;
  end;
 Readln
End.


Alexei18 23.10.2012 16:12

это решение всего моего примера???

Vladimir_S 23.10.2012 16:25

Цитата:

Сообщение от Alexei18 (Сообщение 808899)
это решение всего моего примера???

А что Вас так удивляет? Мало? Много? Как задача сформулирована, так и решена. :tehnari_ru_325:

Alexei18 23.10.2012 16:27

всю хорошо я просто поинтересовался, Огромная вам благодарность!!!, сам бы я такого ни когда не сделал.

Alexei18 23.10.2012 16:27

а можно вас попросить научить меня составить блок схему???

Vladimir_S 23.10.2012 16:28

Цитата:

Сообщение от Alexei18 (Сообщение 808903)
сам бы я такого ни когда не сделал.

Ну тут так - было бы желание, а умение придет. Успехов!

Vladimir_S 23.10.2012 16:31

Цитата:

Сообщение от Alexei18 (Сообщение 808906)
а можно вас попросить научить меня составить блок схему???

А вот это, к сожалению, нет: блок-схемами не занимаюсь. Но у нас есть специалисты по ним, подождите, может быть помогут. Или пошарьте по форуму и в Сети: есть какие-то программы, которые их рисуют по листингу, где-то у нас кто-то даже ссылки когда-то давал...

Léon 23.10.2012 18:47

Цитата:

Сообщение от Vladimir_S (Сообщение 808910)
... есть какие-то программы, которые их рисуют по листингу, где-то у нас кто-то даже ссылки когда-то давал...

Насчет программы вот здесь писали: http://www.tehnari.ru/732445-post5.html

Alexei18 23.10.2012 20:02

спасибо, но к сожелению она мне не помогла(((

Léon 23.10.2012 20:05

Цитата:

Сообщение от Alexei18 (Сообщение 809006)
спасибо, но к сожелению она мне не помогла(((

Сейчас сделаю.

Léon 23.10.2012 20:28

Вложений: 5
Блок-схема:

Vladimir_S 23.10.2012 20:40

Ух ты! Класс! Красота неописуемая! Вот здорово, что я блок-схемами не пользуюсь. :D.
P.S. Анжелика, а, это, F3 - не надо? Впрочем, там просто арккосинус.

Léon 23.10.2012 21:01

Вложений: 1
Цитата:

Сообщение от Vladimir_S (Сообщение 809034)
Ух ты! Класс! Красота неописуемая! Вот здорово, что я блок-схемами не пользуюсь. :D.

Спасибо! :) Старалась...
Цитата:

Сообщение от Vladimir_S (Сообщение 809034)
P.S. Анжелика, а, это, F3 - не надо? Впрочем, там просто арккосинус.

Недоглядела.
Вот F3:

Alexei18 23.10.2012 22:55

Цитата:

Сообщение от 11Angelav (Сообщение 809010)
Сейчас сделаю.

спасибо огромное!!! очень выручели!!!

Alexei18 02.11.2012 12:13

Вложений: 1
помогите пожалуйста, Учитель попросил на месте знаков вопроса прописать буквы, как это забить в паскаль?

Vladimir_S 02.11.2012 12:26

Цитата:

Сообщение от Alexei18 (Сообщение 813797)
Учитель попросил на месте знаков вопроса прописать буквы, как это забить в паскаль?

Понятия не имею. Все столбцы и строки таблицы промаркированы значениями параметров x и a - так какие еще "буквы" там требуются?

Alexei18 02.11.2012 13:27

он сказал что первый столбик x/a второй например х, третий а и т.д.

Vladimir_S 02.11.2012 14:04

Вложений: 1
Цитата:

Сообщение от Alexei18 (Сообщение 813839)
он сказал что первый столбик x/a второй например х, третий а и т.д.

Не, я так не умею таблицы составлять. Впечатление, что "Учитель" просто ни бельмеса не понял в структуре таблицы. Так объясните ему, что х\а - это вовсе не результат какого-то деления (и, кстати, слэш там не зря обратный), а просто в первом столбце - значения параметра х, в первой строке - параметра а, на пересечениях строк/столбцов - значения искомой функции при данных х и а. Какого рожна еще надо? Попробуйте это объяснить "Учителю".
Ну а уж если он будет упорствовать, то покажите ему следующий вариант программы, объяснив, что это для полных идиотов:
Код:

Const
 An=0.3;
 Ak=0.7;
 Xn=0.1;
 Xk=0.2;
 m=3;
 n=2;

Var
 i,j:byte;
 W,Ha,Hx,a,x:real;

Function ArcCos(X:real):real;
begin
 if X=1 then ArcCos:=0 else
 if X=-1 then ArcCos:=Pi else
 ArcCos:=(Pi/2)-ArcTan(X/SQRT(1-X*X));
end;

Function Max(g1,g2:real):real;
begin
 if g1>g2 then Max:=g1 else Max:=g2;
end;

Function F1(a1,x1:real):real;
begin
 F1:=ArcTan(a1*x1)*3;
end;

Function F2(a2,x2:real):real;
begin
 F2:=Sqrt(Sqr(a2)+Sqr(x2));
end;

Function F3(a3,x3:real):real;
begin
 F3:=ArcCos(a3+x3/10);
end;

Begin
 Ha:=(Ak-An)/m;
 Hx:=(Xk-Xn)/n;
 Write('      ');
 For j:=0 to m do Write('  a=',(An+Ha*j):5:3);
 Writeln;
 For i:=0 to n do
  begin
  Write('x=',(Xn+Hx*i):5:3);
  For j:=0 to m do
    begin
    a:=An+Ha*j;
    x:=Xn+Hx*i;
    W:=Max(Max(F1(a,x),F2(a,x)),F3(a,x));
    Write('  W=',W:5:3);
    end;
  Writeln;
  end;
 Readln
End.


Alexei18 02.11.2012 23:23

СПАСИБО!!!

Alexei18 17.11.2012 21:08

Помогите если не сложно с паскалем, на тему "массивы"
 
Дана матрица А(5,4)
Найти новый одномерный массив В из суммы элементов каждой строки матрицы А.
Найти максимальный элемент А в 5-й строке матрицы.
Заменить последний элемент в 3-й строке марицы А на найденный максимальный элемент.

Vladimir_S 17.11.2012 21:18

Цитата:

Сообщение от Alexei18 (Сообщение 820752)
Помогите если не сложно с паскалем, на тему "массивы"

Не сложно, но подобными ясельными задачками не занимаюсь. Из принципа. А еще потому, что от поисков максимальных и минимальных элементов массивов, извините, тошнит уже. Так что мой Вам совет - решайте самостоятельно. На чем еще учиться, как не на подобной ерунде?

Ахал 14.04.2017 21:36

Цитата:

Сообщение от Vladimir_S (Сообщение 808536)
Естественно! Вы же описали функцию выбора максимальной из ДВУХ величин, а пытаетесь впихнуть ТРИ! Да и функцию Вы недоописали, а бросили на полпути. И к тому же при обращении к функции параметры перечисляются через запятую, а не точку с запятой. В общем - ошибка на ошибке.

Да... смотрю, Вы ни в задаче, ни в Паскале толком не разобрались.
Сейчас вынужден отключиться, если терпит до завтра, попробую объяснить, как решать эту задачу.

Здравствуйте, Владимир!
У меня к вам просьба по этой же формуле.
Вы бы не могли пожалуйста, помочь мне с написанием блок схемы.

Vladimir_S 14.04.2017 22:46

Цитата:

Сообщение от Ахал (Сообщение 2478994)
Здравствуйте, Владимир! У меня к вам просьба по этой же формуле. Вы бы не могли пожалуйста, помочь мне с написанием блок схемы.

Я в этой теме уже писал, что блок-схемами не занимаюсь. Поищите в Сети соответствующие сервисы (по программе построить блок-схему), когда-то их было множество.

Ахал 15.04.2017 00:11

Спасибо, я вас понял.
Вы бы не могли мне пожалуйста объяснить на языке чайников (идиотов, рас****яев, которые ничего не понимают в программировании), как вы написали эту программу.
Мне просто ещё объяснять всё это, а я в циклическом алгоритме мало что понимаю.


Часовой пояс GMT +4, время: 10:36.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.