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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.06.2011, 12:36   #1
Namyola
Пользователь
 
Регистрация: 18.05.2011
Сообщений: 11
Сообщение Сортировка массива.Найдите ошибку.

Привет,всем)

Дано:Написать программу, в которой вводится с клавиатуры и упорядочивается по алфавиту список студентов вашей
группы.

Вот примерно записал программу,выводит ошибку.правильно ли записано условие?как будет выглядеть правильная форма?

uses crt;
type stud=record
fam: string;
name:string;
end;
const
n=5;
var i: integer;
s: array [1..n] of stud;
buf:stud;
begin
clrscr;
for i:=1 to n do
with s[i]do
begin
write ('Vvedite familia= ' );
readln(fam);
write('Name= ');
readln(name);
end;

for i:=1 to n do
if s[i].fam>s[i+1].fam
then begin
buf:=s[i];
s[i]:=s[i+1];
s[i+1]:=buf;
end;

for i:=1 to n do
Writeln(s[i].fam,' ',s[i].name);
readln;end.
Namyola вне форума Ответить с цитированием
Старый 06.06.2011, 12:48   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Дык написано же в чем ошибка. s[i+1] в последнем проходе будет больше n и выйдет за пределы массива. И такой алгоритм не всегда всё отсортирует.
Как-то так наверно.
Код:
for j := 1 to n - 1 do
    for i := n - 1 downto 1 do
      if s[i].fam > s[i + 1].fam
      then begin
        buf := s[i];
        s[i] := s[i + 1];
        s[i + 1] := buf;
      end;
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 06.06.2011, 13:30   #3
Namyola
Пользователь
 
Регистрация: 18.05.2011
Сообщений: 11
По умолчанию

теперь ясн)пасибба=)
Namyola вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найдите ошибку vladxxl Общие вопросы C/C++ 0 26.04.2011 17:01
найдите ошибку Славик__077 Общие вопросы C/C++ 10 31.01.2011 15:15
Найдите ошибку Peperovich Общие вопросы C/C++ 15 12.06.2010 20:50
Найдите ошибку MaJlbBuHa Паскаль, Turbo Pascal, PascalABC.NET 2 20.10.2009 23:26
Найдите ошибку! geniy JavaScript, Ajax 4 04.12.2007 16:22