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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2014, 11:36   #21
glazik
Пользователь
 
Аватар для glazik
 
Регистрация: 03.03.2011
Сообщений: 80
По умолчанию

Спасибо Серги
glazik вне форума Ответить с цитированием
Старый 21.05.2014, 23:44   #22
glazik
Пользователь
 
Аватар для glazik
 
Регистрация: 03.03.2011
Сообщений: 80
По умолчанию

Теперь мне нужно создать отсортированный массив по убыванию, причем находя максимальный элемент записывать его в другой массив, а в этом массиве обнулять пока весь массив не будет из 0. + записывать в еще 1 массив индексы элементов. Подскажите, что не так:
Смысл такой: если ввели массив 3 2 4 1, то в массив соо1 должны быть 4 3 2 1, массив i1 - 3 1 2 4

Код:
  max1:= Low(num1);
  j:= Low(num1);
  for j:= Low(num1)+1 to High(num1) do
    begin
      for i:= Low(num1)+1 to High(num1) do
        if num1[i]>num1[max1] then max1:=i;
      coo1[j]:=num1[max1];
      num1[max1]:=0;
      i1[j]:=max1;
    end;
программа вылетает. http://c2n.me/i9QzRe
glazik вне форума Ответить с цитированием
Старый 22.05.2014, 07:31   #23
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

(Опять не приходят оповещения на почту.. печалька )
Вариант без списков..
Код:
uses StrUtils;
const
	Delims = [#0..#255]-['1'..'9', '0'];

var
	s : string;
	i : Integer;

begin
	ReadLn(s);
	for i := 1 to WordCount(s, Delims) do begin
		WriteLn(ExtractWord(i, s, Delims))
	end
end.
Я проверял на FPC.. Дельфина у меня нет..
Poma][a вне форума Ответить с цитированием
Старый 22.05.2014, 08:38   #24
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от glazik Посмотреть сообщение
Код:
  max1:= Low(num1);
  j:= Low(num1);
  for j:= Low(num1)+1 to High(num1) do
    begin
      for i:= Low(num1)+1 to High(num1) do
        if num1[i]>num1[max1] then max1:=i;
      coo1[j]:=num1[max1];
      num1[max1]:=0;
      i1[j]:=max1;
    end;
программа вылетает. http://c2n.me/i9QzRe
надеюсь, что массивы coo1 и i1 созданы и им выделена память через процедуру SetLength() ?!


p.s. остальной ваш код не смотрел. вижу явно лишнюю строку j:= Low(num1);
она бессмыслена, т.к. тут же идёт цикл по переменной j, который переопределит значение переменной j. Но что и как - сейчас не подскажу...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.05.2014, 20:25   #25
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
программа вылетает
Как правило ошибки такого рода означают попытку обращения за пределы массива. Например, у Вас 2 элемента, а Вы обращаетесь ко второму, не учитывая, что нумерация идет от нуля.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
код из Паскаля в Delphi (Дан целочисленный массив A. Переписать в новый массив В элементы с порядковыми номерами, кратными трём ALEXandr20333 Помощь студентам 8 27.02.2014 11:27
введите целочисленный массив в(5).подсчитайте число положительных элементов и перепишите их подряд в другой массив (Паскаль) buzz Помощь студентам 5 15.10.2013 16:16
Целочисленный массив gulbidin222 Помощь студентам 3 23.02.2012 20:45
Целочисленный массив ronil Паскаль, Turbo Pascal, PascalABC.NET 2 10.12.2010 09:36
Преобразование строки в массив чисел в Pascal(Lazarus) GaJIbI4 Помощь студентам 4 20.05.2010 20:38