На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Название темы должно быть информативным !
Прежде чем задать вопрос, воспользуйтесь Поиском. и проверьте в FAQ (ЧАВО) Паскаля
Чтобы получить вразумительный ответ, подробно опишите проблему: что надо сделать, что не получается и номер ошибки (если есть), которую выводит компилятор.
Для вставки кода ваших программ используйте, пожалуйста, кнопку СODE=pas или выпадающий список СODE для других языков (подсветка синтаксиса).
[!] Как правильно задавать вопросы | Руководство по языку B.Pascal 7 & Objects/LR | Borland Pascal. Руководство пользователя
Модераторы: volvo877
  
> Хелп..Упорядочить массив по возрастанию
    Люди плиз хэлп
    У меня задача, которая состоит в следующем: Дан массив
    ExpandedWrap disabled
      const n=100
      X:array[1..n] of real;

    В нем найти максимальный элемент, кинуть его в самый конец массива и там оставить, а потом сравнивать с остальными элементами и в итоге массив упорядочить по возрастанию.

    Как это сделать можно проще? Подскажите...
      то, что написал = это алгорим пузырька, называется

      ExpandedWrap disabled
         
        var
             FA, FB, FI, FJ: Integer;
         
        procedure Swap(A, B, I, J: Integer);
        begin
          FA := A;
          FB := B;
          FI := I;
          FJ := J;
        end;
         
        procedure Sort(var A: array of Integer);
        var
          I, J, T: Integer;
        begin
          for I := High(A) downto Low(A) do
            for J := Low(A) to High(A) - 1 do
              if A[J] > A[J + 1] then
              begin
                Swap(A[J], A[J + 1], J, J + 1);
                T := A[J];
                A[J] := A[J + 1];
                A[J + 1] := T;
              end;
        end;

      попробуй...
        А если без процедур, например, так
        Нахождение максимального элемента

        ExpandedWrap disabled
          const n=100;
          var X:array[1..n] of real;
          i:integer;
          max:real;
          begin
          for i:=1 to n do
          begin
          writeln('Введите X[',i,']');
          readln(X[i]);
          end;
          max:=X[1];
          for i:=1 to n do
          if max<X[i] then max:=X[i];
          writeln('Максимальный элемент массива',max);
          end.


        А как дальше продолжить мысль: перенести max в конец (поменять max местами с последним индексом в массиве), а потом сравнивать индескы между собой и расставлять в порядке возрастания?
          А это другой алгоритм, называется "простые вставки", только обычно ищут минимум :) А делается это просто: вместе с значением максимума запоминаешь индекс в массиве, т.е. меняешь строчку
          Цитата
          Гэг Крэг, 26.02.04, 20:35
          if max<X[i] then max:=X[i];

          на вот такой оператор:
          ExpandedWrap disabled
            if max<X[i] then begin
              max:=X[i];
              imax:=i;
            end;
          а потом меняешь местами последний эл-т (N-й) с imax'ым.
          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0384 ]   [ 15 queries used ]   [ Generated: 11.12.24, 00:23 GMT ]