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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2012, 21:48   #11
mad_ded
Пользователь
 
Регистрация: 05.01.2012
Сообщений: 28
По умолчанию

а isfound ?
и temp := a[i]
a[i] := a[n]
a[n] := temp
что делает эта строка?
mad_ded вне форума Ответить с цитированием
Старый 17.04.2012, 21:51   #12
mad_ded
Пользователь
 
Регистрация: 05.01.2012
Сообщений: 28
По умолчанию

а есть решение моим способом?
mad_ded вне форума Ответить с цитированием
Старый 17.04.2012, 21:51   #13
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

isFound переменная типа boolean равна true когда мы нашли отрицательный элемент
и false когда не нашли!

ну а это
Цитата:
Код:
temp := a[i]
a[i] := a[n]
a[n] := temp
Обмен местами текущего отрицательного с последним!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 17.04.2012, 21:52   #14
mad_ded
Пользователь
 
Регистрация: 05.01.2012
Сообщений: 28
По умолчанию

так не рабит где ошибка?

program zd_2;
uses crt;
var a:array[1..100] of integer;
n,i,j,p,x,m,k,l,temp:integer;
isfound:boolean;
begin
clrscr;
randomize;
write('kol-vo elementov: ');
readln(n);
write('diapazon: ');
readln(k,l);
for i:=1 to n do
begin
a[i]:=random(l-k+1)+k;
end;
repeat
isfound:=false;
for i:=1 to n do
if a[i] < 0 then
begin
isfound:=true;
temp:=a[i];
a[i]:= a[n];
a[n]:=temp;
dec(n);
break;
end;
until isfound=false;
m:=1;
for i:=2 to n do
if a[i]>a[n] then
n:=i;
for i:=2 to n do
write(a[m]);
readkey;
end.



ошибка видимо в выводе?

Последний раз редактировалось mad_ded; 17.04.2012 в 21:55.
mad_ded вне форума Ответить с цитированием
Старый 17.04.2012, 21:56   #15
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

дэк это не всё
Вам терь надо по возрастанию всё отсортировать это можно сделать линейной сортировкой вот так
Код:
for i := 1 to n -1 do
  for j := i + 1 to n do
    if a[i] > a[j] then
    begin
      a[i] := a[i] xor a[j];
      a[j] := a[i] xor a[j];
      a[i] := a[i] xor a[j];
    end;
и только после этого на вывод!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 17.04.2012, 21:57   #16
mad_ded
Пользователь
 
Регистрация: 05.01.2012
Сообщений: 28
По умолчанию

а что такое xor ?
п.с
спасибо что возитесь тут со мной)
mad_ded вне форума Ответить с цитированием
Старый 17.04.2012, 22:04   #17
mad_ded
Пользователь
 
Регистрация: 05.01.2012
Сообщений: 28
По умолчанию

program zd_2;
uses crt;
var a:array[1..100] of integer;
n,i,j,p,x,m,k,l,temp:integer;
isfound:boolean;
begin
clrscr;
randomize;
write('kol-vo elementov: ');
readln(n);
write('diapazon: ');
readln(k,l);
for i:=1 to n do
begin
a[i]:=random(l-k+1)+k;
end;
repeat
isfound:=false;
for i:=1 to n do
if a[i] < 0 then
begin
isfound:=true;
temp:=a[i];
a[i]:= a[n];
a[n]:=temp;
n:=n-1;
break;
end;
until isfound=false;
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i] > a[j] then
begin
a[i]:=a[i] xor a[j];
a[j]:=a[i] xor a[j];
a[i]:=a[i] xor a[j];
end;
for i:=1 to n do
write(a[m]);
readkey;
end.
mad_ded вне форума Ответить с цитированием
Старый 17.04.2012, 22:07   #18
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

xor -это побитовое исключающее или
таблица истинности для xor
Код:
a   b   a xor b
0   0       0
0   1       1
1   0       1
1   1       1
В данном коде приминяется для обмена местами без доп переменной
работает вот так
допустим a = 3 b = 2
в двоичном коде это
a = 11 b = 10

Код:
первый шаг
a := a xor b; //a = 01 b = 10;
второй шаг
b := a xor b; // a = 01 b = 11;
третий шаг
a := a xor b ; // a = 10 b = 11;
отсюда a = 10 = 2 b = 11 = 3
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 17.04.2012, 22:10   #19
mad_ded
Пользователь
 
Регистрация: 05.01.2012
Сообщений: 28
По умолчанию

аааа ясн спс. а почему может быть вылет с ошибкой?
mad_ded вне форума Ответить с цитированием
Старый 17.04.2012, 22:16   #20
temaps
Форумчанин
 
Регистрация: 15.05.2011
Сообщений: 160
По умолчанию

Тьфу. У меня любой восьмиклассник влёт это решает!
Возиться лень вот тебе решение в лоб без обдумывания:
Код:
...
 for i:=1 to n do
 begin
 a[i]:=random(l-k+1)+k;
 end;
{распечатываем исходный массив}
 for i:=1 to n do
 write(a[i],' ');
 writeln;

 {сортировка}
 for i:=1 to n-1 do
 begin
   for j:=i+1 to n do
   begin
     if a[i]>a[j] then
     begin
       p:=a[i];
       a[i]:=a[j];
       a[j]:=p;
     end;
   end;
 end;

 {удаление одинаковых}
 i:=1;
 while i<n do
 begin
   j:=i+1;
   while a[i]=a[i+1] do
   begin
     for j:=i+1 to n do a[j]:=a[j+1];
     n:=n-1;
     if i=n then break;
   end;
   i:=i+1;
 end;

{распечатываем результат}
 for i:=1 to n do
 write(a[i],' ');
 readkey;
 end.
....
temaps вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Методы сортировки и поиска juliya3 Помощь студентам 1 15.11.2011 00:07
Массивы методы сортировки kop Общие вопросы C/C++ 6 15.06.2011 12:08
Методы сортировки массивов!!! >>arty<< Помощь студентам 2 20.01.2010 18:39
Методы сортировки. Teddy Помощь студентам 1 16.10.2008 19:08