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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.10.2010, 13:25   #1
ElektrikMaximka
 
Регистрация: 07.02.2009
Сообщений: 5
По умолчанию Куда вставить проверку на чётность?

Условие: Сортировка по возрастанию элементов массива, абсолютные значения которых являются нечетными, при этом остальные элементы не должны перемещаться.
Теперь думаю, как вставить проверку чётности.
Только начинаю чтото понимать - сильно не пинайте )
ПаскальАБЦ.нет
Код пока такой ...
Вложения
Тип файла: txt сортировка.txt (1.2 Кб, 125 просмотров)
ElektrikMaximka вне форума Ответить с цитированием
Старый 09.10.2010, 18:42   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

так, например:
Код:
 for k:=n downto 2 do
  begin
   if Not odd(a[k]) then begin
     m:=1;
     for i:=2 to k do
       if (a[i]>a[m]) and (Not odd(a[i])) then m:=i;
     x:=a[m];
     a[m]:=a[k];
     a[k]:=x;
   end;
  end;
и ещё, я рекомендовал Вам перед тем, как поменять элементы местами, проверять, что это не один и тот же элемент. Согласитесь, глупо менять местами 1-й и 1-й элемент, или 3-й и 3-й... )
для этого достаточно написать так:
Код:
for k:=n downto 2 do
  begin
   if Not odd(a[k]) then begin
     m:=1;
     for i:=2 to k do
       if (a[i]>a[m]) and (Not odd(a[i])) then m:=i;
     if m<>k then begin
       x:=a[m];
       a[m]:=a[k];
       a[k]:=x;
     end;
   end;
  end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.10.2010, 20:26   #3
ElektrikMaximka
 
Регистрация: 07.02.2009
Сообщений: 5
По умолчанию

Serge_Bliznykov - спасибо вам!!!
Я добавил проверку на чётность и при запуске компиляции появляется ошибка: "операция and не применима к типам integer и boolean"
В чём ошибка? Заранне спасибо!
ElektrikMaximka вне форума Ответить с цитированием
Старый 09.10.2010, 20:32   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
и при запуске компиляции появляется ошибка
Код с ошибкой в студию.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.10.2010, 20:56   #5
ElektrikMaximka
 
Регистрация: 07.02.2009
Сообщений: 5
По умолчанию

Код:
program SortViborom;
uses CRT;
var
v :real;
a: array [1..100] of integer;
i,n,k,x,m :integer;
begin
 writeln('Программа нахождения нечётных чисел в массиве');
 writeln('и сортировки их по возрастанию методом простого выбора');
 writeln('-----------------------------------------------------------------------');
 writeln;
 write('Введите кол-во элементов массива - ');
 read(n);
 writeln;
 writeln('Для ручного ввода элементов массива нажмите  "1"');
 writeln('Для их автоматического генерирования нажмите "2"');
 writeln;
 read(v);
 if v=1 then writeln ('Вы выбрали ручной ввод, введите значения элементов массива ...');
 if v=2 then writeln ('Вы выбрали автоматическое генерирование ...');
 writeln;
 if v=1 then
  for i:=1 to n do 
  begin
   write(i,'-й элемент = ');
   readln (a[i]);
  end;
 if v=2 then 
  for i:=1 to n do
   begin
    a[i]:= random (999);
    writeln (i,'-й элемент = ',a[i]);
   end;
  writeln;
  writeln('Отсортированный массив :');
  writeln;
 begin
  for k:=n downto 2 do
   begin
    if Not odd(a[k]) then begin
     m:=1;
     for i:=2 to k do 
      if a[i]>a[m] and (Not odd(a[i])) then m:=i; //в этой строке ошибка
      if m<>k then begin
       x:=a[m];
       a[m]:=a[k];
       a[k]:=x;
      end;
    end;
  end;
 end;
 for i:=1 to n do writeln(i,'-й элемент = ', a[i]);
 writeln;
end.
ElektrikMaximka вне форума Ответить с цитированием
Старый 09.10.2010, 22:08   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
if (a[i]>a[m]) and (Not odd(a[i])) then m:=i; //в этой строке ошибка
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Куда отследить куда утекает память? TwiX Общие вопросы Delphi 6 02.03.2010 03:10
куда вставить код программы делфи Резеда Помощь студентам 9 21.12.2009 12:00
Как узнать положение текста, куда планируется его вставить? Diego__ Microsoft Office Word 8 05.12.2009 17:56