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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.06.2011, 16:54   #1
nameless21
 
Регистрация: 22.06.2011
Сообщений: 3
Восклицание Решить используя очередь

Помогите плз решить задачу:
Типизированный файл содержит список людей. О каждом человеке представлена следующая информация: Город, Фамилия, Имя, Отчество, номер телефона. За один просмотр и без использования дополнительных файлов напечатать элементы файла F в следующем порядке:Общим списком. Порядок в этом списке определяется первой буквой фамилии.
Буду благодарен за код(либо фрагменты) с комментариями либо текстовое описание алгоритма.
nameless21 вне форума Ответить с цитированием
Старый 25.06.2011, 20:56   #2
rubius2008
Форумчанин
 
Регистрация: 19.03.2010
Сообщений: 409
По умолчанию

Если сами что-то пробовали писать, выкладывайте, будем разбираться. Иначе, как мне кажется, с такой задачей вам во фриланс или пишите в асю.
Есть вопросы, пишите в ЛС.
rubius2008 вне форума Ответить с цитированием
Старый 27.06.2011, 00:31   #3
nameless21
 
Регистрация: 22.06.2011
Сообщений: 3
По умолчанию

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

Код:
uses Crt;

Type
TNode = ^PNode;				{ Указатель на элемент списка			}
PNode = record				{ Тип элемента списка				}
Next: TNode;				{ Указатель на следующий элемент списка	}
data: string;			{ Значение элемента списка			}
end;

Const
F: TNode = nil;				{ Указатель на первый элемент списка		}

var
{ элемента списка					}
I: Integer;
Q: TNode;
px,dx: TNode{Хранение адресов переменных, между которыми мы записываем следующий элемент списка}
h:file of string;
filename:string;
S,V:string;
begin
ClrScr;
write('name file:');
readln(filename);
assign(h,filename);
reset(h);
{ Ввод данных списка в строку S								}
while not eof(h) do begin
    Readln(h,S);
	V := Copy(S,Pos(' ',S)+1 ,1);{Копируем первую букву фамилии текущей строки}
	New(Q);
	Q^.data := S;
	Q^.next :=nil;
	if F=nil{Если список пуст, то вставляем первый элемент}
	    then
		  F := Q
		else
		{Если не пуст просматриваем его пока не найдем место для строки}
		begin
		  dx:=F;px:=F;
		  {Просматриваем список до конца, либо пока не найдем фамилию начинающуюся с буквы c большим кодом}
		  while (dx<>Nil) and (V>Copy( dx^.data, Pos(' ',dx^.data)+1 ,1 )) do
		  begin
		    px:=dx;
			dx:=dx^.Next;
		  end;
		  if dx=nil
		  then{Пройден весь список}
		    px^.Next:=Q{Элемент добавляется в конец списка}
		  else{Пройден не весь список}
		  begin
		    Q^.Next:=dx;
			if dx=F
			then
			  F:=Q{Вставляем в начало списка}
			else
			  px^.Next:=Q;;{Вставляем внутрь списка}
		  end;
		 end;
end;
		    
		  
		  

{ Вывод построенного списка на экран							}
WriteLn('Spisok:');
I := 0;					{ Номер текущего элемента списка		}
Q := F;					{ Указатель на первый элемент списка		}
while Q <> nil do begin			{ Пройти по каждому элементу списка		}
I := I+1;
WriteLn(I:2,': ', Q^.data);	{ Печатать значение текущего элемента		}
Q := Q^.Next;				{ Перейти к следующему элементу списка	}
end;
writeln;


{ Освобождение памяти, занятой списком							}
while F <> nil do begin			{ Пройти по каждому элементу списка		}
Q := F;					{ Запомнить адрес удаляемого элемента		}
F := F^.Next;				{ Запомнить адрес следующего элемента		}
Dispose(Q);				{ Освободить память удаляемого элемента	}
end; 
writeln;
ReadKey;					{ Пауза для просмотра результата			}
end.



___________
То, что код решения выложили - молодец!
Но, на будущее, на данном форуме правилами определено, что нужно оформлять
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)

Модератор.

Последний раз редактировалось Serge_Bliznykov; 27.06.2011 в 08:24.
nameless21 вне форума Ответить с цитированием
Старый 27.06.2011, 00:33   #4
nameless21
 
Регистрация: 22.06.2011
Сообщений: 3
По умолчанию

Вот, это девушке делал у нее приняли на отлично. Я просто на c++ пишу так что с паскалем пришлось разбираться
nameless21 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Pascal. решить задачу используя цикл for и оператор безусловного перехода goto Knubbe Помощь студентам 8 18.12.2009 03:08
Можно ли решить такую задачу не используя условный оператор? Armorer Помощь студентам 5 15.10.2009 12:53
Решить уравнение : используя схему горнера решить с меньшим количеством умножений! Rusl92 Помощь студентам 1 06.09.2009 23:24
нужно решить задачу используя указатели С++ Nastusha Помощь студентам 4 08.02.2009 22:45