IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Сортировка вставками..., ...символов...не работает
Jill
сообщение 19.09.2005 21:41
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 105
Пол: Женский
Реальное имя: Юлия

Репутация: -  0  +


сама тестовая (на числах) прога:

uses Crt,Dos;
const ARRAYSIZE=10;
type arrayType=array[1..ARRAYSIZE] of integer;
var
A:arrayType;
i:integer;
c:integer;
n:integer;

procedure InsertionSort(Size:integer;var theArray:arrayType);
var
B:array[1..2*ArraySize]of integer;
mn,mx,c,d:word;
begin
B[Arraysize]:=A[1];
mn:=arraysize;
mx:=arraysize;
for i:=2 to ArraySize do
begin
if A[i]<B[ArraySize] then
begin
for d:=mn to ArraySize do
begin
if (B[d]<=A[i])and(mn<>Arraysize) then
B[d-1]:=B[d]
else begin
B[d-1]:=A[i];
break;
end;
end;
mn:=mn-1;
end
else
begin
for d:=mx downto ArraySize do
begin
if (B[d]>=A[i])and(mx<>ArraySize)then
B[d+1]:=B[d]
else begin
B[d+1]:=A[i];
break;
end;
end;
mx:=mx+1;
end;
end;
c:=0;
for i:=mn to mx do
begin
c:=c+1;
A[c]:=B[i];
end;
end;{InsertionSort}

procedure Vector(SIZE,MAX:integer;var theArray:arrayType);
var i:integer;
begin
randomize;
for i:=1 to SIZE do
theArray[i]:=random(MAX);
end;{Vector}

procedure PrintVector(SIZE,MAX:integer;var theArray:arrayType);
var i:integer;
begin
for i:=1 to SIZE do
Write(theArray[i],' ');
end;{Vector}


begin
ClrScr;
Write('N=');
Readln(n);
Vector(n,ARRAYSIZE,a);
PrintVector(n,ARRAYSIZE,a);
Writeln;
InsertionSort(n,a);
PrintVector(n,ARRAYSIZE,a); readln;

end.


работает при n=10 (по условию надо n<=50) и цифрах от 1 до 10...
если я правильно понимаю:
- при сортировке символов сортируются их коды - символы выводятся только на экран
- коды - от 0 до 127 (???)

почему же ее глючит при попытке вывести на экран символы (пробелы выдает, системник пищать начинает) или при изменении количества элементов (n)???

подскажите, ПЛЗ!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 21:18
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"