'C,C++ 코드'에 해당되는 글 8건

  1. 2019.01.02 간단한 iterator 적용 문제
  2. 2018.12.29 일반템 스타포스 시뮬
  3. 2018.12.25 single linked list
  4. 2018.12.23 하노이 탑 코드
  5. 2018.12.22 인라인 코드 테스트 2
  6. 2018.12.22 진자 운동 코드
  7. 2018.12.16 퀵 정렬 함수
  8. 2018.12.16 문자열 알고리즘 시간 측정 코드
#include <iostream>
#include <iterator>
#include <algorithm>
#include <string>
#include <cctype>
using namespace std;

template<typename T, size_t size>
void printarr(T (&a)[size]){
	cout<<"배열 내용 역순 출력\n";
	copy(rbegin(a), rend(a), ostream_iterator<T>(cout, "\n"));
	cout<<"출력 끝\n";
}

int main() {
	// your code goes here
	string job[]={"wArrior","magIcian","arcHEr"};
	printarr(job);
	
	transform( begin(job), end(job), ostream_iterator<string>(cout, "\n"), 
	[](string s){/*transform(begin(s), end(s), begin(s),toupper);*/
	for(auto& x : s)if(islower(x)) x='*';
	return s;} );
	
	printarr(job);
	
	transform( begin(job), end(job), ostream_iterator<string>(cout, "\n"), 
	[](string s){transform(begin(s), end(s), begin(s),[](char x)->char{return toupper(x);});
	return s;} );
	//toupper의 반환형이 int이므로 char로 바꾸기 위해 람다함수 이용
	
	printarr(job);
	
	return 0;
}


'C,C++ 코드' 카테고리의 다른 글

일반템 스타포스 시뮬  (0) 2018.12.29
single linked list  (0) 2018.12.25
하노이 탑 코드  (0) 2018.12.23
인라인 코드 테스트  (2) 2018.12.22
진자 운동 코드  (0) 2018.12.22
Posted by Semi Developer
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <math.h>

#define PRECISION 2.82e14      /* 2**48, rounded up */
double drand48(void)
{
   double x = 0;
   double denom = RAND_MAX + 1.;
   double need;
   for (need = PRECISION; need > 1; need /= (RAND_MAX + 1.))
   {
      x += rand() / denom;
      denom *= RAND_MAX + 1.;
   }
   return x;
}
class item
{
private:
   int quest;
   int now;
   int count;
   int goal;
   int star;
   unsigned long long *sum;
   int *fail;
   int *dest;
   int *chance;
   int temp;
   int starcat;
   int sale;
   int nodest;
   int lev;
   int limit;
   int initial;

public:
   ~item();
   void reset(int);
   void inputdata(int);
   void starforce();
   void showresult();

};

void printcm(unsigned long long i)
{
   char B[20];
   sprintf(B, "%llu", i);
   int count = 1;
   int len = strlen(B);
   while (count <= len)
   {
      printf("%c", B[count - 1]);
      if (count == len)
         break;
      if ((len - count) % 3 == 0)
         printf(",");
      count++;
   }
}

void printstar(int star, int limit)
{
   int i;
   for (i = 0; i < limit; i++)
   {
      if (i < star)
         printf("★");
      else
         printf("☆");
      if ((i + 1) % 5 == 0)
         printf(" ");
   }
   printf("\n");
}

int meso(int star, int lev)
{
   int grademeso = 0;
   double temp = 0;
   if (star >= 15) {
      temp = pow(star + 1, 2.7) / 200.0;
   }
   else if (star >= 10) {
      temp = pow(star + 1, 2.7) / 400.0;
   }
   else {
      temp = (star + 1) / 25.0;
   }
   grademeso = floor((1000 + pow(lev, 3) * temp) / 100.0 + 0.5) * 100;

   return grademeso;
}

unsigned long long aver(unsigned long long *array, int count)
{
   unsigned long long aver = 0, sum = 0;
   for (int i = 0; i < count; i++)
      sum = sum + array[i];
   aver = sum / count;
   return aver;
}

double aver(int *array, int count)
{
   double aver = 0, sum = 0;
   for (int i = 0; i < count; i++)
      sum = sum + array[i];
   aver = sum / count;
   return aver;
}

unsigned long long stddev(unsigned long long *array, unsigned long long aver, int count)
{
   unsigned long long sum = 0, stddev = 0;
   for (int i = 0; i < count; i++)
      sum = sum + (array[i] - aver) * (array[i] - aver);
   stddev = sqrt(sum / (count - 1));
   return stddev;
}

void item::starforce()
{
   int pmprob[25][2] = { { 95,0 },{ 90,0 },{ 85,0 },{ 85,0 },{ 80,0 },{ 75,0 },{ 70,0 },{ 65,0 },{ 60,0 },{ 55,0 },{ 45,0 },{ 35,0 },{ 30,1 },{ 30,2 },{ 30,2 },{ 30,3 },{ 30,3 },{ 30,3 },{ 30,3 },{ 30,3 },{ 30,10 },{ 30,10 },{ 3,20 },{ 2,30 },{ 1,40 } };
   //확률을 백분율 수치로 저장
   int Temp = 100;
   double TEMP = 1;
   if (starcat == 1 || starcat == 4500)
      starcat = 4.5 * 1000; //백분율->십만분율 변환
   else
      starcat = 0;
   int sucprob = 1000 * pmprob[star][0] + starcat; //백분율->십만분율 변환
   int destprob = (100000 - sucprob) * (1000 * pmprob[star][1]) / 100000; //파괴확률=조건부 확률, 백분율->십만분율 변환

   if (nodest == 1)
      Temp = 12;
   else if (nodest == 2)
      Temp = 15;
   if (sale == 1) //30퍼 세일
      TEMP = 0.7;

   if (temp == -2) //찬스타임
   {
      chance[now]++;
      star++;
      temp = 0;
      sum[now] = sum[now] + TEMP * meso(star, lev);
      return;
   }
   if (sale == 2 && star < 20 && star % 5 == 0) //100퍼 이벤
   {
      star++;
      temp = 0;
      sum[now] = sum[now] + TEMP * meso(star, lev);
      return;
   }
   if (star >= Temp && star <= 16) //파괴방지
   {
      sum[now] = sum[now] + (1 + TEMP) * meso(star, lev);
      destprob = 0;
   }
   else //일반적인 경우
      sum[now] = sum[now] + TEMP * meso(star, lev);

   int count, i;

   int grade[100000];
   for (count = 0; count < 100000; count++)
   {
      if (count < sucprob)
         grade[count] = 1;
      else if (count < sucprob + destprob)
         grade[count] = -1;
      else
         grade[count] = 0;
   }

   // i = rand() % 100000;
   i = drand48() * 100000;

   if (grade[i] == 1) //성공
   {
      star++;
      temp = 0;
   }
   else if (grade[i] == 0) //실패
   {
      if (star > 5 && star % 5)
      {
         star--;
         temp--;
      }
      fail[now]++;
   }
   else if (grade[i] == -1) //파괴
   {
      star = 12;
      printf("DESTROYED\n");
      dest[now]++;
      temp = 0;
   }
}

item::~item()
{
   delete[]sum;
   delete[]dest;
   delete[]chance;
   delete[]fail;
}

void item::reset(int exit)
{
   if (exit != 1)
   {
      lev = 0;
      star = 0;
      goal = 0;
      starcat = 0;
      sale = 0;
   }
   fail[now] = 0;
   dest[now] = 0;
   chance[now] = 0;
   sum[now] = 0;
   temp = 0;
}

void item::inputdata(int exit)
{
   int num = 0;
   now = 0;
   if (exit != 1)
   {
      quest = 0;
      count = 1;
   }
   while (exit != 1)
   {
      printf("단순 강화는 1, n회 강화 후 통계는 2를 누르세요.\n");
      scanf("%d", &quest);
      while (getchar() != '\n');
      if (quest == 1 || quest == 2)
         break;
      printf("사용 목적을 다시 입력해주세요.\n");
   }
   if (quest == 2)
   {
      while (exit != 1)
      {
         printf("통계의 표본 수 : ");
         scanf("%d", &count);
         while (getchar() != '\n');
         if (count >= 2)
            break;
         printf("표본 수를 다시 입력해주세요.\n");
      }
   }
   chance = new int[count];
   fail = new int[count];
   dest = new int[count];
   sum = new unsigned long long[count];
   reset(exit);
   while (exit != 1)
   {
      printf("강화 아이템 레벨 제한 : ");
      scanf("%d", &lev);
      while (getchar() != '\n');
      if (lev >= 98 && lev <= 200)
         break;
      printf("레벨 제한을 다시 입력해주세요.\n");
   }
   if (lev >= 138)
      limit = 25;
   else if (lev >= 128)
      limit = 20;
   else if (lev >= 118)
      limit = 15;
   else if (lev >= 108)
      limit = 10;
   else if (lev >= 98)
      limit = 8;
   while (exit != 1)
   {
      printf("처음 강화 수치 : ");
      scanf("%d", &initial);
      while (getchar() != '\n');
      if (initial >= 0 && initial <= limit)
         break;
      printf("강화수치를 다시 입력해주세요.\n");
   }
   while (exit != 1)
   {
      printf("목표 강화 수치 : ");
      scanf("%d", &goal);
      while (getchar() != '\n');
      if (goal >= initial && goal <= limit)
         break;
      printf("강화수치를 다시 입력해주세요.\n");
   }
   if (exit != 1 && (goal > initial))
   {
      printf("스타캐치 전부 성공은 1, 전부 해제는 아무 키나 누르기\n");
      scanf("%d", &starcat);
      while (getchar() != '\n');
      printf
      ("강화 비용 30퍼 할인 이벤트 적용은 1\n5, 10, 15성 성공 확률 100퍼센트 이벤트 적용은 2\n스타포스 이벤트 미적용은 아무 키나 누르기\n");
      scanf("%d", &sale);
      while (getchar() != '\n');
      if (goal > 12)
      {
         printf
         ("12~17 파방은 1\n15~17 파방은 2\n파방 미적용은 아무 키나 누르기\n");
         scanf("%d", &nodest);
         while (getchar() != '\n');
      }
   }
   while (now < count)
   {
      star = initial;
      while (star < goal)
      {
         printf("강화 %d회", num);
         if (temp == -2)
            printf(", CHANCE TIME!");
         else if (sale == 2 && star > 0 && star < 20 && star % 5 == 0)
            printf(", 강화 성공 확률 100퍼센트!");
         printf("\n");
         printstar(star, limit);
         num++;
         starforce();
      }
      if (star == goal)
      {
         printf("강화 %d회, %d성까지 강화완료\n", num, goal);
         printstar(star, limit);
         printf("<표본 %d번째 완료>\n", now + 1);
      }
      now++;
      if (quest == 2 && now != count)
      {
         reset(1);
         num = 0;
      }
   }
}

void item::showresult()
{
   if (quest == 1)
   {
      printf("소비 메소 : ");
      printcm(sum[0]);
      printf("메소\n");
      printf("찬스 타임 : %d회\n", chance[0]);
      printf("실패 횟수 : %d회\n", fail[0]);
      printf("파괴 횟수 : %d회\n", dest[0]);
   }
   else if (quest == 2)
   {
      printf("소비 메소(평균) : ");
      printcm(aver(sum, count));
      printf("메소\n");
      printf("소비 메소(표준 편차) : ");
      printcm(stddev(sum, aver(sum, count), count));
      printf("메소\n");
      printf("찬스 타임(평균) : %f회\n", aver(chance, count));
      printf("실패 횟수(평균) : %f회\n", aver(fail, count));
      printf("파괴 횟수(평균) : %f회\n", aver(dest, count));
   }
}

int main()
{
   int exit = 2;
   item ITEM;
   printf("인소야닷컴 슈리튬\n");
   printf("98제~200제 아이템 스타포스 시뮬\n");
   srand(time(NULL));
   while (1)
   {
      // system("title 일반템 스타포스 시뮬레이션");
      // system("color 0F");
      ITEM.inputdata(exit);
      ITEM.showresult();
      exit = 2;
      printf
      ("설정 초기화+재시작은 0, 동일 설정+재시작은 1, 종료하려면 아무 키나 눌러주세요\n");
      scanf("%d", &exit);
      while (getchar() != '\n');
      if (exit == 0 || exit == 1)
         continue;
      else
         break;
   }
   system("pause");
   return 0;
}

'C,C++ 코드' 카테고리의 다른 글

간단한 iterator 적용 문제  (0) 2019.01.02
single linked list  (0) 2018.12.25
하노이 탑 코드  (0) 2018.12.23
인라인 코드 테스트  (2) 2018.12.22
진자 운동 코드  (0) 2018.12.22
Posted by Semi Developer

2018. 12. 25. 09:31 C,C++ 코드

single linked list

간단하게 구현한 리스트

#include <iostream>
using namespace std;

struct node{
	int data;
	node* next;
};

int main() {
	// your code goes here
	node n1={-1, nullptr};
	
	node** chaser=&n1.next;
	for(int i=0;i<11;i++){
		*chaser=new node{i, nullptr};
		chaser=&((*chaser)->next);
	}
	cout<<"리스트 내용물\n";
	for(node* temp=&n1;temp;temp=temp->next){
		cout<<temp->data<<'\n';
	}
	
	int n=5;
	cout<<"n1로부터 "<<n<<"개 뒤 노드\n";
	node* ptr=&n1;
	for(;ptr && n>0;ptr=ptr->next, n--);
	if(n>0)
		cout<<"탐색 불가\n";
	else
		cout<<ptr->data<<'\n';
	
	cout<<"할당 해제 과정\n";
	for(node* temp=n1.next, *temp2;temp;temp=temp2){
		temp2=temp->next;
		cout<<temp->data<<'\n';
		delete temp;
	}
	return 0;
}

'C,C++ 코드' 카테고리의 다른 글

간단한 iterator 적용 문제  (0) 2019.01.02
일반템 스타포스 시뮬  (0) 2018.12.29
하노이 탑 코드  (0) 2018.12.23
인라인 코드 테스트  (2) 2018.12.22
진자 운동 코드  (0) 2018.12.22
Posted by Semi Developer

2018. 12. 23. 22:47 C,C++ 코드

하노이 탑 코드

하노이 탑 코드 //재귀 함수와 비재귀 함수 버전
#include <iostream>
#include <stack>
using namespace std;

void move(int no, int x=1, int y=3){
	if(no>1)
		move(no-1,x,6-x-y);
	cout<<"원반["<<no<<"]를(을) "<<(char)('A'+x-1)<<"기둥에서 "<<(char)('A'+y-1)<<"기둥으로 옮김.\n";
	if(no>1)
		move(no-1,6-x-y,y);
}

void move1(int no, int x=1, int y=3){
	stack<int> s;
	while(1){
		while(no>1){
			s.push(no),s.push(x),s.push(y);
			no=no-1,y=6-x-y;
		}
		cout<<"원반["<<no<<"]를(을) "<<(char)('A'+x-1)<<"기둥에서 "<<(char)('A'+y-1)<<"기둥으로 옮김.\n";
		if(s.size()){
			y=s.top(),s.pop();
			x=s.top(),s.pop();
			no=s.top(),s.pop();
			
			cout<<"원반["<<no<<"]를(을) "<<(char)('A'+x-1)<<"기둥에서 "<<(char)('A'+y-1)<<"기둥으로 옮김.\n";
			
			no=no-1,x=6-x-y;
		}
		else
			break;
	}
}

int main() {
	// your code goes here
	cout<<"재귀 버전\n";
	move(4);
	cout<<"비재귀 버전\n";
	move1(4);
	return 0;
}


'C,C++ 코드' 카테고리의 다른 글

일반템 스타포스 시뮬  (0) 2018.12.29
single linked list  (0) 2018.12.25
인라인 코드 테스트  (2) 2018.12.22
진자 운동 코드  (0) 2018.12.22
퀵 정렬 함수  (0) 2018.12.16
Posted by Semi Developer

Info text inline code testing " int main(void){} " maybe it works



Block Code:

<script>
    alert('block code');
</script>

<!--테스트 용도-->


'C,C++ 코드' 카테고리의 다른 글

single linked list  (0) 2018.12.25
하노이 탑 코드  (0) 2018.12.23
진자 운동 코드  (0) 2018.12.22
퀵 정렬 함수  (0) 2018.12.16
문자열 알고리즘 시간 측정 코드  (0) 2018.12.16
Posted by Semi Developer

2018. 12. 22. 00:05 C,C++ 코드

진자 운동 코드

#include <cmath>
//M_PI 상수 포함
using namespace std;
void printpos(const double maxangle, const int length){
	//maxangle은 진자운동의 진폭, length는 줄의 길이
	//줄의 시작점은 (0, 0)으로 가정
	//오른쪽 정점부터 시작 가정
	double Angle=-maxangle;
	double VAngle=0;
	for(int i=0;i<100;i++){
		cout<<i+1<<". 현재 각도(라디안) : "<<2*M_PI*Angle<<", 구의 좌표(x, y) : ("<<
		-sin(2*M_PI*Angle)*length<<", "<<cos(2*M_PI*Angle*length)<<")\n";
		if(abs(VAngle*2*M_PI) <= 0.01){
			cout<<"진자 운동의 정점입니다.\n";
			VAngle = 0;
		}
		cout<<"현재 각속도 : "<<VAngle*2*M_PI<<'\n';
		VAngle-=1.5/length*sin(2*M_PI*Angle);
		Angle+=VAngle;
	}
}
int main() {
	// your code goes here
	double ma;
	int len;
	cin>>ma>>len;
	printpos(ma, len);
	return 0;
}

'C,C++ 코드' 카테고리의 다른 글

single linked list  (0) 2018.12.25
하노이 탑 코드  (0) 2018.12.23
인라인 코드 테스트  (2) 2018.12.22
퀵 정렬 함수  (0) 2018.12.16
문자열 알고리즘 시간 측정 코드  (0) 2018.12.16
Posted by Semi Developer

2018. 12. 16. 23:51 C,C++ 코드

퀵 정렬 함수

#include <iostream>
#include <cstring>
using namespace std;

template<typename T, size_t s>
inline size_t arsize(T (&a)[s]){return s;}

void quick_sort(int* arr, int left, int right) {
	
    //단순 삽입 정렬 이용해 처음, 가운데, 끝 요소를 오름차순 정렬함
    int tmp[3]={left, (left+right)/2, right};
    for(int i=1;i<3;i++){
    	int t=arr[tmp[i]], j=i;
    	for(; j>0 && arr[tmp[j-1]]>t; j--)
    		arr[tmp[j]]=arr[tmp[j-1]];
    	arr[tmp[j]]=t;
    }
    //가운데 요소와 끝에서 2번째 요소 교환
    swap(arr[tmp[1]], arr[right-1]);
    //이후 정렬 범위는 축소되고 끝에서 2번째 값을 피벗으로 설정
    int pl=left+1, pr=right-2, pivot=arr[right-1];
    //이유는 위에서 수행한 세요소의 정렬때문에 a[left]는 피벗 이하
    //a[right-1], a[right]는 피벗 이상의 값인게 확정됨
    
    while (pl<= pr) {
        while (arr[pl] < pivot)
            pl++;
        while (arr[pr] > pivot)
            pr--;
        if (pl<= pr)
        {
            swap(arr[pl], arr[pr]);
            pl++;
            pr--;
        }
    }

    if (left < pr)
        quick_sort(arr, left, pr);

    if (pl < right)
        quick_sort(arr, pl, right);
}

int main() {
	// your code goes here
	int a[]={1,5,85,8,0,-10,32};
	cout<<"정렬 전\n";
	for(int i=0;i<arsize(a);i++)
		cout<<a[i]<<' ';
	cout<<'\n';
	
	quick_sort(a, 0, arsize(a)-1);
	
	cout<<"정렬 후\n";
	for(int i=0;i<arsize(a);i++)
		cout<<a[i]<<' ';
	cout<<'\n';	
	return 0;
}


'C,C++ 코드' 카테고리의 다른 글

single linked list  (0) 2018.12.25
하노이 탑 코드  (0) 2018.12.23
인라인 코드 테스트  (2) 2018.12.22
진자 운동 코드  (0) 2018.12.22
문자열 알고리즘 시간 측정 코드  (0) 2018.12.16
Posted by Semi Developer
#include <iostream>
#include <cstring>
#include <chrono>
#include <climits>

using namespace std;
//namespace chrono = std::chrono;

//시간 측정용 클래스입니다.
class Timer
{
public:
    void start() //타이머를 가동합니다.
    {
        start_point = chrono::system_clock::now();
    }

    void stop() //타이머를 중단합니다.
    {
        stop_point = chrono::system_clock::now();
    }

    void clear() //값을 초기화합니다.
    {
        start_point = chrono::time_point<chrono::system_clock>::min();
        stop_point = chrono::time_point<chrono::system_clock>::min();
    }

public:
    template<class seconds_t>
    long long get_time() const //측정 메서드의 템플릿입니다.
    {
        return chrono::duration_cast<seconds_t>(stop_point - start_point).count();
    }

    long long get_nano() const //나노세컨드 단위입니다.
    {
        return get_time<chrono::nanoseconds>();
    }

    long long get_micro() const //마이크로세컨드 단위입니다.
    {
        return get_time<chrono::microseconds>();
    }

    long long get_milli() const //밀리세컨드 단위입니다.
    {
        return get_time<chrono::milliseconds>();
    }

    long long get_seconds() const //세컨드 단위입니다.
    {
        return get_time<chrono::seconds>();
    }

    long long get_minutes() const //분 단위입니다.
    {
        return get_time<chrono::minutes>();
    }

    long long get_hours() const //시간 단위입니다.
    {
        return get_time<chrono::hours>();
    }

private:
    chrono::time_point<chrono::system_clock> start_point; //시작지점입니다.
    chrono::time_point<chrono::system_clock> stop_point; //중단지점입니다.

public:
    Timer() = default;
    Timer(const Timer&) = default;
    Timer(Timer&&) = default;
    Timer& operator= (const Timer&) = default;
    Timer& operator= (Timer&&) = default;
    virtual ~Timer() = default;

};

const char* mystrstr (const char * str1, const char * str2)
{
    char *cp = (char *) str1;
    char *s1, *s2;

    if ( !*str2 ) // *str2 != '\0' 
        return((char *)str1);

    while (*cp) // cp != NULL
    {
        s1 = cp;
        s2 = (char *) str2;


        while ( *s1 && *s2 && !(*s1-*s2) ) // (*s1 != '\0') && (*s2 != '\0') && (*s1 == *s2)
                s1++, s2++;

        if (!*s2) // *s2 == '\0'
                return(cp);

        cp++;
    }
    return(NULL);
}

const char* bf_match(const char* txt, const char* pat){
	int pt=0, pp=0;

	while(txt[pt] && pat[pp]){
		if(txt[pt]==pat[pp])
			pt++, pp++;
		else{
			pt=pt-pp+1;
			pp=0;
		}
	}

	if(!pat[pp])
		return txt+(pt-pp);

	return NULL;
}

const char* kmp_match(const char* txt, const char* pat){
	int pt=1, pp=0, skip[1024];

	skip[pt]=0;

	while(pat[pt]){
		if(pat[pt]==pat[pp])
			skip[++pt]=++pp;
		else if(pp==0)
			skip[++pt]=pp;
		else
			pp=skip[pp];
	}

	pt=pp=0;

	while(txt[pt] && pat[pp]){
		if(txt[pt]==pat[pp])
			pt++, pp++;
		else if(pp==0)
			pt++;
		else
			pp=skip[pp];
	}

	if(!pat[pp])
		return txt+(pt-pp);

	return NULL;

}

const char* bm_match(const char* txt, const char* pat){
	int pt, pp, txt_len=strlen(txt), pat_len=strlen(pat);

	int skip[UCHAR_MAX + 1];

	for(pt=0; pt<=UCHAR_MAX; pt++)
		skip[pt]=pat_len;

	for(pt=0; pt<pat_len-1; pt++)
		skip[pat[pt]]=pat_len-pt-1;

		

	while(pt<txt_len){
		pp=pat_len-1;
		while(txt[pt]==pat[pp]){
			if(!pp)
				return txt+pt;

			pp--;
			pt--;

		}
		pt+=(skip[txt[pt]] > pat_len-pp) ? skip[txt[pt]] : pat_len-pp;
	}

	return NULL;
}

int main() {
	// your code goes here
	const char* txt="KinggodZero";
	const char* pat="godZ";

	int len=strlen(pat);

	cout<<"원본 텍스트 : "<<txt<<'\n';

	Timer timer;
	timer.start();
	const char* rslt1=mystrstr(txt, pat);
	timer.stop();

	cout<<"mystrstr 함수\n";
	if(rslt1){
		cout<<"찾은 패턴 : ";
		for(int i=0;i<len;i++)
			cout<<rslt1[i];
		cout<<'\n';
	}
	else
		cout<<"패턴을 찾지 못하였습니다.\n";

	cout<<"수행시간 (nano second) : "<<timer.get_nano()<<" nanoseconds\n";

	timer.start();
	rslt1=strstr(txt, pat);
	timer.stop();

	cout<<"\nstrstr 함수\n";
	if(rslt1){
		cout<<"찾은 패턴 : ";
		for(int i=0;i<len;i++)
			cout<<rslt1[i];
		cout<<'\n';

	}
	else
		cout<<"패턴을 찾지 못하였습니다.\n";

	cout<<"수행시간 (nano second) : "<<timer.get_nano()<<" nanoseconds\n";

	timer.start();
	rslt1=bf_match(txt, pat);
	timer.stop();

	cout<<"\nbf_match 함수\n";

	if(rslt1){
		cout<<"찾은 패턴 : ";
		for(int i=0;i<len;i++)
			cout<<rslt1[i];
		cout<<'\n';
	}
	else
		cout<<"패턴을 찾지 못하였습니다.\n";

	cout<<"수행시간 (nano second) : "<<timer.get_nano()<<" nanoseconds\n";

	timer.start();
	rslt1=kmp_match(txt, pat);
	timer.stop();

	cout<<"\nkmp_match 함수\n";

	if(rslt1){
		cout<<"찾은 패턴 : ";
		for(int i=0;i<len;i++)
			cout<<rslt1[i];
		cout<<'\n';

	}
	else
		cout<<"패턴을 찾지 못하였습니다.\n";

	cout<<"수행시간 (nano second) : "<<timer.get_nano()<<" nanoseconds\n";

	timer.start();
	rslt1=bm_match(txt, pat);
	timer.stop();

	cout<<"\nbm_match 함수\n";

	if(rslt1){
		cout<<"찾은 패턴 : ";
		for(int i=0;i<len;i++)
			cout<<rslt1[i];
		cout<<'\n';
	}
	else
		cout<<"패턴을 찾지 못하였습니다.\n";

	cout<<"수행시간 (nano second) : "<<timer.get_nano()<<" nanoseconds\n";

	return 0;
}


'C,C++ 코드' 카테고리의 다른 글

single linked list  (0) 2018.12.25
하노이 탑 코드  (0) 2018.12.23
인라인 코드 테스트  (2) 2018.12.22
진자 운동 코드  (0) 2018.12.22
퀵 정렬 함수  (0) 2018.12.16
Posted by Semi Developer
이전버튼 1 이전버튼

블로그 이미지
C++ 코드 저장용도
Semi Developer

태그목록

Yesterday
Today
Total

달력

 « |  » 2024.5
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

최근에 올라온 글

최근에 달린 댓글

글 보관함