1 / 1 / 0
Регистрация: 07.04.2008
Сообщений: 44
1

Сортировка в многомерном массиве

15.05.2008, 17:45. Показов 2482. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! У меня такая вот проблема. Нужно задать массив многомерный и отсортировать его по убыванию, методом вставки. Сортировку и вставку я сделала, проблема заключается в том, что нужно отсортировать определенную область массива. У меня сортируется, только не та область которая нужно. Вот ссылка с скриншотом этой области. Мне нужна область 7я, а сортируется почему-то 5. Вот отрывок кода:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
for i:=0 to High(mas) do
    for j:=0 to High(mas) do
      begin
        mas[i,j]:=random(90);
        strMas.Cells[j,i]:=IntToStr(mas[i,j]);
               strRez.Cells[j,i]:='0';
      end;
  for j:=0 to k-1 do
    begin
      kol:=0;       for i:=k to n-1-j do
        inc(kol);
      SetLength(m,kol);       pos:=0;
             for a:=k to n+j+1 do
          begin
            m[pos]:=mas[n+j+1,a];
            inc(pos);
          end;
      for b:=1 to kol-1 do
        for c:=0 to b-1 do
          if m[b]>m[c] then
            begin
              p:=m[b];
              for l:=b-1 downto c do
                m[l+1]:=m[l];
              m[c]:=p;
            end;
        for l:=0 to k-j-1 do
          strRez.Cells[l+k,n+j+1]:=IntToStr(m[l]);
    end;
end;
Помогите пожалуйста!!! завтра курсовик сдавать!!!!:huh:
заранее спасибки!
Миниатюры
Сортировка в многомерном массиве  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.05.2008, 17:45
Ответы с готовыми решениями:

Ошибка в многомерном массиве
Добрый день! Необходимо было создать программу для ввода с формы элементов прямоугольной матрицы...

Необходимо хранить данные в многомерном массиве
Есть проблема - во время работы программы необходимо хранить данные в многомерном массиве, причем...

Поиск (max) and (min) числа в многомерном массиве без участия компонента StringGrid
Подскажите... Поиск (max) and (min) числа в многомерном массиве без участия компонента StringGrid....

Сортировка строк в многомерном массиве
Как отсортировать елемни строк в многомерном массиве по возростанию или по спаданию? На Си

2
10 / 10 / 3
Регистрация: 17.05.2008
Сообщений: 14
17.05.2008, 16:28 2
Здравствуйте.

Возможное решение задачи, с информацией вашей темы на форуме http://forum.developing.ru:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
procedure TForm1.cmdRunClick(Sender: TObject);
var        //Объявляем переменные
  i,j,kol,k,a,pos,p,l,b,c:Word;
  mas:array of array of Word;
  m:array of Word;
begin
  Randomize;   //Активируем генератор случайных чисел
  //Задаем размеры для каждой таблицы (n:n)
  strRez.ColCount:=n;
  strRez.RowCount:=n;
  strMas.ColCount:=n;
  strMas.RowCount:=n;
  k:=StrToInt(txtN.Text);
 
  //Цикл для задания размера
  //динамического массива
  //for i:=0 to 1 do
    //begin
      SetLength(mas,n);
        for j:=0 to n-1 do
          SetLength(mas[j],n);
    //end;
  //Цикл для заполнения массива
  //случайными числами
  for i:=0 to High(mas) do
    for j:=0 to High(mas) do
    begin
      mas[i,j]:=random(90);
      strMas.Cells[j,i]:=IntToStr(mas[i,j]);
      //Результирующую таблицу временно
      //заполняем нулями
      strRez.Cells[j,i]:='0';
    end;
  //Цикл для прохода по строкам до середины
  for j:=0 to k-1 do
  begin
    kol:=0; //Обнуляем кол-во элементов массива
    //Цикл для задания размера нового массива
    for i:=0 to j do
      inc(kol);
 
    SetLength(m,kol); //Задает размерность массива
    pos:=0;
    //Цикл для заполнения нового массива элементами
    //из предыдущего массива 'mas'
    for a:=0 to j do
    begin
      m[pos]:=mas[n-j-1,a];
      inc(pos);
    end;
    //Цикл для сортировки массива
    for b:=1 to kol-1 do
      for c:=0 to b-1 do
        if m[b]>m[c] then
        begin
          p:=m[b];
          for l:=b-1 downto c do
            m[l+1]:=m[l];
          m[c]:=p;
        end;
    //Цикл для вывода результата сортировки
    for l:=0 to j do
      strRez.Cells[l, n-j-1]:=IntToStr(m[l]);
  end;
end;
Проход цикла: строки: снизу-вверх; столбцы: слева-направо.
0
1 / 1 / 0
Регистрация: 07.04.2008
Сообщений: 44
20.05.2008, 18:59  [ТС] 3
большое большое спасибо!!!!!!!!!!!!!!!!!!!!!!!!
0
20.05.2008, 18:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.05.2008, 18:59
Помогаю со студенческими работами здесь

Сортировка строк в многомерном массиве
Здравствуйте! Есть такое задание, дана матрица (m,n) и в ней нужно отсортировать строки по...

Поиск в многомерном массиве
Доброго дня, подскажите , как с массива $array_data, удалить все ключи, в которых содержится...

Обнуление элементов в многомерном массиве
Подскажите, пожалуйста! Есть многомерный массив double massiv =new double; В течении работы...

Замена ключа в многомерном массиве
Здравствуйте, форумчане! Подскажите,пожалуйста, как найти в массиве все ключи name и заменить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru