| 
| 
 | Вопрос # 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 typeTIntArray = array[1..1000000] of integer;PIntArray = ^TIntArray;varItems: PIntArray;  {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject);varI: 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;     beginj:=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]:Ничего, главное - результат. Успехов ! |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |