|
Вопрос # 5 333/ вопрос решён / |
|
здравствуйте уважаемые эксперты ...извините если отвлекаю вас от работы , но в данный момент я решаю такую задачу :
Разработать функцию/процедуру проверки упорядоченности числовых элементов списка. Если список неупорядоченный, то заполнить его числами, последовательно уменьшающимися на 1, начиная с заданного числа X, и добавить полученный список в начало исходного, повторяя подобную вставку заранее известное число раз.
алгоритм описал , компилятор ошибок не выдает , программа не виснет но не выдает мне нужного результата.... я прикрепляю архим с этим проектом и часть кода в которомм на мой взгляд содержится ошибка ....в надежде что если вы не исправите то хотя бы покажете где она находиться ...или окажете какую нибудь другую помощь
К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)
Приложение: Переключить в обычный режим-
-
- unit Unit1;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls;
-
- type
- TForm1 = class(TForm)
- Label1: TLabel;
- Button1: TButton;
- Edit1: TEdit;
- Button2: TButton;
- Edit2: TEdit;
- Edit3: TEdit;
- procedure Button1Click(Sender: TObject);
- procedure Button2Click(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
-
- var
- Form1: TForm1;
- NumItems: integer;
- implementation
- type
- TIntArray = array[1..1000000] of integer;
- PIntArray = ^TIntArray;
- var
- Items: PIntArray;
-
-
- {$R *.dfm}
-
- procedure TForm1.Button1Click(Sender: TObject);
- var
- I: Integer;
- Txt: String;
- begin
-
-
- Txt:='';
-
-
- for i:=0 to NumItems-1 do
- begin
-
- Txt:=Txt+IntToStr(Items^[i])+' ';
- end;
- Label1.Caption:=Txt;
-
- end;
-
- procedure TForm1.Button2Click(Sender: TObject);
- var i,j,k: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));
-
- mas^[i]:=i;
- for i:=1 to NumItems-1 do
- begin
- if Items^[i]<=Items[i+1] then
-
- Items^[i]:=Items[i+1];
- j:=j+1;
- end;
- end;
- if j < NumItems then
- begin
-
- masIt[i]:=mas[i];
-
- for i:=0 to chislo-1 do
- masIt[i+(chislo*k)]:=mas[i];
-
- masIt[i+(kol*chislo)]:=Items[i];
-
- label1.caption:=label1.caption+IntToStr(masIt[i])+' ';
- end
- else
-
-
- end;
-
- end.
 |
Вопрос задал: Ruslan1993 (статус: Посетитель)
Вопрос отправлен: 28 мая 2011, 11:25
Состояние вопроса: решён, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 10; последнее сообщение — 30 мая 2011, 12:56; участников в обсуждении: 3.
|
Ruslan1993 (статус: Посетитель), 28 мая 2011, 11:43 [#1]:
буду вам признателен за любую помощь
|
|
Толяныч (статус: 4-ый класс), 28 мая 2011, 13:34 [#2]:
Повторение - мать мучения ? Дублирование вопроса 5328.
Не отвечают потому, что - я уже не раз это утверждал - преподы задают бессмысленные задания, не имеющие никакого отношения к практическим задачам и не дающие никаких, imho, полезных навыков.
Вот про хруст и грохот ( 5265 ) я решал с удовольствием.
|
|
Ruslan1993 (статус: Посетитель), 28 мая 2011, 14:10 [#3]:
мне не нужно что бы ее решили за меня ... мне просто хотя бы указать на ошибку ...
|
|
Ruslan1993 (статус: Посетитель), 28 мая 2011, 14:22 [#4]:
проблема в том чьл я не совсем понимаю как данные из 2 массивов загнать в один .... это единственное что яч не могу осмыслить и именно в этом мне нужна помощь ... я отправил задачу сюдане для того что бы мне типа решили за бесплатно .... а для того что бы помогли вот в этой проблеме
|
|
Толяныч (статус: 4-ый класс), 29 мая 2011, 21:43 [#5]:
Ды проще простого: если надо не слить 2 массва в третий ( это вообще пустяк ), а добавить чего-то в один из них, и количество чего-то добавляемого N известно, то надо сначала освободить в массиве-приемнике место, для чего перетащить его на N позиций взад, начиная с конца, а уж пот`ом на освободившееся место влить второй массив.
До каких значений будет уменьшаться второй массив с Х через 1 -- до единицы? или до нуля ? Надо определиться.
|
|
Ruslan1993 (статус: Посетитель), 30 мая 2011, 11:21 [#6]:
толяныч мне нужно из 2 массивов слить в в 3 массив .... у меня все удачно с первым массивом но когда начинаю добавлять второй происходит запарка такая что последние элементы заменяет на какуюто белеберду например
3 2 1 3 2 1 5 83 6 25794563679367, что то типа этого
|
|
Ruslan1993 (статус: Посетитель), 30 мая 2011, 11:27 [#7]:
я вот допустим с помощью GetMem могу выделить память под новый динамический массив, а как тогда выделить память уже готового массива да еще и в начале а не в конце ... можно показать на примере кода не моей задачи а какой нибудь левой что бы я смысл смог понять
|
|
Вадим К (статус: Академик), 30 мая 2011, 11:38 [#8]:
Уверенны, что GetMem нужен? я посмотрел на код - он страшен. SetLength не решит Ваших проблем?
Отвечая на ваш вопрос. Если нужно увеличить размер массива, то создаем новый массив нужного размера, потом с старого копируем данные в новый, старый удаляем.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Ruslan1993 (статус: Посетитель), 30 мая 2011, 11:46 [#9]:
извините уважаемый толяныч я понял свою ошибку .... у меня бы все заработало сразу же ... просто я забыл разименовать массивы в цикле ... извиняюсь что отнял у вас время .... но все равно огромное спасибо за помощь
|
30 мая 2011, 11:47: Статус вопроса изменён на решённый (изменил автор вопроса — Ruslan1993)
|
Толяныч (статус: 4-ый класс), 30 мая 2011, 12:56 [#10]:
Ничего, главное - результат. Успехов !
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|