전체자료 13
검색어 입력폼
  • [컴퓨터네트워크] 파일전송프로그램 평가A좋아요
    1. 동작 여부 및 실행 예1) 오류가 없는 경우① 먼저 파일이 저장될 클라이언트에 아래와 같은 ReceiveFile이란 폴더를 만들어야 합니다. 경로를 절대 경로로 설정하여 두어서 반드시 설정을 해두어야 합니다.② 서버에서 파일을 선택해서 전송을 하려는 단계입니다.③ 서버 측에서 파일(100메가 huge.zip)을 전송한 뒤의 화면입니다.(파일 스트림(I/O)버퍼와 랜으로의 파일전송 버퍼를 8Kbyte로 고정했을 때)④ 수신 완료시 클라이언트 측의 화면입니다.④ 서버 측에서 파일(10메가 test_10.zip)을 전송한 뒤의 화면입니다.(파일 스트림(I/O)버퍼와 랜으로의 파일전송 버퍼를 8Kbyte로 고정했을 때)④ 수신 완료시 클라이언트 측의 화면입니다2) 오류 발생 경우8KByte초과로(16KByte이상) 파일스트림(I/O) 버퍼와 랜으로의 파일 전송 버퍼를 두었을 때(Local 상과 네트워크 상에서 모두 동일합니다.) 이에 대한 분석은 뒤에서 다루겠습니다.2. 사용한 트랜스포트 계층 프로토콜 (TCP, UDP, 기타)제가 이 프로그램에서 사용한 프로토콜을 TCP/IP입니다. 그 중에서도 기본 구현 Tool이 비주얼 C++였기에 CAsyncSocket 클래스를 이용하였습니다. 따라서 non-Blocking 모드로 동작을 합니다. 아래의 그림을 참고로 하여 구현사항을 설명하겠습니다.기본적인 구현은 위 표와 동일합니다. 다만 bind()함수는 편의상 직접 IP주소와 Port번호를 입력하므로 실제 내부 함수 구현에서 생략되었습니다.1) 전체적인 이 프로그램의 파일전송은 흐름은 아래와 같습니다.① 서버와 클라이언트에서 각각 프로그램을 실행합니다. 각각 동일한 하나의 프로그램에서 라디오버튼으로 서버와 클라이언트를 선택할 수 있도록 구현했습니다. 그래서 각각 해당하는 라디오 버튼을 눌립니다.② 서버측이 먼저 ConnectOn버튼을 눌립니다. 다음 클라이언트 측이 ConnectOn버튼을 눌립니다. 그러면 상태창에 각각의 상태가 제대로 연결되었는지 표시가 나옵니다.③1kxx오류 발생파일 전송도에러 발생1k32kxx32k2kxx2k32xx32k4kxx4k32kxx32k8kxx8k32kxx32k16kxx16k32kxx32k32kxx2) 결과에 대한 분석입니다.실험 환경은 학교 피시실(펜티엄 4 1.7G, 메모리 256M, 하드 20G, 10/100이더넷 랜카드)에서 두 대의 컴퓨터를 이용하여 측정을 하였습니다. 주위에 사람들이 인터넷 같은 구내 랜선에 부하를 줄수 있는 프로그램을 사용하고 있을때보다는 그렇지 않을때가 훨씬더 속도가 빨랐습니다.측정에 사용한 파일은 홈페이지에 있는 huge.zip(100M) 파일과 correct.zip(10M)파일이었습니다. 물론 개인적으로 사용한 약 100M와 10M가 파일이 있었지만 측정 결과는 동일하여 생략했습니다.① 전체적으로 파일I/O 버퍼사이즈( )와 랜으로 파일전송시 TCP/IP 버퍼사이즈( )가 같을때 속도가 제일 빨랐습니다. 즉 파일 전송시 소요시간이 제일 짧았습니다. 아마도 메모리에서 파일을 읽어서 바로 랜으로 전송하는 것이 속도의 효율성면에서 월등히 좋아서 그런 듯 합니다.② 대체적으로 의 수치가 수치의 증가치보다 속도에 영향이 더 컸습니다. 즉 파일 I/O의 버퍼 사이즈가 일정 수준이상까지는 더 중요했습니다.③ 와 둘 다 같은 16Kbyte 이상의 버퍼를 가질 경우 전송시 에러가 발생했습니다. 이는 파일 I/O의 경우에 그 수치가 8Kbyte이상이 될 경우 한번의 로드가 아니라 두 번의 로드가 필요해서 그 시간의 딜레이로 인해 전송이 실패하는 경우가 발생한 것으로 보입니다. 또한 랜으로의 전송 역시 랜카드 자체의 버퍼사이즈와 TCP/IP전송시 이더넷 전송사이즈가 16Kbyte 이상의 경우 마찬가지로 딜레이로 인해 전송오류가 자주 발생했습니다. (한번이라도 전송오류가 발생했을 경우 도표에 'x'표시를 했습니다.)④ 버퍼의 사이즈가 8Kbyte까지 증가하는 경우, 처럼 메모리에 한꺼번에 로드해서 파일을 전송 하는 것보다 처럼 Pipe Line의 개념을 이용해서 전송하는 것이 훨alog's OnReceive function((CFileTransDlg*)m_pWnd)->OnReceive();}void CDerivedAsyncSocket::OnClose(int nErrorCode){if (nErrorCode == 0)// No, call the dialog's OnClose function((CFileTransDlg*)m_pWnd)->OnCClose();}void CDerivedAsyncSocket::OnSend(int nErrorCode){if (nErrorCode == 0)// No, call the dialog's OnSend function((CFileTransDlg*)m_pWnd)->OnSend();}// FileTransDlg.h : header file//#if !defined(AFX_FILETRANSDLG_H__090DF6CC_958A_4DA8_BDC4_732BF3E6999E__INCLUDED_)#define AFX_FILETRANSDLG_H__090DF6CC_958A_4DA8_BDC4_732BF3E6999E__INCLUDED_#include "DerivedAsyncSocket.h"#if _MSC_VER > 1000#pragma once#endif // _MSC_VER > 1000#include "time.h"#define PORT 5000#define IP "211.176.37.237"/////////////////////////////////////////////////////////////////////////////// CFileTransDlg dialogclass CFileTransDlg : public CDialog{// Constructionpublic:int m_SendCheck; // 보내기 모드인지..받기 모드인지..//1->보내기, 0->받기..time_t start_time, end_time;CFile *m_file; //파일포인터BOOL FileIsOpen; // 파일 오픈 여부..BOOL m_bCog(CFileTransDlg::IDD, pParent){//{{AFX_DATA_INIT(CFileTransDlg)m_strIP = _T("");m_nPort = 0;m_dFRSize = 0.0;m_dFSSize = 0.0;m_SendCheck=0;RRcount=SRcount=0;m_Status = _T("");//}}AFX_DATA_INIT// Note that LoadIcon does not require a subsequent DestroyIcon in Win32m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);m_bConnected=FALSE;FileIsOpen = FALSE;}void CFileTransDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CFileTransDlg)DDX_Control(pDX, IDC_STATE, m_ctrlState);DDX_Control(pDX, IDC_GUBUN, m_ctrlStatic);DDX_Control(pDX, IDC_PROGRESS1, m_prCtrl);DDX_Control(pDX, IDC_EDIT_SEND, m_ctrlEditSendFile);DDX_Control(pDX, IDC_EDIT_RECEIVE, m_ctrlEditReceiveFile);DDX_Control(pDX, IDC_BUTTON_CONNECTON, m_ctrlButtonConnecton);DDX_Text(pDX, IDC_SERVERIP, m_strIP);DDX_Text(pDX, IDC_PORTNUM, m_nPort);DDX_Text(pDX, IDC_EDIT_FRSIZE, m_dFRSize);DDX_Text(pDX, IDC_EDIT_FSSIZE, m_dFSSize);DDX_Text(pDX, IDC_STATUS, m_Status);//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CFileTransDwText("Waiting");m_Status = "Connect out from Server";}if(FileIsOpen){m_file->Close();delete m_file;m_file = NULL;FileIsOpen = FALSE;}Sleep(1000);UpdateData(FALSE);}void CFileTransDlg::OnReceive(){if(m_SendCheck==0) //받기 모드시{OnRReceive();}if(m_SendCheck==1) //보내기 모드시{OnSReceive();}}void CFileTransDlg::OnClient() //콤보 제어{m_bclient=1-m_bclient;UpdateData(TRUE);m_Status = m_strIP;UpdateData(FALSE);m_Status = "";m_bserver=FALSE;if(m_bclient){m_ctrlStatic.SetWindowText("Client");m_ctrlButtonConnecton.SetWindowText("Connect");}}void CFileTransDlg::OnServer() //콤보 제어{// TODO: Add your control notification handler code herem_bserver=1-m_bserver;UpdateData(TRUE);m_Status = m_strIP;UpdateData(FALSE);m_Status = "";m_bclient=FALSE;if(m_bserver){m_ctrlStatic.SetWindowText("Server");m_ctrlButtonConnecton.SetWindowText("Listen");}}void CFileTransDlg::OnButtonConnecton() //Connecton / Listen버튼 눌렀을 때{// TODO: Add your control notification handler code hereif(!m_bConnected){UpdateData(TRUE);m_Status = m;
    공학/기술| 2003.06.12| 25페이지| 1,000원| 조회(4,940)
    미리보기
  • 일본애니메이션이 한국애니메이션에 미친 영양
    지금도 그렇지만 어릴 때부터 만화 영화를 무척이나 좋아했습니다. 초등학교 때 주말 아침이나 공휴일, 특히 명절 때만 되면 나오는 만화영화를 보려고 기를 쓰고 달려들었습니다. 행여나 그 시간대를 놓칠까봐 혼자서 얼마나 시계를 보며 기다렸는지, 어머니가 그걸 보시고는 그 당시 흔치 않던 리모컨 달린 TV도 제 방에 두셨습니다. 극장에서 만화영화를 상영한다고 하면 바쁘다고 한사코 싫다하시던 부모님에게 한참을 매달려 함께 보러 가곤 했습니다. 그런데 학년이 올라가면서 알게 된 사실, 그건 제가 그렇게 좋아하던 만화영화의 거의 대부분이 일본 작품이고 또 대부분 그 아류작이란 사실을 알게 되었을 때 자연스레 만화 영화와는 거리가 생기게 되었습니다. 제 우상이던 마징가 Z가 일본 것이고, 은하철도 999의 그 멋진 영상들까지도 그러했습니다. 그때만 하더라도 어린 저에겐 아주 큰 상처였기 때문입니다. 더구나 몇 번씩이나 같은 만화영화를 재탕 삼탕 식으로 상영하다보니 이제는 다음 장면이 무엇이 나올지도 외울 정도가 되어버려 애니메이션에 식상해지기도 했습니다.
    인문/어학| 2003.06.12| 11페이지| 1,000원| 조회(1,094)
    미리보기
  • [프로그래밍] Push Push 게임 평가A+최고예요
    1. 프로그램 개요 및 설명 : 이 프로그램은 푸쉬푸쉬란 게임이다. 푸쉬맨(새알)이 주어진 말(편지)을 집(우체통)에 모두 다 넣으면 되는 게임이다. (삼성 휴대폰에 있는 게임과 동일하다.)♣ 단 이 프로그램을 실행 시 실행파일과 음악 파일들이 같은 디렉토리에 있어야 한다. 아래는 음악 파일 리스트이다. 시디에는 실행파일과 같은 루트 디렉토리에 들어있다.2. 설명서 : 1-5번까지 내용은 그대로 구현이 되었다.6번 : 주어진 스펙대로 푸쉬맨(새알)이 움직인 횟수를 표시 하였다.7번 : Back 기능은 툴바의 버튼을 눌리면 실행된다. 단 1회만 가능하다.8번 : 총 3개의 게임으로 구성되어 있다. 현재 게임을 clear할 경우 다음 단계로 넘어가게 되어있다.9번 : 추가한 사항은 아래와 같다. ① 배경과 각각의 아이콘들을 직접 그렸다. 푸쉬맨->새알, 말->편지, 집->우체통으로 모두 바뀌었고 벽도 꽃무늬로 바뀌었다. 편지가 우체통에 들어갈 때와 푸쉬맨이 우체통에 들어갈 때도 그림이 다르다. ② 배경음악과 효과음들이 추가되었다. 푸쉬맨이 움직이거나 집 속으로 말이 들어갈 때, 이동하지 못하는 경우(에를 들면, 벽 쪽으로 계속 이동하려고 할 때)에 각각의 효과음을 나타낸다. 또한 각 스테이지를 clear 할 경우와 전체 스테이지를 lear 했을 때, Undo 버튼을 사용했을 때도 효과음이 난다.
    공학/기술| 2002.11.29| 29페이지| 1,000원| 조회(3,821)
    미리보기
  • [프로그래밍] 알카노이드 평가A좋아요
    이 프로그램은 ALKANOID(벽돌 깨기)라는 게임입니다. 막대를 이용하여 공으로 상단의 벽돌을 깨뜨리는 격파 게임입니다. 총 3개의 스테이지로 구성이 되어 있으며, 각 스테이지에 있는 모든 벽돌을 다 깨야지만 다음 스테이지로 넘어갑니다. ⑴ 실행파일 : block.exe (컴파일하시면 나옵니다.) ⑵ 실행 시 반드시 실행파일과 함께 trumpet1.wav 파일과 done.wav 파일 및 good.mid 파일이 같이 있어야 합니다. (이 파일들은 배경음악 및 효과음 파일입니다.) ⑶ 시스템에 비주얼 C++이 설치되어 있어야 하며(제작 시 6.0에서 작업) 운영체제는 윈도우 2000 과 XP에서 원활히 실행됩니다. (단 98에서는 실행을 장담할 수 없습니다.)
    공학/기술| 2002.11.29| 34페이지| 1,000원| 조회(3,708)
    미리보기
  • [이산수학] dijstra 알고리즘 평가C아쉬워요
    -비주얼 C++ 6.0으로 만들었습니다.-//array.h 인접행렬로 나타낸 데이터 파일입니다.//#define M 5000int adj[8][8] = {{0,3,5,M,M,1,8,M},{3,0,2,1,M,M,M,M},{5,2,0,M,2,M,M,1},{M,1,M,0,1,5,M,M},{M,M,2,1,0,M,1,M},{1,M,M,5,M,0,6,M},{8,M,M,M,1,6,0,4},{M,M,1,M,M,M,4,0}};//view파일입니다..// SHORTPATHView.cpp : implementation of the CSHORTPATHView class//#include "stdafx.h"#include "SHORTPATH.h"#include "SHORTPATHDoc.h"#include "SHORTPATHView.h"#include "Input.h"#include "array.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////////////////// CSHORTPATHViewIMPLEMENT_DYNCREATE(CSHORTPATHView, CView)BEGIN_MESSAGE_MAP(CSHORTPATHView, CView)//{{AFX_MSG_MAP(CSHORTPATHView)ON_COMMAND(ID_SHORT, OnShort)//}}AFX_MSG_MAP// Standard printing commandsON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)END_MESSAGE_MAP()///////////////////////// CSHORTPATHView construction/destructionCSHORTPATHView::CSHORTPATHView(){// TODO: add construction code here}CSHORTPATHView::~CSHORTPATHView(){}BOOL CSHORTPATHView::PreCreateWindow(CREATESTRUCT& cs){// TODO: Modify the Window class or styles here by modifying// the CREATESTRUCT csreturn CView::PreCreateWindow(cs);}/////////////////////////////////////////////////////////////////////////////// CSHORTPATHView drawingvoid CSHORTPATHView::OnDraw(CDC* pDC){CSHORTPATHDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);// TODO: add draw code for native data hereDrawLine(pDC); //기본적으로 주어진 그래프를 그린다.}/////////////////////////////////////////////////////////////////////////////// CSHORTPATHView printingBOOL CSHORTPATHView::OnPreparePrinting(CPrintInfo* pInfo){// default preparationreturn DoPreparePrinting(pInfo);}void CSHORTPATHView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/){// TODO: add extra initialization before printing}void CSHORTPATHView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo*///////////////////////////////////////////////////////////////////////// CSHORTPATHView diagnostics#ifdef _DEBUGvoid CSHORTPATHView::AssertValid() const{CView::AssertValid();}void CSHORTPATHView::Dump(CDumpContext& dc) const{CView::Dump(dc);}CSHORTPATHDoc* CSHORTPATHView::GetDocument() // non-debug version is inline{ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CSHORTPATHDoc)));return (CSHORTPATHDoc*)m_pDocument;}#endif //_DEBUG/////////////////////////////////////////////////////////////////////////////// CSHORTPATHView message handlersvoid CSHORTPATHView::OnShort(){// TODO: Add your command handler code hereInvalidate(); //새로이 시작시 다시 주어진 그래프를 그려준다.CInput dlg; //입력 다이얼로그 실행if(dlg.DoModal()==IDOK){char in_start=dlg.m_start.GetAt(0); //한문자만 받아들이기 위한 변환.char in_end=dlg.m_end.GetAt(0);int covert_start,covert_end;switch(in_start) //알고리즘의 적용을 위해 int형으로 변화.{case 'a': covert_start = 0; break;case 'b': covert_start = 1; break;case 'c': covert_start = 2; break;case 'd': covert_start = 3; break;ca = 5; break;case 'g': covert_start = 6; break;case 'z': covert_start = 7; break;}switch(in_end){case 'a': covert_end = 0; break;case 'b': covert_end = 1; break;case 'c': covert_end = 2; break;case 'd': covert_end = 3; break;case 'e': covert_end = 4; break;case 'f': covert_end = 5; break;case 'g': covert_end = 6; break;case 'z': covert_end = 7; break;}int length1[8]; //최단경로값을 가지고 있는 배열int length2[8]; //dijkstra 알고리즘에서 v를 제거하기 위한 배열int int_path[8] = {0,1,2,3,4,5,6,7};//처음과 끝을 배열 계산의 편리를 위해 0부터 7로 정했다.//시작값:covert_start = 1 , 종료값:covert_end = 8int v=0; //임시 변수int temp = 0; //임시 변수{for(int i = 0; i < 8; i++) //length1 초기화length1[i] = M;length1[covert_start] = 0;}for(int i=0;i < 8; i++){for(int j=0;j MoveTo(200,100);//b-cpDC->LineTo(500,100);pDC->MoveTo(100,200);//a-fpDC->LineTo(200,300);pDC->MoveTo(200,300);//f-dpDC->LineTo(300,200);pDC->MoveTo(200,300);//f-gpDC->LineTo(500,300);pDC->MoveTo(400,200);//e-gpDC->LineTo(500,300);pDC->MoveTo(200,100);//b-dpDC->LineTo(300,200);pDC->MoveTo(300,20epDC->LineTo(400,200);pDC->MoveTo(500,100);//c-zpDC->LineTo(600,200);pDC->MoveTo(500,300);//g-zpDC->LineTo(600,200);pDC->MoveTo(100,200);//a-cpDC->LineTo(500,100);pDC->MoveTo(100,200);//a-gpDC->LineTo(500,300);pDC->TextOut(140,130,"3"); // Weight 나타내기.pDC->TextOut(560,130,"1");pDC->TextOut(350,80,"2");pDC->TextOut(244,122,"1");pDC->TextOut(200,150,"5");pDC->TextOut(440,130,"2");pDC->TextOut(210,255,"5");pDC->TextOut(455,230,"1");pDC->TextOut(200,205,"8");pDC->TextOut(345,180,"1");pDC->TextOut(345,310,"6");pDC->TextOut(140,260,"1");pDC->TextOut(550,260,"4");pDC->TextOut(85,190,"a");pDC->TextOut(195,80,"b");pDC->TextOut(498,80,"c");pDC->TextOut(275,192,"d");pDC->TextOut(415,192,"e");pDC->TextOut(195,305,"f");pDC->TextOut(500,300,"g");pDC->TextOut(610,190,"z");pDC->SelectObject(oldpen);}void CSHORTPATHView::DrawPath(int *ro, int *length1, int covert_end)//경로 그리기{CClientDC cdc(this);CPen pen,*oldpen;pen.CreatePen(PS_SOLID,2,RGB(255,0,255)); //빨간색으로 그린다.oldpen=cdc.SelectObject(&pen);int poi
    공학/기술| 2002.04.15| 8페이지| 1,000원| 조회(683)
    미리보기
  • [프로그래밍] 자바로 구현한 링크드리스트
    -Linked List의 삽입과 그 출력입니다.import java.io.*; //입출력 스트림의 헤더파일 참조입니다.class Node //Linked List의 정보를 가지고 있는 클래스입니다.{String key; //노드내의 값을 나타냅니다.Node next; //다음 노드를 가르킵니다.}public class TestList //실제 Linked List를 다루는 클래스입니다.{public static void main(String args[]){System.out.println("Linked List 테스트입니다.");TestList tt=new TestList(); //객체를 생성해서tt.run_list(); //그 함수를 통해 실행합니다.}void run_list(){Node temp, head; //임시 저장소인 temp노드와 현재 노드를 가르키는 headhead=null; //노드를 선언합니다. 그 초기값은 null입니다.String input; //입력 받는 문자열을 처리하기 위한 변수입니다.BufferedReader in=new BufferedReader(new InputStreamReader(System.in));try //입력된 문자열 스티림을 받아들이기 위해 선언한 클래스입니다.{ //입력 스트림 내의 함수를 사용하기 위해 예외처리를 합니다.while (true){temp=new Node();System.out.print("입력하고자 하는 문자열을 넣으세요.(입력값 출력시에는'q') :");input=in.readLine(); //입력된 문자열을 임시 변수로 받아들입니다.if (input.equals("q")) break; // 'q'를 입력 받으면 반복문을 벗어납니다.else{temp.key=input; //입력 받은 문자열을 임시 노드에 저장합니다.if (head==null) //만약 비어있는 상태이면{head=temp; //임시 노드의 내용을 현재 노드에 넣습니다.head.next=null; //현재 노드의 다음 노드 지시는 null입니다.}else{temp.next=head; //현재 노드를 가르치는 부분을 임시노드의 다음에 head=temp; //넣습니다. 임시 노드를 현재 노드에 넣습니다.}}}temp=head; //출력을 위해 현재 노드를 임시 노드에 넣습니다.System.out.print("출력값입니다. : -> ");
    공학/기술| 2002.04.15| 4페이지| 1,000원| 조회(1,253)
    미리보기
  • [프로그래밍] 자바로 구현한 스택 평가A좋아요
    -Stack의 삽입과 삭제 및 오버플로우와 언더플로우를 구현했습니다.-import java.io.*; //입출력 스트림의 헤더파일 참조입니다.class Stackdata //스택의 정보를 가지고 있는 클래스입니다.{final int max=2; //최대 스택의 배열 값입니다. 결과의 편의를 위해 2로 했습니다.String list[]=new String[max]; //문자열 형태의 배열을 선언합니다.int top,bottom; //스택의 처음과 나중을 표현합니다.void push(String x) //스택을 삽입하는 함수입니다.{top=top+1; //삽입될 때마다 top의 값을 증가합니다.list[top]=x;}String pop() //스택을 삭제하는 함수입니다.{String y=""; //마지막 스택을 삭제할 때 top과 bottom이 같을 때까지 제거하기y=list[top]; //위해 임시 변수 y를 잡아서 사용합니다.(출력시 오류방지) 삭제top=top-1; //마다 top의 값을 하나씩 감소합니다.return y;}boolean full() //스택의 오버플로우를 검사합니다.{if (top==(max-1)){System.out.println("스택이 가득입니다");return true;} else return false;}boolean empty() //스택의 언더플로우를 검사합니다.{if (top==bottom){System.out.println("스택이 없습니다.");return true;} else return false;}}public class Stacklist //실제 스택을 다루는 클래스입니다.{public static void main(String args[]){System.out.println("스택 테스트입니다");System.out.print("원하는 번호를 입력하세요.(1번은 스택 삽입, 2번은 스택 제거, 종료는 q) :");Stacklist s=new Stacklist(); //객체를 생성해서s.run_stack(); //그 함수를 통해 실행합니다.}void run_stack(){ //입력된 문자열 스트림을 받아들이기 위해 선언하는 클래스입니다.BufferedReader in=new BufferedReader(new InputStreamReader(System.in));Stackdata st=new Stackdata(); //스택 객체를 생성합니다.String input,m; //입력받은 문자열을 처리하기 위한 변수입니다.int i,k; //임시 변수들입니다.st.bottom=-1; st.top=-1; //배열이 0부터 시작하므로 이 값들은 '-1'부터 시작합니다.try{ //입력 스트림 내의 함수를 사용하기 위해 예외처리를 합니다.while(true){input=in.readLine(); //입력된 문자열을 input에 저장합니다.if(input.equals("q")) //'q'를 입력 받으면 반복문을 벗어납니다.break;if(input.equals("1") || input.equals("2")) //입력값이 '1'과 '2'를 입력 받았을 경우만i= Integer.parseInt(input); //처리합니다.else{System.out.println("잘못된 입력입니다.");System.out.print("원하는 번호를 입력하세요.(1번은 스택 삽입, 2번은 스택 제거, 종료는 q) :");continue;}switch (i){case 1 : if(!st.full()) //스택가 가득차 있으면{System.out.print("삽입할 내용을 넣으세요: ");m=in.readLine(); //입력됨 문자열을st.push(m); //스택에 넣는다.}break;case 2 : if (!st.empty()) //스택이 비어 있지 않으면
    공학/기술| 2002.04.15| 4페이지| 1,000원| 조회(782)
    미리보기
  • [프로그래밍] 자바로 구현한 큐 평가A+최고예요
    - Queue의 삽입과 삭제 및 오버플로우와 언더플로우를 구현했습니다.-import java.io.*;class Queuedata //큐의 정보를 가지고 있는 클래스입니다.{final int max=3; //최대 큐의 배열 값입니다. 결과의 편의를 위해 3으로 정했습니다.int front, rear; //큐의 처음과 끝을 나타내는 변수입니다.String list[]=new String[max];String remove() //큐를 삭제하는 함수입니다.{String y=""; //마지막의 큐를 삭제할 때 front와 rear이 같을 때까지 제거 하기y=list[rear]; //위해 임시 변수 y를 잡아서 사용합니다. (출력시 오류 발생 방지rear++; // 를 위해서입니다. 삭제될 때마다 rear의 값을 증가시킵니다.return y;}void enter(String x) //큐를 삽입하는 함수입니다.{front++; //삽입될 때마다 front의 값을 증가시킵니다.list[front]=x;}boolean full() //큐의 오버플로우를 검사합니다.{if (front==(max-1)){System.out.println("큐가 가득입니다");return true;}else return false;}boolean empty() //큐의 언더플로우를 검사합니다{if (front==rear-1){ System.out.println("큐가 없습니다.");return true;} else return false;}}public class Queuelist //실제 큐를 다루는 클래스입니다.{public static void main(String args[]){System.out.println("큐 테스트입니다");System.out.print("원하는 번호를 입력하세요.(1번은 큐 삽입, 2번은 큐 제거, 종료는 q) :");Queuelist s=new Queuelist(); //객체를 생성해서s.run_queue(); //그 함수를 통해 실행합니다.}void run_queue(){ //입력된 문자열 스트림을 받아들이기 위해 선언하는 클래스입니다.BufferedReader in=new BufferedReader(new InputStreamReader(System.in));Queuedata qd=new Queuedata(); //큐 객체를 생성합니다.String input,m; //입력받은 문자열을 처리하기 위한 변수입니다.int i,k; //임시 변수들입니다.qd.front=-1; qd.rear=0; //rear은 항상 '0'부터 시작이고 front는 증가된 값이 시작try //이므로 '-1'이 시작입니다.{ //입력 스트림 내의 함수를 사용하기 위해 예외처리를 합니다.while(true){input=in.readLine(); //입력된 문자열을 input에 저장합니다.if(input.equals("q")) // 'q'를 입력 받으면 반복문을 벗어납니다.break;if(input.equals("1") || input.equals("2")) // '1'과 '2'를 입력 받았을 경우만 처리합니다.i= Integer.parseInt(input);else //잘못된 입력을 처리합니다.{System.out.println("잘못된 입력입니다.");System.out.print("원하는 번호를 입력하세요.(1번은 큐 삽입, 2번은 큐 제거, 종료는 q) :");continue;}switch (i){case 1 : if(!qd.full()) //큐가 가득차 있지 않으면{System.out.print("삽입할 문자열을 넣으세요: ");m= in.readLine(); //입력된 문자열을qd.enter(m); //큐에 넣는다.}break;case 2 : if (!qd.empty()) //큐가 비어 있지 않으면{System.out.print("큐의 내용을 제거합니다: ");
    공학/기술| 2002.04.15| 4페이지| 1,000원| 조회(1,014)
    미리보기
  • [자료구조] C로 구현한 파스칼 삼각형
    #include <stdio.h>//scanf()와 printf()를 사용하기 위해 기술.#include <conio.h> //getch()를 사용하기 위해 기술.void main() { int i,j,n,m ; int table[100][100]; //출력될 값을 저장해둘 2차원 배열.for(i=0; i<100; i++)//배열값 들의 초기화(없어도 무방).for(j=0; j<100; j++)table[i][j]=1;
    공학/기술| 2002.04.15| 4페이지| 1,000원| 조회(823)
    미리보기
  • [비주얼C++] 비주얼C++
    윈도우즈 환경에서 (그림 1)과 같은 패턴을 입력한 각도에 따라 서서히 이동 시키며 화면의 가장자리에 닿으면 입사각과 같은 각도로 반사하는 프로그램을 작성하시오.
    공학/기술| 2001.11.25| 3페이지| 1,000원| 조회(722)
    미리보기
해캠 AI 챗봇과 대화하기
챗봇으로 간편하게 상담해보세요.
2026년 05월 23일 토요일
AI 챗봇
안녕하세요. 해피캠퍼스 AI 챗봇입니다. 무엇이 궁금하신가요?
8:48 오후
문서 초안을 생성해주는 EasyAI
안녕하세요 해피캠퍼스의 20년의 운영 노하우를 이용하여 당신만의 초안을 만들어주는 EasyAI 입니다.
저는 아래와 같이 작업을 도와드립니다.
- 주제만 입력하면 AI가 방대한 정보를 재가공하여, 최적의 목차와 내용을 자동으로 만들어 드립니다.
- 장문의 콘텐츠를 쉽고 빠르게 작성해 드립니다.
- 스토어에서 무료 이용권를 계정별로 1회 발급 받을 수 있습니다. 지금 바로 체험해 보세요!
이런 주제들을 입력해 보세요.
- 유아에게 적합한 문학작품의 기준과 특성
- 한국인의 가치관 중에서 정신적 가치관을 이루는 것들을 문화적 문법으로 정리하고, 현대한국사회에서 일어나는 사건과 사고를 비교하여 자신의 의견으로 기술하세요
- 작별인사 독후감