Помощь - Поиск - Пользователи - Календарь
Полная версия: Алгоритмы
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Katis
Здраствуйте! Я учусь на финансиста, но у нас есть программирование, а я его плохо понимаю. И вот не могу закрыть практику. Програмки с чужой помощью сделала, а вот алгоритмы не могу((( Помогите пожалуйсто. Заранее благодарю! Вот програмки к которым нужны алгоритмы:

1
Program p3_243;
uses crt;
function Factorial(n: word): LongInt;
begin
  if n=0 then Factorial := 1 else Factorial := n*Factorial(n-1);
end;
function f(x:real; n: integer):real;
begin
  f:= exp((n+1)*ln(-1)) * (exp((2*n-1)*ln(x))/Factorial(2*n+1));
end;
const eps = 0.0001;
Var
b,x,Sum,an:real;
n:word;
Begin
  n:=0;
  a:=1;
  b:=2;
  Sum := 0.0;
  repeat
  inc(n);
  an := f(a);
  Sum := Sum+an;
  until abs(an)<eps;
  writeLn(' Sum=',Sum);
  readLn;
  end.


2
Program P3_3;
uses crt;
const b = 2; eps = 0,000035;
var x,xk: real;
Begin
a:=-1;
i:=1;
repeat
xk := a;
x := 0.2 * tan(3.8 * xk);
if (x - xk <= eps) and (x<=b) and (i mod 3 = 0) then
writeln((i/3):2 :0,' корень = ',x:7 :3);
a:=x;
inc(i);
until (x - xk > exp) or (x>b);
i:=i-1;
writeln('Количество итераций = ',i);
readln;
end.


3
Program P3_123;
Uses Crt;
Var a, b, e, fa, fc, c: Real;
Begin ClrScr; 
e : = 0.00005;
a := 0.4; b:=1;
fa : = 1.3*a + sqrt(a) +exp(3/2 *ln(x)) -2.46 ;
While Abs (a – b) > e do
Begin c : = (a + b)/2;
fc : = 1.3*c + sqrt(c) +exp(3/2 *ln(x)) -2.46  ;
If fc * fa < 0 Then b : = c
Else Begin a : = c; fa : = fc; end; 
end;
Writeln (‘Корень уравнения равен ’, a : 6 : 3);
Readkey;
End


4
Program p4_132;
uses crt;
const m =8;
var EV: array[1..m, 1..m] of integer; i,j,min:integer; min_array: array[1..m] of integer;
Begin
for i:=1 to m do
for j:=1 to m do begin
write('Введите EV[',i,',',j,']: ');
readln(ev[i,j]);
end;
for i:=1 to m do begin
min:=0;
for j:=1 to m do
if (i<=j) then
if (ev[i,j] < min) then
min = ev[i,j];
min_array[i]:=min;
end;
for i:=1 to m do
Writeln('Min[',i,'] = ',min_array[i]);
end.


5
Program P4_43;
uses crt;
const m = 4; n = 2;
var b: array[1..m, 1..n] of integer; i,j, max,maxi,maxj:integer; flag : boolean;
Begin
For i:=1 to m do
For j:=1 to n do begin
write('Введите B[,'i,',',j,']: ');
readln(b[i,j]);
if (b[i,j]<0) then max = b[i,j];
end;
for i:=1 to m do
for j:=1 to n do
if (b[i,j]<0) and (b[i,j]>max) then begin
max := b[i,j];
maxi:=i;
maxj:=j;
end;
Writeln('Ответ: B[',maxi,',',maxj,] = ',max);
end.


6
Program P;
uses crt;
const m = 2; n = 3;
var b: array[m..n] of integer; i,j, max:integer;
Begin
For i:=1 to m do
For j:=1 to n do begin
write('Введите B[,'i,',',j,']: ');
readln(b[i,j]);
end;
max := b[1,1];
for i:=1 to m do
for j:=1 to n do
if (b[i,j]>max) then
max := b[i,j];
Writeln('Ответ: ',max);
end.

Пожалуйсто хоть к какой-то из них напишите алгоритм. Спасибо ...)
Lapp
М
Переименуй тему согласно п.4 Правил и заключи тексты программ в теги code=pas и /code

Krjuger
Что значит написать алгоритм то?Может тебе просто обьяснить как работают эти программы?
В общем для первой программы.
у тебя есть функция, которая рекурсивно высчитывает значение факториала,так же у тебя есть функция,которая высчитывает каждый последующий член твоейго ряда.Ты выславляеш начальные значения.И начинаеш суммировать ряд до тех пор пока следующий член не будет меньше твоего eps,тобиш точности.
Кстати у меня тут вот такой вопрос,а оно(первая задача) вообще у тебя каким образом скомпилировалось????

b,x,Sum,an:real;
n:word;
Begin
  n:=0;
  a:=1;
  b:=2;


Что то мне подсказывает,что у тебя паскаль будет ругаться на строчке а:=1; потому что переменная не обьявлена...и зачем обьявлять переменную " b",если ты ее нигде не используеш?
А вообще,если что то не понятно задай конкретные вопросы)))


И еще напиши для каждой задачи условие,а то гадать не очень хочется.
Да и еще...что за странный стиль у человека,почему повышает он через inc(x),а понижает через х:=х-1;(если выдерживать стилистику,то ,я думаю, логичнее писать dec(x))
Katis
Ой прошу прощения, мне надо блок схемы unsure.gif )))
Krjuger
ОООО,интересные подробности всплывают)))))
Тогда говори,как у вас принято обозначать структуры,а то у некоторых по разному....
Katis
Начало и конец - в овале; паралелограмм - исходные данные и результат; прямоугольник - действие;
ромб - условие. Спасибо за внимание и помощь)
Krjuger
Ну в общем,если мне не изменяет память,то будет что то в этом духе
Изображение
Katis
Да в этом плане! Спасибки, но если можно картинку побольше а то не видно(
Krjuger
реально фотка идет 1280х1024)просто отобразилось каряво,когда на хост заливал...

Про задание для кайждой проги остается в силе.

А вообще желательно какой либо другой способ придумать фотки заливать,а то на цифровик,потом на хост а потом сюда геморно получается как то.
Katis
Krjuger если можешь загрузи их сюда пожалуйсто http://ifolder.ru/ . Огромнейшое спасибки за помощь)
Krjuger
В общем вот тут 1,2,4 задачи.
http://ifolder.ru/12909617
Katis
спасибочки, а остальные не знаешь??? я сейчас пишу условия...
Krjuger
Знать то знаю,но я думаю,мож кто еще поможет,а то немного напрягает меня их писать и выкладывать,можно было бы сразу на компе,было бы намного проще..В 5 и 6 просто 4 цикла,а они вон как извратно пишутся,только ты не переписывай 1 в 1 я там не совсем все пишу,в плане циклы надо полностью записывать тобиш "for i:=1 to n" а не так как я "for i:=1" ..
Katis
Условие задач

2
х = 0.2tg(3.8x) [-1;2] погрешность 0,000035, шаг вывода значения корня 3

3
f(x) = 1.3x + корень из x + x в степени 3/2 - 2,46 , [0.4;1]? погрешность 0,00005

4
Найти наименьшие, отрицательные, элементы каждой строки матрицы EW{m, m} находящиеся над главной диагональю и переписать их в одномерный массив W. m=6

5
Найти наибольший, отрицательный, элемент матрицы BF{m, n} и определить его индексы. m=4, n=2

6
Найти наибольший, положительный, элемент матрицы B{m, n}. m=2, n=3
Krjuger
насчет 5 программы я не уверен...там 2 варианта.либо ты убираеш условие из цикла,где ты запонтяеш массив,либо ты запонляеш и ищещ минимальное сразу при заполнении,потому что так как она сделана у тебя она работает но условие в цикле заполнения просто не имеет никакого смысла.

Program P4_43;
uses crt;
const m = 4; n = 2;
var b: array[1..m, 1..n] of integer; i,j, max,maxi,maxj:integer; flag : boolean;
Begin
max:=0;
For i:=1 to m do
For j:=1 to n do begin
write('Введите B[,'i,',',j,']: ');
readln(b[i,j]);
end;
for i:=1 to m do
for j:=1 to n do
if b[i,j]<max then begin
max := b[i,j];
maxi:=i;
maxj:=j;
end;
Writeln('Ответ: B[',maxi,',',maxj,'] = ',max);
end.



Вообще твои 5 и 6 задачи отличаются лиш знаком и тем,что ты еще запоминаеш координаты этого элемента,я не понимаю почему они у тебя так сильно различны,и блок схема для обоих будет однапочти одна и таже и таже только в "ромбике" вместо "<" будет ">" и после строки max := b[i,j];
надо будет написать еще 2 прямоугольника с maxi:=i;maxj:=j;

http://ifolder.ru/12910438 на 6 задачу.
Katis
Бальшущие прибальшущие спасибки за помощь)))
Unconnected
Katis, на главной странице форума, в разделе Ссылки, есть замечательная тема, называется "Программа для построения блок-схем"...
Krjuger
Наверно это больше адресавано мне?)Чтож спасибо за информацию,не знал)))
Unconnected
Ну, вообще я ТС сказал, а там как получится..) Лучше пусть сама делает, хоть и с помощью программы.
Katis
всем пасиб за помощь)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.