close

Вход

Забыли?

вход по аккаунту

?

курсовой проект

код для вставкиСкачать
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО
ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
"КАЗАНСКИЙ (ПРИВОЛЖСКИЙ) ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ"
Институт вычислительной математики и
информационных технологий
Курсовой проект по информатике
Выполнила:
Студентка 2-ого курса в\о Института ВМ и ИТ
Орлова А.М.
Казань 2011
Задача 1.
Поиск путей в схеме дорог.
Под схемой дорог понимается совокупность пунктов x1, x2, ... , xn и дорог между некоторыми из них. Каждой дороге, обозначаемой (xi, xj), соответствует число (xi, xj), называемое расстоянием между пунктами xi и xj. Путем в схеме дорог между пунктами X и Y называется цепочка дорог Px,y = {(x, a1), (a1, a2), ... , (ak-1, y)}, в которой дорога из схемы встречается не более одного раза. Длиною пути p считается число k, а расстояние пути - величина ( Px,y) = (ai, ai+1), если x = a0 и y = ak . Считается, что если между пунктами X, Y, Z имеются дороги, то
Задание. Составить программу, которая в заданной схеме дорог находит путь требуемого вида.
Исходные данные
1.Схема дорог.
Расстояния между пунктами выбираются самостоятельно.
II. Задачи по выбору путей.
По заданным (произвольно) двум пунктам X и Y (названия пунктов вводятся в программу) найти путь Px,y минимальной длины и определить его расстояние.
Алгоритм решения задачи. Отнесем пункт X к ярусу 0. На i-ом шаге алгоритма всякий пункт a относится к ярусу i, если он еще не отнесен ни к какому ярусу и имеется дорога, связывающая его с пунктом яруса i-1; алгоритм прекращается, как только пункт становится отнесенным к некоторому ярусу. Ярус пункта y и будет требуемой длиной пути. Используя ярусы пунктов, найти затем некоторый путь и его расстояние.
Решение:
(Pascal)
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils;
const n=23; m=25;
var
a:array [1..n,1..n] of integer;
b:array [1..n] of integer;
c:array [1..m,1..2] of integer;
i,j,x,y,fl,k:integer;
begin
c[1,1]:=1; c[1,2]:=2;
c[2,1]:=2; c[2,2]:=3;
c[3,1]:=3; c[3,2]:=4;
c[4,1]:=3; c[4,2]:=5;
c[5,1]:=3; c[5,2]:=6;
c[6,1]:=6; c[6,2]:=7;
c[7,1]:=7; c[7,2]:=8;
c[8,1]:=7; c[8,2]:=9;
c[9,1]:=9; c[9,2]:=10;
c[10,1]:=9; c[10,2]:=12;
c[11,1]:=11; c[11,2]:=12;
c[12,1]:=9; c[12,2]:=11;
c[13,1]:=10; c[13,2]:=13;
c[14,1]:=13; c[14,2]:=14;
c[15,1]:=14; c[15,2]:=16;
c[16,1]:=7; c[16,2]:=16;
c[17,1]:=15; c[17,2]:=16;
c[18,1]:=16; c[18,2]:=17;
c[19,1]:=16; c[19,2]:=20;
c[20,1]:=16; c[20,2]:=23;
c[21,1]:=17; c[21,2]:=18;
c[22,1]:=18; c[22,2]:=19;
c[23,1]:=20; c[23,2]:=21;
c[24,1]:=21; c[24,2]:=22;
c[25,1]:=22; c[25,2]:=23;
writeln('vvedite goroda');
read (x,y);
fl:=0;
for i:=1 to n do
begin
if i=x then
b[i]:=0
else b[i]:=-1;
for j:=1 to n do
a[i,j]:=0;
end;
for i:= 1 to m do
begin
a[c[i,1], c[i,2]]:=1;
a[c[i,2], c[i,1]]:=1;
end;
k:=0;
while (fl=0) and (k<n) do
begin
for i:=1 to n do
begin
if b[i]=k then
for j:=1 to n do
if (a[i,j]>0) and (b[j]=-1) then
begin
b[j]:=k+1;
if j=y then fl:=1;
end
end;
k:=k+1;
for i:=1 to n do
write(b[i],' ');
writeln;
end;
writeln('iz goroda ',x,' v gorod ',y,' doedem za ',b[y],' shagov');
readln; readln;
end.
Задача 2.
1.Описать класс Set "Множество". Примерная структура класса:
* Закрытые поля: n - количество элементов в базовом множестве, vec - массив, задающий характеристический вектор подмножества базового множества.
* Открытые методы класса:
− конструктор Set с параметрами, определяющими данное множество (создается множество);
− добавить элемент в множество;
− удалить элемент из множества;
− проверка принадлежности элемента множеству;
− проверка множества на пустоту;
2. С использованием описанного класса составить программу, выводящую в текстовый файл все простые числа, меньшие заданного числа k (k вводится с клавиатуры). В качестве алгоритма решения данной задачи использовать алгоритм "Решето Эратосфена".
Возможно добавление других методов в описание класса, если в этом возникает необходимость.
Решение:
(Pascal)
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils,
Unit1 in 'Unit1.pas';
VAR n: integer;
R: Resheto;
begin writeln('Vvedite razmer');
readln(n);
R := Resheto.MakeArr(n);
R.Fill;
R.Show;
unit Unit1;
INTERFACE
type Resheto= CLASS
PRIVATE
Arr:array of integer;
Size:integer;
PUBLIC
CONSTRUCTOR MakeArr(n:integer) {Создать пустой стек};
PROCEDURE Show;
PROCEDURE Fill;
END;
IMPLEMENTATION
CONSTRUCTOR Resheto.MakeArr(n:integer);
var i:integer;
BEGIN
Size:=n;
setlength(Arr,Size);
for i:=1 to Size do
Arr[i]:=1;
END;
PROCEDURE Resheto.Show;
VAR i:integer;
BEGIN for i:=1 to Size do
if Arr[i]=1 then
write(i,' ');
END;
PROCEDURE Resheto.Fill; VAR i,j:integer;
BEGIN
for i:=2 to Size do
IF Arr[i]=1 then
for j:=i+1 to Size do
IF j mod i = 0 then
Arr[j]:=0;
end;
end.
Автор
m-super
Документ
Категория
Без категории
Просмотров
105
Размер файла
49 Кб
Теги
проект, курсовой
1/--страниц
Пожаловаться на содержимое документа