|
Вопрос # 5 328/ вопрос открыт / |
|
Здравствуйте! Приветствую вас уважаемые эксперты прошу помочь мне в написании некоторых программ ... на одну из них я прикреплю исходники там проблема в том что я не знаю в чем ошибка программы
1)Разработать функцию/процедуру проверки упорядоченности числовых элементов списка. Если список неупорядоченный, то заполнить его числами, последовательно уменьшающимися на 1, начиная с заданного числа X, и добавить полученный список в начало исходного, повторяя подобную вставку заранее известное число раз.
2)Разработать рекурсивную функцию или процедуру, которая позволяет вычислить
а) Наибольшую разность порядковых номеров наибольшего и наименьшего элементов массива;
б) Значение рекуррентной формулы
F(0) = 1; F(k) = F(k-1)/2 + 3k при k > 0.
К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)
Примечание #1 (27 мая 2011, 18:03): первая прога написана но не работает как надо ... а ошибку я понять не могу
Примечание #2 (27 мая 2011, 18:13): часть первой программы в которой я думаю содержитьс ошибка
procedure TForm1.Button2Click(Sender: TObject);
var i,j,k:integer;
mas:PIntArray; {массив типа (3 2 1 )}
masIt:PIntArray; {конечный массив}
chislo:integer; {число с которого начинается отсчет }
kol:integer; {количество вставок}
nItems:integer; {количество элементов которое будет содержать конечный массив}
begin
j:=1;
Label1.Caption:='';
kol:=StrToInt(Edit3.Text);
chislo:= StrToInt(edit2.text);
nItems:=(chislo*kol)+NumItems;
GetMem(masIt,nItems*SizeOf(integer));
GetMem(mas,chislo*sizeof(integer));
for i:=chislo downto 1 do {задание массива который содержит типа отсчет до 1}
mas^[i]:=i;
for i:=1 to NumItems-1 do
begin
if Items^[i]<=Items[i+1] then
begin {проверка на упорядоченность}
Items^[i]:=Items[i+1];
j:=j+1;
end;
end;
if j < NumItems then
begin
for i:=0 to chislo-1 do {вставка первого повторения}
masIt[i]:=mas[i];
for k:=1 to kol-1 do {вставка последующих повторений}
for i:=0 to chislo-1 do
masIt[i+(chislo*k)]:=mas[i];
for i:=0 to NumItems-1 do {вставка исходного массива}
masIt[i+(kol*chislo)]:=Items[i];
for i:=0 to nItems-1 do {вывод готового массива на метку если исходный массив был не упорядоченный}
label1.caption:=label1.caption+IntToStr(masIt[i])+' ';
end
else
label1.caption:='массив упорядочен';
end;
 |
Вопрос задал: Ruslan1993 (статус: Посетитель)
Вопрос отправлен: 27 мая 2011, 16:54
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 4; последнее сообщение — 27 мая 2011, 20:20; участников в обсуждении: 2.
|
Ruslan1993 (статус: Посетитель), 27 мая 2011, 17:47 [#1]:
буду рад даже малейшей помощи.
|
|
Вадим К (статус: Академик), 27 мая 2011, 18:08 [#2]:
для последнего - там просто, что то вида
function F(k:integer):integer;
begin
if k < 0 then
result := 0
else if k = 0 then
result := 1;
else
result := f(k-1)/2+3*k
end;
и где то в коде вызываем
x := f(10);
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Ruslan1993 (статус: Посетитель), 27 мая 2011, 18:46 [#3]:
спсибо это я реализовал ... правда ввел маленькую поправочку на счет типа ... а так все работает отлично
|
|
Ruslan1993 (статус: Посетитель), 27 мая 2011, 20:20 [#4]:
а на счет первой задачи..... не поможете найти в ней ошибку
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|