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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.11.2009, 16:06   #1
Бармалей
Пользователь
 
Регистрация: 18.11.2009
Сообщений: 17
Стрелка Метод быстрой сортировки Хоора Pascal

Сформировать массив записей (не менее 5), содержащий данные по студентам в следующем виде: «Фамилия Имя Группа ГР RS», где ГР – год рождения, RS – средний рейтинг (данные можно считывать из предварительно набранного текстового файла). Осуществить сортировку массива по группе методом "быстрой" сортировки Хоора.
Исходный текстовый файл:
Сидорова Елена ЭК-09-1 1992 75.8
Петров Павел ЭК-09-1 1992 88.2
Иванов Алексей ЭК-09-1 1992 61.8
Зосимова Елена ЭК-09-2 1992 55.0
Иванов Иван ЭК-09-2 1991 95.4
Код:
program laba2;
Type student=record
	  fam, name, group: string[20];
	  year: integer;
	  sr: real;
	  end;
ar=array[1..10] of student;
var a, b: ar;
stud:student;
amax, i, k: integer;
{Procedura vvoda dannih iz faila}
Procedure input_from_file(name: string; var a: ar);
var st:string; kod: integer; f:text;
begin
  assign(f, name);
  reset(f);
  amax:=0;
  while not eof(f) do
	  begin
		 readln(f, st);
		 with stud do
			 begin
				fam:=copy(st, 1, pos('', st)-1);
				delete(st, 1, pos('', st));
				name:=copy(st, 1, pos('', st)-1);
				delete(st, 1, pos('', st));
				group:=copy(st, 1, pos('', st)-1);
				delete(st, 1, pos('', st));
				val(copy(st, 1, pos('', st)-1), year, kod);
				delete(st, 1, pos('', st));
				val(st, sr, kod)
			 end;
		 if amax<10
		 then amax:=amax+1;
		 a[amax]:=stud
	  end;
  close(f)
end;
{Vspomogatelnaya procedura vivoda dannih v fail}
procedure output_to_file(name, header:string; a:ar);
var f:text; i:integer;
begin
  assign(f, name);
  {$i-} append(f); {$i+}
  if ioresult<>0 then rewrite(f);
  writeln(f, header);
  writeln(f,'|----------------------------------');
  writeln(f,'|Familiya | Imya | Gruppa | Gr | SR |');
  writeln(f,'|----------------------------------');
  for i:=1 to amax do with a[i] do
  writeln(f,'|',fam:11,'|',name:9,'|',group:10,'|',year:6,'|',sr:6:1,'|');
  writeln(f,'|----------------------------------');
  writeln(f);
  close(f)
end;
{Metod bistroy sortirovki Hoora}
procedure sort_hoor(var m:ar);
procedure sort(l,r:integer);
var i, j: integer; x:student;
begin
  i:=l; j:=r; x:=m[(l+r) div 2];
  while i<=j do
	  begin
		 while m[i].group<x.group do i:=i+1;
		 while m[j].group>x.group do j:=j-1;
		 if i<=j then
			 begin
			 obmen(m[i],m[j]);
			 i:=i+1; j:=j-1;
			 end;
		 end;
	  if l<j then sort(l, j);
	  if i<r then sort(i, r);
  end;
begin
  sort(l, amax);
  end;
{Glavnaya programma}
begin
  input_from_file('data.txt',a);
  output_to_file('result.txt','Ishodniy massiv',a);
  b:=a; sort_hoor(b);
  output_to_file('result.txt','Posle bistroy sortirovki Hoora:',b);
  writeln('OK');
  end.
Программу писал с помощью методички, красным выделил ошибку. Я пытался заменить несуществующий оператор obmen (взятый из методички) на: y:=m[i]; m[i]:=m[j]; m[j]:=y; - вот только где бы я не прописывал y всегда пишется несоответствие типов (Type mismatch)
Источник нашей мудрости - наш опыт. Источник нашего опыта - наша глупость (Саша Гитри)

Последний раз редактировалось Stilet; 18.11.2009 в 16:21.
Бармалей вне форума Ответить с цитированием
Старый 18.11.2009, 16:17   #2
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

а у у тебя какого типа был?
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Старый 18.11.2009, 16:32   #3
Бармалей
Пользователь
 
Регистрация: 18.11.2009
Сообщений: 17
По умолчанию

У меня y был типа ar (задавался в начале), потому что в него идёт значение m[i], ещё я пробовал делать real.
Источник нашей мудрости - наш опыт. Источник нашего опыта - наша глупость (Саша Гитри)
Бармалей вне форума Ответить с цитированием
Старый 18.11.2009, 16:36   #4
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

а должен быть Student
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Старый 18.11.2009, 16:48   #5
Бармалей
Пользователь
 
Регистрация: 18.11.2009
Сообщений: 17
По умолчанию

Исправил, теперь в отрывке:
begin
sort(l, amax);
end;
вылетает "неизвестный идентификатор" (выделяется l)
Источник нашей мудрости - наш опыт. Источник нашего опыта - наша глупость (Саша Гитри)
Бармалей вне форума Ответить с цитированием
Старый 18.11.2009, 16:49   #6
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

Цитата:
вылетает "неизвестный идентификатор" (выделяется l)
так обьяви его
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Старый 18.11.2009, 18:16   #7
Бармалей
Пользователь
 
Регистрация: 18.11.2009
Сообщений: 17
По умолчанию

Я объявил l в начале программы, там же где amax. Теперь ошибки нет, но создаваемый текстовый документ Result.txt не содержит ни каких данных кроме названий столбцов
Источник нашей мудрости - наш опыт. Источник нашего опыта - наша глупость (Саша Гитри)
Бармалей вне форума Ответить с цитированием
Старый 18.11.2009, 18:49   #8
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

Цитата:
Я объявил l
а значение ты ей присвоил?
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Старый 18.11.2009, 21:21   #9
Бармалей
Пользователь
 
Регистрация: 18.11.2009
Сообщений: 17
По умолчанию

Цитата:
Сообщение от ОДИНОЧЕСТВО В СЕТИ Посмотреть сообщение
а значение ты ей присвоил?
Нет. И честно говоря даже и не догадываюсь какое значение нужно присвоить
Источник нашей мудрости - наш опыт. Источник нашего опыта - наша глупость (Саша Гитри)
Бармалей вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка двумерного массива по столбцам методом быстрой сортировки( Хоара) и пирамидальной. tworc22 Помощь студентам 3 28.10.2011 23:05
Пузырьковый метод сортировки массивов Lunex.08 Общие вопросы C/C++ 4 07.10.2010 16:00
Метод сортировки пузырьком(помогите обнаружить ошибки) Ker_33rus Общие вопросы C/C++ 5 04.11.2009 15:34
Метод сортировки Шелла SVadiks Помощь студентам 2 03.11.2009 20:17
Задача на Метод сортировки Smotritel89 Общие вопросы C/C++ 4 19.12.2008 18:17