Курилка Другие языки программирования Сессия

Тема в разделе "Курилка", создана пользователем VIPOS, 21 дек 2012.

  1. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    а это вроде и есть быстрая, нет?
  2. TopicStarter Overlay
    VIPOS
    Offline

    VIPOS Опытный в 1С

    Регистрация:
    12 сен 2012
    Сообщения:
    565
    Симпатии:
    1
    Баллы:
    29
    не совсем..... хотя принцип похож..
  3. CSCO12103692
    Offline

    CSCO12103692 Опытный в 1С

    Регистрация:
    19 июн 2012
    Сообщения:
    190
    Симпатии:
    0
    Баллы:
    26
    Интересно.
    Вторая задачка оказалась куда глубже, чем на первый взгляд. Я, парралельно прояснив для себя пару 1Сных фич, понял, что вообще не представляю как работает сортировка на компутере.
    Напридумывал и перебрал уже ряд решений и ниодно не дает нужного результата......

    Вообще не понимаю как её можно решить без ужасных костылей. Старею, чтоли :)

    VIPOS, тебе самому поколупать её удалось?
  4. TopicStarter Overlay
    VIPOS
    Offline

    VIPOS Опытный в 1С

    Регистрация:
    12 сен 2012
    Сообщения:
    565
    Симпатии:
    1
    Баллы:
    29
    Да.. вчера доделал...
    вот черновой вариант.. осталось навести красоту...

    Код:
    a : Array[1..50, 1..50] Of integer;
    i : integer;
    j : integer;
    n : integer;
    m : integer;
    t : integer;
    r, s : integer;
    Begin
    Write('сколько строк?');
    Readln(m);
    Write('сколько столбцов?');
    Readln(n);
    For i := 1 To m Do {* Переменная i увеличивается с 1 до m *}
    Begin
    For j := 1 To n Do {* Увеличиваем j от 1 до n с шагом 1 *}
    Begin
    a[i, j] := random(20);
    write(a[i, j],' ');
    End;
    Writeln; {* Вывод пустой строки *}
    End;
    For j := 1 To n Do {* Увеличиваем j от 1 до n с шагом 1 *}
    For r := 1 To m Do {* Цикл для r => [1 .. m] *}
    For i := 1 To m - 1 Do {* Цикл для i => [1 .. m] *}
    If a[i, j] > a[i + 1, j] Then
    Begin
    t := a[i, j];
    a[i, j] := a[i + 1, j];
    a[i + 1, j] := t;
    End;
    
    for s:=1 to 2*m do begin
    for j:=2 to m do begin
    if a[1, j-1]>a[1,j] then begin
    for i:=1 to n do begin
    r:= a[i, j-1];
    t:=a[i, j];
    a[i, j-1]:=t;
    a[i, j]:=r ;
    end;			   end;  end;
    
    end;
    writeln('новый массив') ;
    For i := 1 To m Do {* Переменная i увеличивается с 1 до m *}
    Begin
    For j := 1 To n Do {* Переменная j увеличивается с 1 до n *}
    write(a[i, j],' ' );
    writeln;
    End;
    End.
    
    вот черновой.. все норм отрабатывает
  5. TopicStarter Overlay
    VIPOS
    Offline

    VIPOS Опытный в 1С

    Регистрация:
    12 сен 2012
    Сообщения:
    565
    Симпатии:
    1
    Баллы:
    29
    Так что осталась только 4.....
  6. CSCO12103692
    Offline

    CSCO12103692 Опытный в 1С

    Регистрация:
    19 июн 2012
    Сообщения:
    190
    Симпатии:
    0
    Баллы:
    26
    Я из интереса доделал вторую задачу на 1С, получилось даже довольно наглядно.

    http://files.mail.ru/LVGR0X

    Обработка, в левой части вводишь свою матрицу, сделал 5 колонок, жмешь сформировать и справа получаешь результат. Там еще квалификатор стоит, только натуральные числа, максимальная разрядность 10. Надо будет - меняй.

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

    Пришлось разложить исходую таблицу на кучу мелких в каждой по одной колонке, их отсортировать по отдельности, потом с помощью многомерного массива понять в каком порядке они должны идти и собрать результирующую таблицу.
  7. TopicStarter Overlay
    VIPOS
    Offline

    VIPOS Опытный в 1С

    Регистрация:
    12 сен 2012
    Сообщения:
    565
    Симпатии:
    1
    Баллы:
    29
    Спасибо! Интересная задумка=)))

    Но все еще стоит как ком в горле 4 задача..

Поделиться этой страницей