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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.12.2009, 18:55   #1
Saka
Пользователь
 
Регистрация: 04.12.2009
Сообщений: 83
По умолчанию Помогите с массивом на Delphi

Такая задача:1. Дан одномерный целочисленный массив А состоящий из N элементов(0<N<20;-10000<A[i]<10000). Упорядочить массив по правилу перед элементом, который был первым в массиве разместить все большие его, а за ним все остальные, сохраняя взаимное расположение, как среди элементов, стоящих перед первым , так и среди остальных элементов.

Помогите задать условие для N и A[i]!
Язык Delphi
Saka вне форума Ответить с цитированием
Старый 11.12.2009, 20:35   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

уверен, что есть много вариантов решения данной задачи.
расскажу два. Какой выбрать - решайте сами...

вариант 1.
Пишем процедурку, которая помещает указанный элемент (i-й) помещает в начало массива, не меняя расположение остальных элементов:
procedure MoveElement(var M : TMyArray; i : integer);

дальше всё просто. Запоминаем величину первого элемента и перебирая остальные элементы в цикле сравниваем:
Код:
FirstElement := A[1];
for k:=2 to N do
  if a[k]>FirstElement then MoveElement(a, k);
всё. задача решена.


вариант 2.
создаём новый массив, сначала записываем в него элементы больше первого. потом первый элемент.
потом ещё один проход по циклу и копируем все элементы, которые меньше/равны первому элементу.
всё. задача решена.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.12.2009, 20:46   #3
Saka
Пользователь
 
Регистрация: 04.12.2009
Сообщений: 83
По умолчанию

спасибо за варианты но у меня не получается написать условия для N и для A[i]. сам код у мя получился
Saka вне форума Ответить с цитированием
Старый 11.12.2009, 23:42   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

эти условия банально объсняют Вам какой нужно объявить массив и какого типа элементы массива:
Код:
A : array[1..19] of Integer;
всё!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.12.2009, 23:53   #5
Saka
Пользователь
 
Регистрация: 04.12.2009
Сообщений: 83
По умолчанию

а такие уловия для N подходят и для randomize?
а на A[i] какие поставить условия?

Последний раз редактировалось Saka; 12.12.2009 в 00:02.
Saka вне форума Ответить с цитированием
Старый 12.12.2009, 00:15   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ага. для рандомайза надо немножко посчитать на пальцах.
случайное число в диапазоне [-10000..10000]
можно получить так:
Код:
  Randomize;
  N := 19;
  for i:=1 to N do
     A[i] := Random(20001) - 10000;
20001 - это столько целых чисел в диапазоне [-10000..10000] (учитывая ноль)

p.s. в принципе N тоже можно получать случайным образом:
Код:
N := 1+Random(19);
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.12.2009, 00:45   #7
Saka
Пользователь
 
Регистрация: 04.12.2009
Сообщений: 83
По умолчанию

а это можно записать как-нибудь через ''If''?
Saka вне форума Ответить с цитированием
Старый 12.12.2009, 11:04   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
а это можно записать как-нибудь через ''If''?
Если я правильно Вас понял (в чём я НЕ УВЕРЕН!) — то нет, нельзя!

И, похоже, здесь, на форуме, Ваш вопрос тоже не поняли...
Попытайтесь здесь в теме его (вопрос) раскрыть, что Вас не устраивает, для чего тут может понадобится условный оператор IF, какое условие надо проверять и т.д.
мне кажется, что Вы просто морочите себе голову...

p.s. Кстати, хотелось бы посмотреть на код решения задачи. Если у Вас описание/иницилизация типов данных вызвало такие вопросы, то что же там в коде решения?!!!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.12.2009, 17:40   #9
Saka
Пользователь
 
Регистрация: 04.12.2009
Сообщений: 83
По умолчанию

теперь все понятно, просто тут ввели в заблуждение, что через оператор условия можно сделать. А я не был на 100% уверен и потому спросил
Saka вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi - операции с массивом Sianessa Помощь студентам 7 05.05.2009 00:27
Задача в Delphi с двумерным массивом SirLionheART Помощь студентам 2 14.12.2008 13:11
Задачка с массивом (Delphi) 777UFO777 Помощь студентам 3 04.12.2008 23:51
Создание оболочки к программе с массивом (Delphi) Kawun Помощь студентам 1 28.11.2008 20:22
Delphi, работа с массивом Skay Помощь студентам 2 05.04.2007 16:50