반응형

claude 유료로 사용하면서 SKT 고객이라 perplexity를 사용하고 있다. 

한달여 사용하면서 느낀것은.... perplexity와 claude와 성격이 다르다는 점이다. 

느낀점을 적어보면

perplexity는 검색 결과 기반의 데이터를 가지고 AI로 가공한 것으로 보여지고 

그러다 보니 검색 키워드에 따라 검색 결과가 달라지니 AI 모델 결과도 달라진다. 

10년 넘게 프로그래밍 관련 일을 한 프로그래머로써 내 지식 중 하나를 검색했을때 과연 내가 아는 결과가 나오는지 궁금했다. 

대표적으로 GPUImage와 VideoToolbox에 대해서 직접적으로 물어보지 않고 간접적으로 물어봤다. 

그 결과 내가 원하는 답을 얻기 위해서 무려 10번의 재 질문이 필요했다. 

검색 주제는 다음과 같다

"스위프트로 동영상 생성하는 기능을 만들고 싶다. 관련 라이브러리를 알려줘"

이게 기본 질의 였고 그 다음으로 이것을 좀 더 디테일하게 물어봤다 

예를 든다면 "애플에서 제공해주는 공식은 없어?", "라이센스 이슈는 피했으면 좋겠어", "ffmpeg 빼고 이야기 해줄래?" 

GPUImage는 마치 얻어 걸린것 처럼 표시 해주었으며

videotoolbox는 내가 직접 말하기 전까지는 아에 찾아 내지도 못했다. 

내가 느끼기엔 perplexity를 기술적 용도로 활용하기엔 한계가 좀 보였다. 

그리고 claude에 대해서 ...

공부할겸 최신 기법들을 에제와 함께 요청했더니 코드는 잘 구현해 준다. 

그런데..... 완성도가 높지 않다. 

이 말은 경험이 많은 개발자가 직접 달라 붙어서 좀더 완성도 있는 코드를 요청해야 하며 

이 코드를 그대로 쓰면 안되고 분석을 통해 로직 확인을 거친다음 써야 한다는 것이다.

심저어 metal 관련 쉐이더 코드도 작성해 준다. 

카메라 필터 앱을 만들어 볼려고 코드를 요청 했더니 다 작성해주었다 

그런데...... 동작은 제대로 안하는 경우가 종종 있고.... 주의사항에 도 나와 있다....

 

즉... 나온 코드를 로직 검증 작업을 하고 이용 해야 하는 것이다. 

경험자와 처음 접해본 사람의 차이는.... 코드에 대한 빠른 검사 이다. 

그리고 이 걸로 앱 코딩 된다고 하는 분들은...... 경험자 이거나..... 

개발에 아무것도 모르는 분들이 이것을 가지고 프로그래밍 할 수 있다...

개발에 타고 난 사람이 적성을 늦게 찾은 것 뿐이다. 

이걸 가지고 코딩한다고 해서 개발자라고 다년간 경험을 가진 개발자들을

무시하는 행위를 하는 선무당이 없었으면 한다.....

 

그리고......... 너무 의존하지 않았음 한다..... 어시스트 정도로 생각해야 하지 메인으로 접근하면 안된다.

 지금은 저렴하게 이용 가능한것처럼 보이겠지만 

없으면 일을 할수 없는 수준이 되면.... 개발자 몸값보다 더 비싸게 이용해야 할 것이다.

 

반응형
Posted by onlyTheOne
,
반응형

요즘도 2007년에 작성한 글을 실수로 보러 오는 분들이 많은 것으로 보여진다.


지금으로 부터 약 12년 전이나 되었다.


https://opendev4u.tistory.com/22


SWT 가지고 자바 앱 만들던게 엊그제 같은데 벌써 12년...


지금은 iOS 계열의 Objective-C 만 가지고 코딩 한다. 


물론 C, C++, 요즘 Swift 까지 공부하면서 보고 있다. 


한 언어에 치중 안할려고 노력 하는데 어렵다 ㅎㅎㅎ


하면 할 수록 공부할게 많아지는 분야...


2000년 처음 자바 공부할때 대비하면


많이 바뀌었다 좋아진점은 인터넷에 자료도 많고 찾기도 수월하다.


안좋아진점은 소위 우물안 개구리 능력자들이 판을 친다.


본인들의 테크닉이 그닥 뛰어 나지 않음을 잘 모르면서


이 세상을 구원할 영웅으로 알고 있다.


하루가 멀다하고 최신기술과 더 효율적인 기법들이 나오는 세상이다.


틀에 박힌 생각을 깨고 나아갔음 한다.


나는 과거에 안주하지 않기 위해... 노력 하려한다.





반응형
Posted by onlyTheOne
,
반응형

소스코드는 관련 사항입니다.

제작 환경은

OS : Windows XP Home Edition servicePack 2

JDK버전 : java 1.5.0_11

기타 사항 : SWT 툴킷 사용(가장 최신 버전)

사용 IDE : Eclipse 3.2 version

SWT와 Browser 위젯사용법에 대해서는 아래 사이트를 참조 하세요
(출처 이클립스 카페) http://www.java2s.com/Tutorial/Java/

소스 관련 문의는 게시판에 글로 올려 주시길 바랍니다.

/*----------------- 소스 코드 -------------------------*/

import! org.eclipse.swt.*;
import! org.eclipse.swt.SWT;
import! org.eclipse.swt.graphics.Point;
import! org.eclipse.swt.layout.*;
import! org.eclipse.swt.widgets.*;
import! org.eclipse.swt.browser.*;
import! org.eclipse.swt.graphics.*;
import! org.eclipse.swt.events.*;

/* 프로그램 정보
 *  제작자 : Kay
 *  연락처 : 여기 덧글 게시판 아니면 맨 아래 카페 주소로 이야기 해 주세요
 *  제작목적 : 업무에 좀 보탬이 되볼려고...
 *  기능... 그냥 익스플로러와 같다... 단지 다른점이라면...
 *  익스플로러와 달리 어느 사이트에서든지 소스 보기가 되었다가 안되는 곳이 생겼음
 *  제작일 :
 *  제 1 차 : 2007년 4월 25일 ~ 2007년 5월 12일 .....
 *  후기 :
 *   겁나 삽질 많이 했다.. 진짜......
 *   도움이 된 사이트가 있다면....
 *   http://www.java2s.com/Tutorial/Java/
 *   위 사이트에서 SWT 사용법을 익혔다......
 * 
 *  이 프로그램도.... 내가 진행하는 오픈프로젝트의 원칙에 따라 공개하는 바이다.. 소스 copy해서 써도 된다..
 *  단! 원본에 대한 출처를 실행시 도움말에 반드시 적어야 한다.. 그렇지 않을경우 저작권법에 의해 소송 당하실수도 있습니다.
 */

public class nm_Frame {
 
 Display display = null; // 디스플레이
 
 Shell sh = null; // 쉘 화면....
 
 Browser brow = null; // 브라우져 화면
 
 Composite panel = null; // 자바에서 패널 역할을 하는 중간 컨테이너 위젯
 Composite pan_s = null; // 하단 컨테이너
 
 Label name = null; // 표기용
 
 Button back = null; // 뒤로가기
 Button next = null; // 앞으로돌아가기
 Button update = null; // 새로고침
 Button stop = null; // 중지하기
 
 Text url_t = null; // 주소 입력창
 
 Text url_s = null; // 커서로 지정된 부분 url 보기
 Label loc_s = null; // location Event 확인
 ProgressBar p_bar = null; // 상태 바...
 
 // 메뉴 컴포넌트 선언
 Menu main_m = null;//메뉴바가 될 부분..
 MenuItem file_m = null; //파일메뉴
 Menu file_s = null;// 파일메뉴 하위...
 MenuItem s_update = null; //새로고침
 MenuItem s_back = null; // 뒤로
 MenuItem s_next = null; // 앞으로
 MenuItem s_close = null; // 종료
 
 MenuItem help_m = null; //헬프 메뉴
 Menu help_s = null; // 헬프 메뉴 하위
 MenuItem hs_info = null;
 
 public nm_Frame() {
   // 생성자 영역
 }
 
 public void set_Design() { // 컴포넌트 배치 설정
  display = new Display();
  sh = new Shell(display);
  sh.setLayout(new FormLayout());
  sh.setLocation(10, 10);
  sh.setSize(1000,700);
  sh.setText("Swt&Java WebBrowser 0.01b");

  // 폰트설정 
  Font font = new Font(sh.getDisplay(), new FontData("SansSerif", 12, SWT.NORMAL));
   
  // 메뉴 세팅
  main_m = new Menu(sh, SWT.BAR); //메뉴바가 될 부분...
  sh.setMenuBar(main_m);
  file_m = new MenuItem(main_m, SWT.CASCADE); //파일메뉴
  file_m.setText("&FILE");
  file_s = new Menu(sh, SWT.DROP_DOWN);// 파일메뉴 하위...
  file_m.setMenu(file_s);
  s_update = new MenuItem(file_s, SWT.PUSH); //새로고침
  s_update.setText("Refresh");
  s_back = new MenuItem(file_s, SWT.PUSH); // 뒤로
  s_back.setText("Back");
  s_next = new MenuItem(file_s, SWT.PUSH); // 앞으로
  s_next.setText("Forward");
  s_close = new MenuItem(file_s, SWT.PUSH); // 종료
  s_close.setText("Close");
  help_m = new MenuItem(main_m, SWT.CASCADE); //헬프 메뉴
  help_m.setText("&HELP");
  help_s = new Menu(sh, SWT.DROP_DOWN); // 헬프 메뉴 하위
  help_m.setMenu(help_s);
  hs_info = new MenuItem(help_s, SWT.PUSH);  // 프로그램 정보
  hs_info.setText("Program Info");
 
 
  // 상단 url 및 관련 버튼 위치 설정을 잡기위한 컨터이너 위치 지정
  panel = new Composite(sh, SWT.NONE);
  FormData f_top = new FormData();
  f_top.top = new FormAttachment(0, 0);
     f_top.left = new FormAttachment(0, 0);
     f_top.right = new FormAttachment(100, 0);
     panel.setLayoutData(f_top);
  panel.setLayout(new FormLayout());
  //panel.setBackground(display.getSystemColor(SWT.COLOR_WHITE));
  // 이전페이지 보기 버튼
  back = new Button(panel, SWT.PUSH);
  back.setText("뒤로가기");
  back.setBackground(display.getSystemColor(SWT.COLOR_WHITE));
  FormData n_1 = new FormData();
  n_1.top = new FormAttachment(5,1);
  n_1.left = new FormAttachment(1,0);
  back.setLayoutData(n_1);
 
  // 앞에 페이지 보기 버튼
  next = new Button(panel, SWT.PUSH);
  next.setText("앞으로가기");
  next.setBackground(display.getSystemColor(SWT.COLOR_BLACK));
  next.setForeground(display.getSystemColor(SWT.COLOR_WHITE));
  FormData n_2 = new FormData();
  n_2.top = new FormAttachment(5,1);
  n_2.left = new FormAttachment(back,5);
  next.setLayoutData(n_2);
 
  // 주소 라벨
  name = new Label(panel, SWT.NONE);
  name.setText(" URL : ");
     name.setFont(font);
  FormData n_3 = new FormData();
  n_3.top = new FormAttachment(5,3);
  n_3.left = new FormAttachment(next,2);
  name.setLayoutData(n_3);
 
  // 주소 텍스트창
  url_t = new Text(panel, SWT.BORDER);
  url_t.setFont(font);
  FormData n_4 = new FormData();
  n_4.top = new FormAttachment(5,0);
  n_4.left = new FormAttachment(name,2);
  n_4.right = new FormAttachment(80,0);
  url_t.setLayoutData(n_4);
 
  // 중지 버튼....
  stop = new Button(panel, SWT.PUSH);
  stop.setText("중지하기");
  FormData n_5= new FormData();
  n_5.top = new FormAttachment(5,1);
  n_5.left = new FormAttachment(url_t,5);
  stop.setLayoutData(n_5);
 
  // 새로고침....
  update = new Button(panel, SWT.PUSH);
  update.setText("새로고침");
  FormData n_6= new FormData();
  n_6.top = new FormAttachment(5,1);
  n_6.left = new FormAttachment(stop,5);
  update.setLayoutData(n_6);
 
  // 여기까지 중간 영역 컴포넌트 배치....
 
  // 하단 영역 위치 지정
  pan_s = new Composite(sh, SWT.NONE);
  FormData f_sou = new FormData();
  f_sou.bottom = new FormAttachment(100, 0);
  f_sou.left = new FormAttachment(0, 0);
  f_sou.right = new FormAttachment(100, 0);
  pan_s.setLayoutData(f_sou);
  pan_s.setLayout(new FormLayout());
       // 현재 url 주소를 보기 위한 컴포넌트 위치 지정
     url_s = new Text(pan_s, SWT.NONE | SWT.BORDER);
     //url_s.setBackground(display.getSystemColor(SWT.COLOR_BLACK));
     //url_s.setForeground(display.getSystemColor(SWT.COLOR_WHITE));
     FormData s_sou1 = new FormData();
     s_sou1.top = new FormAttachment(5,3);
     s_sou1.left = new FormAttachment(0,0);
     s_sou1.right = new FormAttachment(80,0);
     url_s.setEditable(false);
     url_s.setLayoutData(s_sou1);
     // 페이지 표시 상태 표기 컴포넌트 위치 지정
     p_bar = new ProgressBar(pan_s, SWT.BOLD);
     p_bar.setBackground(display.getSystemColor(SWT.COLOR_DARK_GRAY));
     FormData s_sou2 = new FormData();
     s_sou2.top = new FormAttachment(5, 4);
     s_sou2.left = new FormAttachment(url_s, 20);
     p_bar.setLayoutData(s_sou2);
    
   
  // 중간 브라우저 영역 위치 지정
  brow = new Browser(sh, SWT.BORDER);
 
  FormData f_cen = new FormData();
  f_cen.top = new FormAttachment(panel);
  f_cen.bottom = new FormAttachment(pan_s);
     f_cen.left = new FormAttachment(0, 5);
     f_cen.right = new FormAttachment(99, 10);
     brow.setLayoutData(f_cen);
   
 
  loc_s = new Label(sh, SWT.NONE);
  loc_s.setBounds(410,670,400,20);
  url_t.setText("http://www.naver.com");
     brow.setUrl(url_t.getText());   
     //컴포넌트 위치 설정 여기까지 아래는 시스템 창 열기...
    
    
     sh.open(); // 쉘 오픈
     set_Event(); // 이벤트 등록 메소드 실행
     while (!sh.isDisposed()) {
       if (!display.readAndDispatch())
         display.sleep();
     }
     display.dispose();


 }
 

// 이벤트 등록 메소드 이벤트 관련한 부분은 전부 in-line class를 이용하였습니다.
 public void set_Event() {
  // 브라우저에서 링크 상태를 나타내주는 이벤트 등록
  brow.addStatusTextListener(new StatusTextListener() {
   public void changed(StatusTextEvent te) {
    url_s.setText(te.text);
   }
  });
  // 브라우저에서 페이지 로딩 상태 표기 이벤트 등록
  brow.addProgressListener(new ProgressListener() {
   public void changed(ProgressEvent pe) {
    if(pe.total != 0) {
     int per = pe.current * 100 / pe.total;
     p_bar.setSelection(per);
    }
   }
  
   public void completed(ProgressEvent pe) {
    p_bar.setSelection(0);
   }
  });
  // 브라우저내 현재 브라우저에서 표기하는 url주소 표기 이벤트 등록
  brow.addLocationListener(new LocationListener() {
   public void changed(LocationEvent le) {
    if(le.top) {
    
     url_t.setText(le.location!);
    }
   }
   public void changing(LocationEvent le) {
   
   }
  });
  // 브라우저가 표기하는 페이지에서 윈도우 닫기 스크립트가 있을경우 처리하기 위해 등록
  brow.addCloseWindowListener(new CloseWindowListener() {
   public void close(WindowEvent we) {
    Browser bw = (Browser)we.widget;
    Shell sl = bw.getShell();
    sl.close();
   }
  });
  // 브라우저내 오른쪽 버튼으로 새창 열기 하면 익스플로러가 아닌 SWT창으로 새창 열기
  brow.addOpenWindowListener(new OpenWindowListener() {
   public void open(WindowEvent we) {
    Shell n_sh = new Shell(display);
    n_sh.setText("New Window");
    n_sh.setLayout(new FillLayout());
    Browser n_br = new Browser(n_sh, SWT.NONE);
    we.browser = n_br;
    n_sh.open();
   }
  });
 
  // 각종 버튼들 이벤트 설정

  // 뒤로가기 버튼
  back.addSelectionListener(new SelectionAdapter(){
   public void widgetSelected(SelectionEvent se) {
          brow.back();
         
      }
  });
  // 앞으로가기 버튼
  next.addSelectionListener(new SelectionAdapter(){
   public void widgetSelected(SelectionEvent se) {
          brow.forward();
      }
  });
  // 뒤로가기 버튼
  stop.addSelectionListener(new SelectionAdapter(){
   public void widgetSelected(SelectionEvent se) {
          brow.stop();
      }
  });
  // 앞으로가기 버튼
  update.addSelectionListener(new SelectionAdapter(){
   public void widgetSelected(SelectionEvent se) {
          brow.refresh();
      }
  });
 
  // 주소 창에  주소 입력 후 엔터 버튼 누를경우 해당 사이트로 브라우저 영역 고침
  url_t.addKeyListener(new KeyAdapter() {
   public void keyPressed(KeyEvent ke) {
    if(ke.keyCode == 13) {
     brow.setUrl(url_t.getText());
    }
   }
  });
  // 여기서 부터 메소드끝날때까지는 메뉴 이벤트 처리 영역
  // refresh 메뉴
  s_update.addListener(SWT.Selection, new Listener() {
   public void handleEvent(Event ev) {
    brow.refresh();
   }
  });
  //back 메뉴
  s_back.addListener(SWT.Selection, new Listener() {
   public void handleEvent(Event ev) {
    brow.back();
   }
  });
  //next(forward) 메뉴
  s_next.addListener(SWT.Selection, new Listener() {
   public void handleEvent(Event ev) {
    brow.forward();
   }
  });
  //close 메뉴
  s_close.addListener(SWT.Selection, new Listener() {
   public void handleEvent(Event ev) {
    try {
     display.dispose();
    } catch(Exception ex) {}
   }
  });
  // 프로그램 정보 메뉴 이벤트 등록(관련하여 info 내용을 등록함...
  hs_info.addListener(SWT.Selection, new Listener() {
   public void handleEvent(Event ev) {
    try {
     Shell n_sh = new Shell(display);
     n_sh.setText("프로그램 정보 ");
     n_sh.setLayout(new FillLayout());
     Browser n_br = new Browser(n_sh, SWT.NONE);
     String e_text = "<html> <head> " +
     "<meta http-equiv=Content-Type content=\"text/html; charset=ks_c_5601-1987\">" +
     "<meta name=Generator content=\"Microsoft Word 10 (filtered)\">" +
     "<title>Swt&Java WebBrowser [ver</title>" +
                    "<style> <!--  /* Font Definitions */" +
                    "@font-face " +
                    "{font-family:바탕;panose-1:2 3 6 0 0 1 1 1 1 1;} @font-face {font-family:"+
                    "\"\\@바탕\"; panose-1:2 3 6 0 0 1 1 1 1 1;} " +
                    "/* Style Definitions */" +
                    "p.MsoNormal, li.MsoNormal, div.MsoNormal " +
                    " {margin:0cm; " +
                    " margin-bottom:.0001pt;  text-align:justify;  text-justify:inter-ideograph; " +
                    " text-autospace:none;  word-break:break-hangul;  font-size:10.0pt; " +
                    " font-family:바탕;} a:link, span.MsoHyperlink  {color:blue; " +
                    " text-decoration:underline;} a:visited, span.MsoHyperlinkFollowed " +
                    "  {color:purple;  text-decoration:underline;} " +
                    "/* Page Definitions */ " +
                    " @page Section1 " +
                    " {size:595.3pt 841.9pt; " +
                    " margin:99.25pt 55.3pt 3.0cm 3.0cm; "+
                    "layout-grid:18.0pt;} div.Section1  {page:Section1;} " +
                    "--> " +
                    " </style> </head> " +
                    "<body lang=KO link=blue vlink=purple> " +
                    "<div class=Section1 style='layout-grid:18.0pt'>" +
                    "<p ><b><span style='font-size:14.0pt;font-family:" +
                    "\"Courier New\";color:navy'>Swt&Java WebBrowser [ver. 0.01b]</span></b></p>"+

                     "<p ><span > </span></p> "+

"<p ><b><span style='font-size:12.0pt;color:#3366FF'>1. " +
" 프로그램 라이센스 정보</span></b></p>" +

"<p ><span >  @ 이 프로그램은 저작자의 동의없이 상업을 목적으로 판매 할 수 없습니다.</span></p>"+

"<p ><span >  @ 이 프로그램을 사용 하다 발생 되는 문제에 대해선 저작자가 책임지지 " +
"않습니다.</span></p>"+

"<p ><span >  @ 이 프로그램은 저작자의 Open Project 의 일환으로 제작된"+
"프로그램으로써</span></p> "+

"<p ><span >     소스코드를 공개 하는 바입니다.</span></p>"+

"<p style='margin-right:-4.0pt;text-indent:20.0pt'><span " +
" style='color:#FF6600'>(단! 이 프로그램의 기능을 이용한 프로그램 제작시 실행에 출처를 밝혀 주셔야 합니다.)</span></p>" +
"<p style='margin-right:-4.0pt'><span "+
"style='color:#FF6600'> </span></p>"+

"<p style='margin-right:-4.0pt'><b><span +
"style='font-size:12.0pt;color:#3366FF'>2. 프로그램에 관련하여 문의</span></b></p>"+

"<p style='margin-right:-4.0pt'><span "+
"style='color:#FF6600'>  </span><span >@ 저작자가 운영하는 블로그나 카페를 통해 문의"+
"하여 주시기 바랍니다.</span></p>"+

"<p style='margin-right:-4.0pt;text-indent:25.0pt'><span "+
"> 블로그 : <a href=\"http://blog.naver.com/ind4\">http://blog.naver.com/ind4</a> "+
" 카  페 : <a href=\"http://cafe.naver.com/tgof\">http://cafe.naver.com/tgof</a>"+
"</span></p>"+

"<p style='margin-right:-4.0pt'><span > </span></p> "+

"<p style='margin-right:-4.0pt'><b><span "+
"style='font-size:12.0pt;color:#3366FF'>3. 개발 후기</span></b></p>"+

"<p style='margin-right:-4.0pt;text-indent:10.0pt'><span "+
">@ 원래 순수 자바로만 제작할려고 했으나 저작자의 내공부족으로 시련을 겪다가 SWT라는</span></p>"+

"<p style='margin-right:-4.0pt;text-indent:10.0pt'><span"+
">   이클립스 plug-in을 발견하여 제작하게 되었습니다. SWT를 좀더 일찍 알았다면 좋았을</span></p>"+

"<p style='margin-right:-4.0pt;text-indent:10.0pt'><span"+
">   거라 생각하며 또 다른 프로그램을 제작 하러 오늘도 공부 하려 합니다.</span></p>"+

"</div> </body> </html> ";
     n_br.setText(e_text);
     n_sh.open();
    } catch(Exception ex) {}
   }
  });
 
 } // end of set_Event()
 
 public static void main(String args[]) { // 메인 메소드
  nm_Frame nm = new nm_Frame();
  nm.set_Design();
 
 }
}
 
 

출 처 : http://cafe.naver.com/tgof/208 (N 모사에 운영 되고 있는 내 카페)
 

반응형
Posted by onlyTheOne
,
반응형
스택 큐 짬뽕 플그램
스택 에 오버플로우 발생시 큐에 스택 내용저장하는 프로그램

소스
----------------------------------------------------------------------------------
#include <stdio.h>
#include <conio.h>

int stack[10];
int top;
int queue[10];
int front, rear;

void init_stack();
void push(int vall);
void pop();
void print_stack();
void init_queue();
int get();
int put(int put_num);
void print_queue();
void send_queue();

// 스택
void init_stack() {
  top = -1;
}

void push(int vall) {
  if(top >= 9) {
    printf("\n 스택이 찼습니다. 큐로 바꾸어 저장하겠습니다.\n");
    send_queue();
  } else {
    stack[++top] = vall;
    printf("스택에 저장한 숫자 : %d\n", vall);
  }
}

void pop() {
  if(top < 0) {
    printf(" 스택비움\n");
  } else {
    --top;
  }
}

void print_stack() {
  int i;
  printf(" 스택 top -------------------- buttom\n");

  for(i = top; i>=0;i--) {
    printf("%d ", stack[i]);
  }
  printf("\n");
}

void send_queue() {
  // 스택에서 뽑아서 큐에 저장

  int i;
  printf("스택 Data -> 큐 로 이동\n");
  for(i=top;i>=0;i--) {
    int flag = put(stack[i]);
    if(flag == 0) break;
  }
  printf("스택 Data 큐에 저장완료\n");
}

// 큐
void init_queue() {
  front = rear = 0;
}

int get() {
  int get_num;
  if(front > 9) {
    printf("언더플로우 발생\n");
    get_num = -1;
  } else {
    get_num = queue[front++];
  }
  return get_num;
}

int put(int put_num) {
  int flag = 1;

  if(rear > 9) {
    printf("오버플로우발생\n");
    flag = 0;
  } else {
    queue[rear++] = put_num;
  }
  return flag;
}

void print_queue() {
  int i;
  printf("큐 first ----------- last \n");
  for(i = front; i < rear; i++) {
    printf("%d ", queue[i]);
  }
  putch('\n');
}

void main() {

  int select_num;
  int push_num;
  int exit_flag = 0;

  printf("스택과 큐를 통합한 프로그램\n");

  init_stack(); // 스택초기화
  init_queue(); // 큐초기화
  while(1) {
    printf(" 1) push 2)pop 3)stack data print 4)stack&queue data print 5)Quit! \n");
    printf("숫자를 선택해 주세요 : " );
    scanf("%d",&select_num);

    if(select_num > 4) break;
    else {
      switch(select_num) {
        case 1 :
          printf("푸쉬 숫자를 입력해주세요 => ");
          scanf("%d", &push_num);
          push(push_num);
          printf("푸쉬 실행\n");
        break;
        case 2:
          pop();
          printf("팝 실행\n");
        break;
        case 3:
          print_stack();
        break;
        case 4:
          print_stack();
          print_queue();
        break;
      }
    }
  }
  printf("프로그램을 종료합니다.\n");
  getch();
}
반응형
Posted by onlyTheOne
,
반응형
이 글을 솔직히 누가 ...

얼마나 보게 될지는 모르겠습니다.

제가 아는 자바의 지식을 바탕으로....

자바에 대해 이야기 해 보려 합니다.

우선 앞으로 작성될 글에 대해서...

제가 쓴 내용 중 정확한게... 100% 맞다고 생각하지 않습니다.

정답은 언제나 바뀔수 있으며 코딩 스타일은 프로그램을 제작하는 사람들 마다 다르다는 점을

밝혀 두는 바입니다.

잘못된 부분에 대해서는 저에게 말씀해 주시면 제가 그 분의 조언을 받아들여

그 분의 의견을 글 중간에 표기하는 방식으로 취하도록 하겠습니다.

반응형
Posted by onlyTheOne
,