Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите решить задачку на сортировку, решение задачи на сортировку 
V
    Опции темы
jorjinho10
Дата 31.3.2009, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 31.3.2009
Где: Saint-Petersburg

Репутация: нет
Всего: нет



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

Я сделал первую часть, НО ВОТ СОРТИРОВКА НИКАК НЕ ПОЛУЧАЕТСЯ ((
Код

program Vector;
Const
Nmax=1000;
Type
TVector=array[1..Nmax] of real;
Var
A:TVector;
N:integer;
i,j:integer;
Max,Min:real;
Begin
write('N=');readln(N);
if ((N>=1) and (N<=1000)) then
Begin
for i:=1 to N do
Begin
write ('A[',i,']=');readln(a[i]);
end;
Max:=A[1];
Min:=A[1];
for i:=2 to N do
Begin
if (A[i]>Max) then
Max:=A[i];
if (A[i]<Min) then
Min:=A[i];end;
writeln('Max=',Max:4:2);
writeln('Min=',Min:4:2);
end;readln;end.


Если попал не в ту тему то ЗАРАНЕЕ ИЗВИНЯЮСЬ!!!

Это сообщение отредактировал(а) jorjinho10 - 1.4.2009, 07:58
PM MAIL ICQ Skype   Вверх
volvo877
Дата 1.4.2009, 12:29 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Обычная сортировка "пузырьком":
Код
program Vector;

const
  Nmax = 1000;
type
  TVector = array[1 .. Nmax] of real;

var
  A: TVector;
  i, j, n: integer;
  T, iMax, iMin: integer;
  v: real;
  direction: boolean;
begin
  write('N='); readln(n);
  if (n >=1 ) and (n <= 1000) then begin
    for i:=1 to n do begin
      write ('A[',i,']='); readln(a[i]);
    end;

    iMax:=1; iMin:=1;
    for i:=2 to n do begin
      if (A[i]>a[iMax]) then iMax:=i;
      if (A[i]<a[iMin]) then iMin:=i;
    end;
    writeln('Max=',A[iMax]:4:2);
    writeln('Min=',A[iMin]:4:2);

    if iMin > iMax then begin
      T := iMin; iMin := iMax; iMax := T;
      direction := false;
    end
    else direction := true;

    for i := iMin + 1 to iMax - 1 do
      for j := iMax - 1 downto i+1 do
        if a[pred(j)] > a[j] = direction then begin
          v := a[Pred(j)]; a[Pred(j)] := a[j]; a[j] := v
        end;

    for i := 1 to n do write(a[i]:8:2);
    writeln;
  end;
  readln;
end.

PM MAIL   Вверх
jorjinho10
Дата 1.4.2009, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 31.3.2009
Где: Saint-Petersburg

Репутация: нет
Всего: нет



Спасибо.  smile 
но тут в 37 строчке турбо паскаль 7.0 ругается ))
пишет что THEN expected и курсор ставит под =

Это сообщение отредактировал(а) jorjinho10 - 1.4.2009, 21:50
PM MAIL ICQ Skype   Вверх
volvo877
Дата 2.4.2009, 13:58 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Значит, добавь скобки:
Код

    for i := iMin + 1 to iMax - 1 do
      for j := iMax - 1 downto i+1 do
        if (a[pred(j)] > a[j]) = direction then begin
          v := a[Pred(j)]; a[Pred(j)] := a[j]; a[j] := v
        end;
... Странно, FPC ничего не сказал, нормально отработало без скобок тоже...
PM MAIL   Вверх
jorjinho10
Дата 2.4.2009, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 31.3.2009
Где: Saint-Petersburg

Репутация: нет
Всего: нет



О, теперь все работает, СПАСИБО  smile 
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0457 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.