БОЛЬШАЯ НАУЧНАЯ БИБЛИОТЕКА  
рефераты
Добро пожаловать на сайт Большой Научной Библиотеки! рефераты
рефераты
Меню
Главная
Налоги
Начертательная геометрия
Оккультизм и уфология
Педагогика
Полиграфия
Политология
Право
Предпринимательство
Программирование и комп-ры
Радиоэлектроника
Региональная экономика
Режущий инструмент
Реклама и PR
Ресторанно-гостиничный бизнес бытовое обслуживан
Римское право
Русский язык культура речи
РЦБ ценные бумаги
САПР
Сексология
Семейное право
Социология
Страховое право
Строительство архитектура
Таможенное право
Теория государства и права
Технология
Таможенная система
Транспорт
Физика и энергетика
Философия
Финансы деньги и налоги
Физкультура и спорт
Фотография
Химия
Хозяйственное право
Цифровые устройства
Экологическое право
Экология
Экономика
Экономико-математическое моделирование
Экономическая география
Экономическая теория
Эргономика
Этика и эстетика
Сочинения по литературе и русскому языку
Рефераты по теории государства и права
Рефераты по теории организации
Рефераты по теплотехнике
Рефераты по товароведению
Рефераты по трудовому праву
Рефераты по туризму
Рефераты по уголовному праву и процессу
Рефераты по управлению
Рефераты по менеджменту
Рефераты по металлургии
Рефераты по муниципальному праву
Биографии
Рефераты по психологии
Рефераты по риторике
Рефераты по статистике
Рефераты по страхованию
Рефераты по схемотехнике
Рефераты по науке и технике
Рефераты по кулинарии
Рефераты по культурологии
Рефераты по зарубежной литературе
Рефераты по логике
Рефераты по логистике
Рефераты по маркетингу
Рефераты по международному публичному праву
Рефераты по международному частному праву
Рефераты по международным отношениям
Рефераты по культуре и искусству
Рефераты по кредитованию
Рефераты по естествознанию
Рефераты по истории техники
Рефераты по журналистике
Рефераты по зоологии
Рефераты по инвестициям
Рефераты по информатике
Исторические личности
Рефераты по кибернетике
Рефераты по коммуникации и связи
Рефераты по косметологии
Рефераты по криминалистике
Рефераты по криминологии
Новые или неперечисленные
Без категории

Курсовая по информатике

Курсовая по информатике

Министерство путей сообщения Российской Федерации

Дальневосточный государственный университет

путей сообщения

Кафедра ”Информационные

технологии и системы ”

Курсовая работа по информатике

Вариант № 9

Выполнил: ст.

419г. Киршев И. Ф.

Проверил:

Березнев Д. П.

1998

Составить программу определения минимального числа цветов, необходимых для

раскраски карты произвольной конфигурации таким образом, чтобы страны с

одинаковой раскраской не соприкасались. Схему границ карты представить

массивом. На внешних файлах расположить 3 - 4 схемы расположения

стран. Итоги представить в виде текста с указанием выбранных для

каждой из стран цветов. Желательно завершить программу графическим

приложением.

Переменные:

"num" - номер файла, выбираемый пользователем.

"filen" - имя файла.

"g[1..100] - массив, используемый "генератором перебора всех вариантов"

"s:array[i,j]" - массив "связей" показывает, есть ли связь между

странами "i" и "j".

"n" - количество цветов, используемых для раскраски.

"max - максимально возможное количество стран (определяется при

считывании данных).

"s1,s2,k,j,i,a" - переменные, для работы "генератора".

"f, f1" - переменные для работы с файлами.

"function get:integer;"

Функция считывает текущее число, из файла связанного с переменной -

"f" и ищет максимальное число из всех считанных.

Пока строка = '' или символ является:

- цифрой,

- "-",

- "."

считывает символ.

Если символ является:

- цифрой,

- "-",

- ".",

то он добавляется в строку "s".

Строка цифр "s" преобразуется в число. Если "max" меньше числа, то

"max" приравнивается считанному числу.

"function pr:boolean;"

Функция проверяет, можно ли страну - i закрасить цветом - g[i]

(Можно ли углубляться по дереву).

Перебирает все раскрашенные страны (от "1" до "i-1") и сравнивает цвета

каждой из них с цветом страны "i".

"function gen(n:integer):boolean;"

Функция, определяющая возможность раскраски стран "n"-ым кол-вом

цветов.

Каждому элементу массива "g" присваивает значение равное "0". Текущему

номеру рассматриваемой страны "i" задает значение "1".

Повторяет действия:

Повторяет действие:

К номеру цвета рассматриваемой страны прибавить "1" ("g[i]:=g[i]+1;"),

пока нельзя страну "i" раскрасить в цвет "g[i]" или цвет "i"-ой страны не

больше числа "n". Если цвет "i"-ой страны больше числа "n" то:

номеру цвета рассматриваемой

страны приравнивает "0" и

понижает номер рассматриваемой страны на "1".

Иначе повышает номер рассматриваемой страны на "1", пока номер

рассматриваемой страны не равен "1" или номер рассматриваемой страны не

больше количества стран.

Значение функции равно "True", если номер рассматриваемой страны

больше количества стран.

Основная программа:

Вывод сообщений пользователю (см. рабочую программу)

Запрос номера файла ("num").

Выполняются действия в переменную "num" запрашивается символ нажатой

клавиши, если нажата клавиша не от 1 до 3 то выводится сообщение об ошибке

пока не нажата клавиша от 1 до 3.

Формируется имя исходного файла filen:='input'+num+'.txt' .

Сообщение пользователю о выбранном файле.

Считывание данных

Открывается файл "filen" для считывания данных.

"max:=0".

Каждой ячейке массива связей присваивается “ложь”

Пока файл не кончился считываются пара стран, в массив связей с

индексами: [страна с меньшим номером, с большим] присваивается значение

истина.

Закрывается файл "filen".

Блок, определяющий минимальное количество цветов.

Начальное количество цветов = 1.

Повторять действия:

Повысить количество цветов на единицу.

Пока не возможна раскраска всех стран данным количеством цветов.

Запись данных.

Создать файл "Output.txt". Считать в него количество цветов. Считать

в него список раскраски стран. Закрыть файл.

Текст программы

program mag;

uses

crt;

var

num:char;

filen:string;

g:array [1..100]of integer;

s:array[1..100,1..100]of boolean;

max,s1,s2,j,n,i,a:integer;

f:file of char;

f1:text;

{ Функция считывает текущее число,

из файла связанного с пеpеменной - f. }

function get:integer;

var

k,c:integer;

s:string;

ch:char;

begin

s:=''; k:=50;

while ((s='')or(k=43)or(k=45)or((k>47)and(k47)and(k1 then

for j:=1 to i-1 do

if s[j,i] then

if g[i]=g[j] then pr:=false;

end;

function gen(n:integer):boolean;

begin

for j:=1 to max do

g[j]:=0;

i:=1;

repeat

repeat

g[i]:=g[i]+1;

until pr or (g[i]>n);

if (g[i]>n) then

begin

g[i]:=0; i:=i-1;

end

else i:=i+1;

until (i=1)or(i>max);

gen:=i>max;

end;

begin

clrscr;

writeln(' Haжмите цифру, указывающую номер файла');

writeln(' с которого будут счтываться данные. ');

writeln('');

for i:=1 to 3 do

writeln(' ',i,' - файл input',i,'.txt');

{Запpос номеpа файла.}

repeat

num:=readkey;

if not((num='1')or(num='2')or(num='3')) then

writeln(' Вы в чем-то ошиблись');

until (num='1')or(num='2')or(num='3');

filen:='input'+num+'.txt';

writeln('');

writeln(' Выбран файл - ',filen);

writeln('');

{Считывание данных}

Assign(f,filen); Reset(f);

max:=0;

for s1:=1 to 100 do

for s2:=1 to 100 do

s[s1,s2]:=false;

while not eof(f) do

begin

s1:=get; s2:=get;

if s1>s2 then s[s2,s1]:=true else s[s1,s2]:=true;

end;

Close(f);

n:=1;

repeat

n:=n+1;

until gen(n);

{ Вывод данных в файл - 'output.txt'.}

Assign(f1,'output.txt'); Rewrite(f1);

writeln(f1,' Число стран = ',max);

writeln(f1,'');

writeln(f1,'N cтран = ',n);

for j:=1 to max do

writeln(f1,'cтрана - ',j,', цвет - ',g[j],' ');

Close(f1);

end.

Koнец.

Данные из Input1.txt:

1 2 1 7 2 7 2 3 2 8 3 4 3 9 3 8 4 9 4 5 5 6 5 9 5 13

6 13 6 14 6 15 7 8 7 11 8 9 8 10 8 11 9 10 9 12 9 13

10 11 10 12 10 14 11 15 12 14 13 14 14 15

Результат в output.txt:

Число стран = 15

N стран = 4

страна - 1, цвет - 1

страна - 2, цвет - 2

страна - 3, цвет - 1

страна - 4, цвет - 2

страна - 5, цвет - 1

страна - 6, цвет - 2

страна - 7, цвет - 3

страна - 8, цвет - 4

страна - 9, цвет - 3

страна - 10, цвет - 1

страна - 11, цвет - 2

страна - 12, цвет - 2

страна - 13, цвет - 4

страна - 14, цвет - 3

страна - 15, цвет - 1





17.06.2012
Большое обновление Большой Научной Библиотеки  рефераты
12.06.2012
Конкурс в самом разгаре не пропустите Новости  рефераты
08.06.2012
Мы проводим опрос, а также небольшой конкурс  рефераты
05.06.2012
Сена дизайна и структуры сайта научной библиотеки  рефераты
04.06.2012
Переезд на новый хостинг  рефераты
30.05.2012
Работа над улучшением структуры сайта научной библиотеки  рефераты
27.05.2012
Работа над новым дизайном сайта библиотеки  рефераты

рефераты
©2011