Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Вариант 9 Выполнил- ст

Работа добавлена на сайт samzan.net: 2016-03-30

Поможем написать учебную работу

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

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 18.5.2024

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

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

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

                                              Кафедра Информационные технологии и системы  

 

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

Вариант № 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(k<58)))and(not eof(f)) do

   begin

    read(f,ch);   k:=ord(ch);

    if (k=43)or(k=45)or((k>47)and(k<58)) then s:=s+ch;

   end;

  val(s,c,k);

  if max< c then max:=c;

  get:=c;

 end;

{    Функция проверяет, можно ли страну - i

                закрасить цветом - g[i].            }

function pr:boolean;

var   j:integer;

begin

 pr:=true;

 if i>1 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




1. Детали машин подъемнотранспортные машины и механизмы ДЕТАЛИ МАШИН Лабораторные рабо
2. Реферат- Причины неэффективного руководства спортивной командой
3. Ну здравствуй сладкаяон сильно улыбнулсямоя сахарная девочказаниматься будем не здесьсадись в машинупо
4. ВЭД
5. Основные задачи гигиены
6. Баланс, рахунки і подвійний запис як основні методичні прийоми бухгалтерського обліку
7. Ученые писатели публицисты деятели культуры и искусства на протяжении всего этого времени делали попытки
8. рефератов по истории
9. Карри Блейк Урок 8 Слово Божьеэто надежный завет
10. О рекламе установлены требования к рекламе о проведении стимулирующих мероприятий
11. Тормозные пневмосистемы тракторов
12. достойных и значительных
13. Контрольная работа- Сучасні психологічні теорії особистості
14. Цитология эукариотических водорослей
15. Порядок расторжения трудового договора по инициативе нанимателя
16. варианты событий
17. АЛТАЙСКИЙ ГОСУДАРСТВЕННЫЙ МЕДИЦИНСКИЙ УНИВЕРСИТЕТ ГБОУ ВПО АГМУ МЗ РОССИИ Кафедра экономики и менед
18. Шестов Лев
19. Розвиток у молодших школярів уявлень про народне мистецтво (на прикладі творчості Катерини Білокур)
20. Русская Атлантида Трагедия великих строек