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

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

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

> Сортировка вставками, Программно реализовать алгоритм сортировки простыми вставками.
Nelson1992
сообщение 16.09.2010 17:52
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 15
Пол: Мужской

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


Здравствуйте...помогите пожалуйста разобраться с задачей...


Программно реализовать алгоритм сортировки простыми вставками. Каждая запись будет в качестве ключа содержать текстовое выражение, а в качестве информативной части некоторое число.

Тестовый набор записей перед сортировкой необходимо загрузить в память из файла. Файл с тестовым набором необходимо создать. Затем при необходимости изменить у него кодировку (в зависимости от того, в какой ОС Вы осуществляете программную реализацию). После этого для каждой записи берем в качестве ключа слово из исходного файла, а для информативной части его порядковый номер в исходном тексте. Для преобразования текстового файла в набор записей также необходимо выполнить программную реализацию, которая к тому же должна предусматривать создания определенного количества записей.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Гость
сообщение 29.09.2010 20:28
Сообщение #2


Гость






Вот есть програмка...она сортирует вставками...но в ней есть много лишнего...можете помочь?Мне надо убрать оттуда счётчик времени...мне не надо чтобы оно выводило сколько времени выполнялась программа,и убрать надо чтобы не выводило сколько раз встречалось слово...чтобы оно не считало это...и также оно считает после абзаца заново...а надо чтобы всё вместе...


program files_program;
uses crt,dos;
type string10=string[10];
link_type=^list_type;
list_type=record value:string10;
count:integer;
link:link_type;
end;
longint_link=^longint;
procedure files_names_query(var read_file,write_file,error:string);
var f:text;
begin
error:='';
write('Считываемый файл: ');
readln(read_file);
assign(f,read_file);
{$I-}
reset(f);
if (ioresult=0)
then
begin
close(f);
write('Файл для записи: ');
readln(write_file);
end
else
begin
error:='Ошибка: файл не существует.';
end;
{$I+}
end;
procedure put_into_list(s:string; var root:pointer);
var element,prev_element,new_element:link_type;
searched:boolean;
begin
if (root=nil)
then
begin
new(element);
root:=element;
element^.value:=s;
element^.count:=1;
element^.link:=nil;
end
else
begin
searched:=FALSE;
element:=root;
prev_element:=nil;
while ((element<>nil)and(not searched)) do
begin
if (element^.value=s)
then
begin
element^.count:=element^.count+1;
searched:=TRUE;
end;
if (prev_element<>nil)
then
begin
if ((prev_element^.value<s)and(element^.value>s))
then
begin
new(new_element);
new_element^.value:=s;
new_element^.count:=1;
new_element^.link:=prev_element^.link;
prev_element^.link:=new_element;
searched:=TRUE;
end;
end
else
begin
if (element^.value>s)
then
begin
new(new_element);
new_element^.value:=s;
new_element^.count:=1;
new_element^.link:=element;
root:=new_element;
searched:=TRUE;
end;
end;
prev_element:=element;
element:=element^.link;
end;
if (not searched)
then
begin
new(new_element);
new_element^.value:=s;
new_element^.count:=1;
new_element^.link:=prev_element^.link;
prev_element^.link:=new_element;
end;
end;
end;
procedure reading(read_file:string; var root:pointer; var seconds,seconds100:word);
var simbol:char;
f:text;
s:string;
hour,minutes:word;
begin
gettime(hour,minutes,seconds,seconds100);
s:='';
assign(f,read_file);
reset(f);
while (not eof(f)) do
begin
while (not eoln(f)) do
begin
read(f,simbol);
if (simbol<>' ')
then
begin
s:=s+simbol;
end
else
begin
if (s<>'')
then
put_into_list(s,root);
s:='';
end;
end;
if (s<>'')
then
put_into_list(s,root);
readln(f,s);
end;
close(f);
end;
procedure writing(root:pointer; write_file:string; begin_seconds,begin_seconds100:word);
var f:text;
element:link_type;
s,count,dseconds_string,dseconds100_string,time:string;
hour,minutes,seconds,seconds100,dseconds,dseconds100:word;
begin
assign(f,write_file);
rewrite(f);
element:=root;
while (element<>nil) do
begin
s:=element^.value;
str(element^.count,count);
s:=s+'-'+count;
writeln(f,s);
element:=element^.link;
end;
gettime(hour,minutes,seconds,seconds100);
if (seconds<begin_seconds)
then
seconds:=seconds+60;
if (seconds100<begin_seconds100)
then
seconds100:=seconds100+100;
dseconds:=seconds-begin_seconds;
dseconds100:=seconds100-begin_seconds100;
str(dseconds,dseconds_string);
str(dseconds100,dseconds100_string);
time:=dseconds_string+'.'+dseconds100_string;
writeln(f,time);
close(f);
end;
var read_file,write_file,error:string;
root:pointer;
seconds,seconds100:word;
begin
root:=nil;
if (paramstr(1)<>''){если есть параметры командной строки}
then{то}
begin
read_file:=paramstr(1);{считываемый файл - первый параметр}
write_file:=paramstr(2);{выходной файл - второй параметр}
reading(read_file,root,seconds,seconds100);{считывание из файла и сортировка слов}
writing(root,write_file,seconds,seconds100);{запись в файл}
end
else{если нет, то}
begin
files_names_query(read_file,write_file,error);{запрос имени файлов через пользовательский инерфейс}
if (error='')
then
begin
reading(read_file,root,seconds,seconds100);{считывание из файла и сортировка слов}
writing(root,write_file,seconds,seconds100);{запись в файл}
writeln('Готово!');
writeln('Нажмите Enter для продолжения.');
readln;
end
else
begin
writeln(error);
writeln('Нажмите Enter для продолжения.');
readln;
end;
end;
end.
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Nelson1992   Сортировка вставками   16.09.2010 17:52
Nelson1992   Я вот пытался что-то сделать...но не работает... ...   16.09.2010 18:18
volvo   Во-первых, то, что ты сюда вывалил, даже не компил...   16.09.2010 18:55
Nelson1992   Ну вот я и прошу мне помочь...потому,что не знаю к...   16.09.2010 19:13
Rian   пытался сделать? :no1: http://delphid.dax.ru/www/...   16.09.2010 22:15
Nelson1992   я возможно не правильно выразился...я не сам писал...   16.09.2010 22:19
Rian   чел такой пошаговый мануал еще поискать надо, там ...   16.09.2010 22:22
Nelson1992   За ссылку спасибо...дело в том что я не там всё эт...   16.09.2010 22:24
Rian   За ссылку спасибо...дело в том что я не там всё э...   16.09.2010 22:28
Nelson1992   хм...вроде бы работает,..спасибо)   16.09.2010 22:56
Rian   хм...что-то он не работает...и не выводит результ...   16.09.2010 23:02
Nelson1992   ааа...всё...разобрался...работает...но оно сортиру...   16.09.2010 23:11
Rian   загружать в массив по одному слову... делить строк...   16.09.2010 23:15
Nelson1992   Спасибо...буду пробовать...   16.09.2010 23:19
-111-   Скажите а как эту программу переделать так чтобы б...   28.09.2010 17:38
volvo   Подумать, чем отличается метод "пузырька...   28.09.2010 18:16
Lapp   А вообще, проще не переделывать "эту программ...   29.09.2010 4:50
Гость   Вот есть програмка...она сортирует вставками...но ...   29.09.2010 20:28
Гость   Вот я вроде бы счётчик времени убрал...но теперь о...   29.09.2010 20:44
Lapp   Вот я вроде бы счётчик времени убрал...но теперь о...   30.09.2010 3:14


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

 



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