Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2011, 12:13   #1
руслан1993
Новичок
Джуниор
 
Регистрация: 28.05.2011
Сообщений: 1
Восклицание неправильная работа программы на delphi

вот такая задача
Разработать функцию/процедуру проверки упорядоченности числовых элементов списка. Если список неупорядоченный, то заполнить его числами, последовательно уменьшающимися на 1, начиная с заданного числа X, и добавить полученный список в начало исходного, повторяя подобную вставку заранее известное число раз.

алгоритм описал , компилятор ошибок не выдает , программа не виснет но не выдает мне нужного результата....в надежде что если вы не исправите то хотя бы покажете где она находиться ...или окажете какую нибудь другую помощь

вот часть кода в котором я думаю содержиться ошибка

Код:
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;
в этой программе на вход должен подаваться динамический массив например 6 8 3 5 , если он не упорядочен то производиться отсчет до 1 и несколько раз вставка напрмер 3 2 1 3 2 1 6 8 3 5 , а она выдает чепуху и проблема заключается в цикле на проверку J . это обработчик второй кнопки ... а на первой у меня задание динамического массива и его вывод на метку .
руслан1993 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
неправильная работа при инициализации переменной }|{opa KopHeB Помощь студентам 0 02.02.2011 04:32
ADOTable неправильная работа. Spaun Помощь студентам 1 23.06.2010 10:12
неправильная работа программки. Rafff Общие вопросы C/C++ 6 05.04.2010 15:16
Неправильная работа switch в while konstantinopol Общие вопросы C/C++ 3 24.01.2009 03:51
Работа программы без Delphi Gladiator Общие вопросы Delphi 1 21.05.2008 22:52