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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.12.2015, 09:39   #1
JohnyJ
 
Регистрация: 29.11.2015
Сообщений: 4
Восклицание Не сортирует элементы в массиве

Код:
const nmax=50;
type mas = array [1..nmax] of integer;
var a,b:mas;
    i,j,n,m,k: byte;
    flag: boolean;
    elem: integer;
    
  procedure sort1(var q : mas);
var  x, y, z : integer;
begin
  for x := 1 to m-1 do
    for y := 1 to m-i do
      if q[x] >= q[y] then
      begin
        z := q[x];
        q[x] := q[y];
        q[y] := y;
      end
end;  

procedure sort2(var q : mas);
var  x, y, z : integer;
begin
  for x := 1 to m do
    for y := m downto x do
      if q[x] >= q[y] then
      begin
        z := q[x];
        q[x] := q[y];
        q[y] := y;
      end
end;  

procedure search(C: mas; n: integer; element: integer);
var
  i1: integer;
begin
  flag := false;
  for i1 := 1 to n do
    if C[i1] = element then
    begin
      flag := true;
      break;
    end;
  if flag then
    writeln('Element ', element, ' is in position ', i1)
  else
    writeln('Element not found');
end;

    
begin
repeat
writeln('Розмірність масивів А і В, не більше ',nmax,', n,m=');
readln(n,m);
until (n in [1..nmax]) and (m in [1..nmax]);
writeln('Масив B');
for i:=1 to n do
    begin
    b[i]:=random(9);
    write(b[i]:3);
    end;
writeln;
sort2(b);
writeln('Відсортований масив B: ');
  for i := 1 to n do
    write(b[i]:3);
   writeln; 
writeln('Масив А');
for i:=1 to m do
    begin
    a[i]:=random(9);
    write(a[i]:3);
    end;
writeln;
 sort1(a);
writeln('Відсортований масив A: ');
  for i := 1 to m do
    write(a[i]:3);
   writeln; 
   
writeln('Елементи масиву А в одному екземплярі, які присутні в масиві В');
for i:=1 to n do
    begin
    k:=0;
    for j:=1 to m do
        if b[i]=a[j] then inc(k);
    if k=1 then write(b[i]:2);
    end;
writeln;
write('Введіть елемент для пошуку у масиві A: ');
  readln(elem);
  search(A, i, elem);
end.
В массиве B просто заменяет все элементы на числа от 1 до 10 по порядку, а А вообще не сортирует.
Помогите пожалуйста

Последний раз редактировалось Stilet; 16.12.2015 в 13:20.
JohnyJ вне форума Ответить с цитированием
Старый 16.12.2015, 10:05   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

первое:
Цитата:
Код:
procedure sort1(var q : mas);
var  x, y, z : integer;
begin
  for x := 1 to m-1 do
    for y := 1 to m-i do
и ещё
ошибка
Цитата:
Код:
  procedure sort1(var q : mas);
var  x, y, z : integer;
begin
  for x := 1 to m-1 do
    for y := 1 to m-i do
      if q[x] >= q[y] then
      begin
        z := q[x];
        q[x] := q[y];
        q[y] := y;
      end
end;  

procedure sort2(var q : mas);
var  x, y, z : integer;
begin
  for x := 1 to m do
    for y := m downto x do
      if q[x] >= q[y] then
      begin
        z := q[x];
        q[x] := q[y];
        q[y] := y;
      end
end;
вместо y должно быть Z


второе.
Массив B у вас от 1 до N
а сортировка у Вас почему-то от 1 до M

третье. если Вы массив передаёте в процедуру сортировки через параметр (что правильно), то почему размерность массива не передаёте?
Не надо использовать глобальные переменные!
Тем более в учебных задачах!

Последний раз редактировалось Serge_Bliznykov; 16.12.2015 в 10:09.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.12.2015, 10:33   #3
JohnyJ
 
Регистрация: 29.11.2015
Сообщений: 4
По умолчанию

Спасибо большое!!)
JohnyJ вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти в массиве повторяющиеся элементы и записать только уникальные элементы в новый массив из первого массива REztor C# (си шарп) 0 20.06.2015 16:55
В массиве необходимо все отрицательные элементы умножить на квадрат его наименьшего элемента, а все неотрицательные элементы на кв dvpvitas Паскаль, Turbo Pascal, PascalABC.NET 3 18.06.2015 05:28
Задача (язык СИ): Написать функцию, которая в данной матрице сортирует в порядке возрастания элементы указанной строки StFroz Помощь студентам 3 11.01.2014 02:49
Программа выбирает в двумерном массиве максимальные и минимальные элементы и сортирует эти элементы в порядке возрастания. Eld Паскаль, Turbo Pascal, PascalABC.NET 11 28.05.2013 01:25
Сформировать новый массив, содержащий повторяющиеся элементы массива A. Элементы в новом массиве не повторяются(Pascal) mad_putin Помощь студентам 0 13.12.2012 00:09