Алгоритмы, реализованные в процессе решения задачи — КиберПедия 

Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...

Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...

Алгоритмы, реализованные в процессе решения задачи

2020-03-31 170
Алгоритмы, реализованные в процессе решения задачи 0.00 из 5.00 0 оценок
Заказать работу

 

Рассмотрим алгоритм поиска длиннейшей подпоследовательности одинаковых чисел, встречающейся некоторый раз внутри основной последовательности. Этот алгоритм был реализован в файле ALG.CPP в функции searchindex_search(posled*,int).

Для определения длиннейшей подпоследовательности одинаковых символов достаточно одного цикла, проходящего через всю основную последовательность. Сравнение происходит после того, как определены размеры группы одинаковых чисел, и новый результат либо записывается вместо нового с указанием координаты его нахождения, либо обнуляется. Для того, чтобы найти следующее вхождение этой последовательности, достаточно ввести дополнительный параметр, определяющий, на какой раз после череды совпадений допускается записать координату начала подпоследовательности. В случае обнаружения более длинной группы этот счетчик обнуляется. Алгоритм выбора подпунктов меню (файл MENU.CPP, функции menu(); start(); options();).

Событие нажатия кнопки на клавиатуре отлавливается функцией getch(), код клавиши записывается в переменную. Для определения значимости кода используется переключатель switch, отлавливающий требуемые значения. Для сохранения позиции выбора меню используются переменные класса static. В зависимости от нажатой клавиши они либо изменяют свое значение, либо остаются неизменными. После нажатия клавиши enter (код 13) в зависимости от значения переменной выбора через switch запускается та или иная функция, как правило с выходом из текущей при помощи оператора return.


 

Заключение

 

По результатам проделанной работы можно сделать следующие выводы:

Проведен сравнительный анализ языков высокого уровня Паскаль и Си и сделан вывод, что для реализации курсового проекта в соответствии с заданием выгоднее использовать язык Си.

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

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

Создана программа поиска подпоследовательностей, имеющая следующие функции:

·   возможность сохранять последовательность в файлы;

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

программирование последовательность си паскаль


 

Приложение

 

Листинг.H

#include <graphics.h>

#include <stdio.h>

#include <conio.h>

#include <dos.h>

#include <string.h>

#include <stdlib.h>menu();*gpath="C:\\BORLANDC\\Progs\\kurs\\open.txt";*gpath_1="C:\\BORLANDC\\Progs\\kurs\\about.txt";*gpath_2="C:\\BORLANDC\\Progs\\kurs\\save.txt";=10;_so=0;{size;*element;

};search {index;size;

};

#include "C:\BORLANDC\Progs\kurs\alg.cpp"

#include "C:\BORLANDC\Progs\kurs\menu.cpp".CPP_new(intn,posled*p) {>size=n;>element=new int[n];

}_delete(posled*p) {p->element;

}_rand(posled*p) {(inti=0;i<p->size;i++) {

    p->element[i]=random(randmax);

}

}_search(posled*p,intnum) {=1,len=1,indmax=-1;=1;(inti=1;i<=p->size;i++) {

    if(p->element[i]==p->element[i-1]&&i<p->size) len++;

    else {

        if(len>lenmax) {

                       lenmax=len;

                       if(num==1) indmax=i-len;

                       elseindmax=-1;

                       nummax=1;

                       }

              else if(len==lenmax) {

                       nummax++;

                       if(nummax==num) indmax=i-len;

                       }

              len=1;

              }

}={0};.index=indmax;.size=lenmax;;

}_save(char*path,posled*p) {

FILE*f;

f=fopen(path,"w+");(!f) return;(f,"%d ",p->size);(inti=0;i<p->size;i++) fprintf(f,"%d ",p->element[i]);(f);

}_open(char*path,posled*p) {

FILE*f;=0,i=0;

f=fopen(path,"r");(!f) {

    posled_new(0,p);

    return;

}(f,"%d ",&buf);_new(buf,p);(!feof(f)) {=0;(f,"%d ",&buf);>element[i++]=buf;

}(f);

}.CPP_note() {(1,15);(180,50,460,430);(1,0);(inti=0;i<3;i++) fillellipse(i*80+240,75,10,10);(1,2);(i=0;i<3;i++) {

    bar(i*80+236,73,i*80+238,40);

    bar(i*80+242,73,i*80+244,40);

}

}start() {_set=0;work=0;(start_set<0) start_set=1;if(start_set>1) start_set=0;();_note();(0,0,2); setcolor(4);(320,120,"Create with:");(1);(320,200,"File");(320,280,"Generator");(9);(210,140,430,140);(240,215+start_set*80,400,215+start_set*80);p={0};*posl=&p;key=getch();(key) {

    case 27: menu(); return;

    case 80: start_set++; break;

    case 72: start_set--; break;

    case 13:

              work=1;

              switch(start_set) {

                       case 0: posl_open(gpath,posl); break;

                       case 1: posled_new(48,posl); posled_rand(posl); break;

              }

              break;

}(work) {

    draw_note();

    charbuf[15]={0};

    int j=1;

    search m={0};

    if(!posl->size) {

              outtextxy(320,220,"Cannot open file");

              getch(); menu(); return; }

    for(inti=0;i<posl->size;i++) {

              char b1[5]={0};

              sprintf(b1,"%d",posl->element[i]);

              strcat(buf,b1);

              outtextxy(220+(i%6)*40,130+(i/6)*30,buf);

              buf[0]=0;

    }

    while(m.index>=0) {

              m=index_search(posl,j++);

              if(m.index==-1) break;

              for(int k=0;k<m.size;k++) {

                       int l=m.index+k;

                       rectangle(201+(l%6)*40,116+(l/6)*30,

                                          239+(l%6)*40,144+(l/6)*30);

                       }

              }

    sprintf(buf,"Size: %d",m.size);

    outtextxy(320,125+(i+1)*5,buf);

    if(bool_so) posl_save(gpath_2,posl);

    elseposl_save(gpath,posl);

    getch(); menu();

}();

}options() {_note();_sel=0;(opt_sel<0) opt_sel=1; else if(opt_sel>1) opt_sel=0;(0,0,3); setcolor(4);(320,120,"OPTIONS");[20]={0};(0,0,1); setcolor(1);(buf,"Max rand num: %d",randmax); outtextxy(320,200,buf);(buf,"Similar i/o files:%s",(bool_so?" yes":" no"));(320,280,buf);(280,215+opt_sel*80,360,215+opt_sel*80);key=getch();=0;(key) {

    case 27: menu(); return;

    case 75: dir--; break;

    case 77: dir++; break;

    case 72: opt_sel--; break;

    case 80: opt_sel++; break; }(opt_sel) {

    case 0: if(randmax>20) dir*=10; randmax+=dir; break;

    case 1: if(dir) bool_so=1-bool_so; break;

}(randmax<1) randmax=1; else if(randmax>100) randmax=99;();

}about() {_note();(0,0,2); setcolor(4);(320,100,"ABOUT");*f=fopen(gpath_1,"r+");(0,0,1);(230,130,410,130);(f) {

    charbuf[30]={0};

    inti=0;

    while(!feof(f)) {

              buf[0]=0;

              fgets(buf,30,f);

              buf[strlen(buf)-1]=0;

              outtextxy(320,160+i*30,buf);

              if(strlen(buf)) i++;

              }

    line(230,160+i*30,410,160+i*30);

    }{

    char error[50]={0};

    sprintf(error,"Cannot open \"%s\"",gpath_1);

    outtextxy(320,160,error);

    }();(f);();

}menu() {_set=0;(menu_set<0) menu_set=3;if(menu_set>3) menu_set=0;();_note();(CENTER_TEXT,CENTER_TEXT);(0,0,3);(4);(320,120,"MENU");(0,0,2);(1);(320,200,"START");(320,250,"OPTIONS");(320,300,"ABOUT");(320,350,"EXIT");(9);(210,140,430,140);(240,215+menu_set*50,400,215+menu_set*50);key=getch();(key) {

    case 27: exit(0); break;

    case 13: switch(menu_set) {

              case 0: start(); return;

              case 1: options(); return;

              case 2: about(); return;

              case 3: exit(0);

     } break;

    case 72: menu_set--; break;

    case 80: menu_set++; break; }();

}


Поделиться с друзьями:

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.015 с.