Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 01.07.2011
Сообщений: 24

Укажите на ошибку

16.07.2011, 12:41. Показов 1278. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Уважаемые программисты!
Прошу вас указать где я сделал ошибку.
Задание такое: выполнить сортировку массива двумя методами (сортировка Шелла и сортировка слиянием). Построить графики зависимости количества сравнений и перестановок и длины массива. Подтвердить математическое определение сложности сортировки графическим представлением с использованием процедур модуля GRAPH.
Я пока только в самом начале этого задания. Составил сортировку методом Шелла, но в результате после введения процедуры сортировки, почему-то, выдает исходный массив (т.е. не сортирует), хотя количество перестановок - ненулевое значение. Помогите пожалуйста. Покажите где ошибка.
И как здесь можно включить счетчик количества сравнений?
Заранее благодарен.
Вот программа:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
Program Sort;
uses crt;
type t=array[1..1000] of integer;
var
  a1,a2,a3:t;
  s,c1,c2,c3:integer;
  n1,n2,n3:integer;
procedure Sort_Shell(b:array of integer;var n,c:integer);
var i,j,k,step,l,x:integer;
begin
 l:=n-1;
 step:=l div 2;
 while step>0 do
 begin
  for i:=1 to l-step do
   begin
    j:=i;
    while (j>=1) and (b[j]>b[j+step]) do
     begin
      x:=b[j];
      b[j]:=b[j+step];
      b[j+step]:=x;
      dec(j);inc(c);
     end
    end;
  step:=step div 2;
 end;
end;
begin
clrscr;
n1:=10; n2:=20; n3:=50;
randomize;
writeln('Начальный массив при n= ',n1);
 for s:=1 to n1 do
  begin
   a1[s]:=random(100);
   write(a1[s],' ');
  end;
 writeln;
 Sort_Shell(a1,n1,c1);
 writeln('Отсортированный массив при n= ',n1);
 for s:=1 to n1 do write(a1[s],' ');
  writeln;
  writeln('Количество перестановок равно ',c1);
  writeln;
  writeln('Начальный массив при n= ',n2);
 for s:=1 to n2 do
  begin
   a2[s]:=random(100);
   write(a2[s],' ');
  end;
 writeln;
   Sort_Shell(a2,n2,c2);
   writeln('Отсортированный массив при n= ',n2);
   for s:=1 to n2 do write(a2[s],' ');
   writeln;
   writeln('Количество перестановок равно ',c2);
   writeln;
 writeln('Начальный массив при n= ',n3);
 for s:=1 to n3 do
  begin
   a3[s]:=random(100);
   write(a3[s],' ');
  end;
 writeln;
   Sort_Shell(a3,n3,c3);
   writeln('Отсортированный массив при n= ',n3);
   for s:=1 to n3 do write(a3[s],' ');
   writeln;
   writeln('Количество перестановок равно ',c3);
end.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.07.2011, 12:41
Ответы с готовыми решениями:

Укажите ошибку в программе
k:=abc(sqr(x)+(exp(3)*ln(y))-2*z)+sqr(z)\3*sqr(x)-abc(sqrt(abc(sqr(sin(x))+y))); Unit1.pas(42): Invalid typecast

Укажите на ошибку друзья, а то весь мозг уже съел себе.
Всем доброго времени суток, я учусь на программиста дали задачку на дом написать самому сортировку одномерного массива, с использование...

укажите на мою ошибку!
задание: Составить процедуру,вычисляющую значение true, если элементы главной диагонали квадратной матрицы расположены в порядке...

3
Фрилансер
Эксперт С++
 Аватар для Dekio
5845 / 1226 / 499
Регистрация: 23.11.2010
Сообщений: 3,373
Записей в блоге: 1
16.07.2011, 13:00
Вы передаете массив в качестве параметра-значения, потому после выполнения процедуры результат останется прежним.
Нужно передавать в качестве параметра-переменной.
Pascal
1
procedure Sort_Shell(b:array of integer;var n,c:integer);
на
Pascal
1
procedure Sort_Shell(var b: t;  n,c:integer);
1
0 / 0 / 0
Регистрация: 01.07.2011
Сообщений: 24
16.07.2011, 13:20  [ТС]
Спасибо.
Теперь сортирует все, кроме последнего элемента массива и не считает количество перестановок. Можно это как-нибудь исправить?
И как можно ввести счетчик количества сравнений?
0
 Аватар для bigar
53 / 53 / 36
Регистрация: 18.02.2011
Сообщений: 146
16.07.2011, 14:20
Цитата Сообщение от Денис16 Посмотреть сообщение
Спасибо.
Теперь сортирует все, кроме последнего элемента массива и не считает количество перестановок. Можно это как-нибудь исправить?
И как можно ввести счетчик количества сравнений?
чтобы считало с последним элементом -> замените строчку
Pascal
1
l:=n-1;
на
Pascal
1
l:=n;
или же l замените на n
количество перестановок у меня считает)))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.07.2011, 14:20
Помогаю со студенческими работами здесь

Укажите на ошибку, проверьте программу
Задача - имеется предмет с габаритами p1 p2 p3 и ящик с габаритами l1 l2 l3 , узнать можно ли поместить данный предмет в данный ящик. Как я...

внутри все..укажите ошибку
где поменять код для удовлетворения условия задачи Дано натуральное число n. Найти сумму цифровых корней чисел от 1 до n, кратных 7 ...

Укажите ошибку!
В строке удвоить все символы ‘&’. Под вставкой символа n в строку после к-го элемента понимается смещение всех элементов, начиная с...

Укажите на ошибку)
var a = prompt('Введите число'); var i,s,b; +a == parseInt(a); for (i=1 ;i<11;i++) {s++; b=a*s; document.writeln(a+'*'+i+'='+ b...

Укажите на ошибку
procedure Tform1.BB2Url(memotext: string); var link1,link2,link3:integer; link,text: string; begin if...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru