웹서버로 사용할 컴퓨터에서 JSP(Java Server Page)와 서블릿을 사용하기 위해서는 서블릿 컨테이너(웹 컨테이너)를 설치하여 실행환경을 구축해야 합니다. 서블릿 컨테이너로 자주 사용되는 것 중에 가장 유명한 것이 아파치 톰캣(Apache Tomcat)이라는 것이 있는데 이것을 기준으로 설치하고 실행하는 방법까지 설명드리겠습니다. 참고로 아파치 톰캣은 오픈소스 프로젝트로 무료로 사용할 수 있습니다.

아파치 톰캣을 설치하기 위해서는 우선 컴퓨터에 자바 JDK가 설치되어 있어야 합니다. 자바 JDK 설치하는 방법은 아래의 링크를 참고하시기 바랍니다.

http://ngg3319.tistory.com/25

윈도우에 아파치 톰캣(Apache Tomcat) 다운로드 및 설치방법

아파치 톰캣, Apache Tomcat, 톰캣 설치, 톰캣 실행, JSP 컨테이너, 서블릿 컨테이너, 웹 컨테이너, 웹 어플리케이션 서버 구축, WAS, JSP 개발환경, Servlet 개발환경, JSP 웹 서버+

 

 

 

 

http://tomcat.apache.org/

자바 JDK가 설치되었다면 이제 아파치 톰캣을 다운받아 설치해 보겠습니다. 위 사이트에 접속을 하고 왼쪽에 있는 가장 최신버전인 Download - Tomcat 8.0을 클릭합니다. 

 

여기서는 윈도우가 깔려있는 컴퓨터에 아파치 톰캣을 설치할 것이기 때문에(실제 서비스를 하기 위해서는 윈도우보다 리눅스 아파치 톰캣 조합이 좋습니다.) 빨간색으로 표시된 것 중에 골라서 다운로드 받으면 됩니다. 위 파일들은 설치가 필요없는 무설치 프로그램이기 때문에 압축을 풀고 바로 사용하면 됩니다. (32-bit/64-bit Windows Service Installer를 선택하여 exe 설치파일을 다운받을 수도 있습니다.) 여기서는 C드라이브 루트에 바로 압축을 풀어 사용을 했습니다.

 


 

아파치 톰캣의 압축파일을 풀고 폴더 안에 들어가보면 위와 같은 화면을 볼 수 있습니다. bin 폴더에는 아파치 톰캣을 시작하고, 종료하는 등 명령어들이 들어있으며, webapps 폴더에는 직접 개발한 JSP파일이나 서블릿 파일을 위치시키게 됩니다.

 

아파치 톰캣(Apache Tomcat) 실행 방법

bin 폴더 속에 들어있는 파일들인데 자주 사용하는 실행파일에 startup.bat(톰캣 시작), shutdown.bat(톰캣 종료), catalina.bat(톰캣 시작 및 종료) 등이 있습니다. cmd 콘솔 프롬프트에서 직접 명령어를 입력해도 되지만 간단한 시작과 종료같은 작업은 직접 폴더에서 클릭하는 것이 편합니다. (CATALINA_HOME 환경변수를 설정하면 콘솔 화면에서 경로와 상관없이 아파치 톰캣 명령을 수행할 수 있습니다.)

catalina.bat 명령에는 start, stop, run, version 옵션이 있습니다.

catalina.bat start = startup.bat

catalina.bat stop = shutdown.bat

명령 프롬프트에서 CD명령으로 디렉토리 찾아가기 귀찮은 분들에게 아래의 글을 바칩니다.

아파치 톰캣, Apache Tomcat, 톰캣 설치, 톰캣 실행, JSP 컨테이너, 서블릿 컨테이너, 웹 컨테이너, 웹 어플리케이션 서버 구축, WAS, JSP 개발환경, Servlet 개발환경, JSP 웹 서버

startup.bat를 실행시키면 위와 같은 진행 화면을 볼 수 있는데, 아파치 톰캣 서버(웹 컨테이너)가 제대로 동작하고 있는 모습입니다. 여기서 서버를 종료시키려면 이 화면에서 Ctrl+C키를 누르거나 다른 명령 프롬프트 화면에서 shutdown.bat 명령을 입력하면 됩니다.

 

아파치 톰캣, Apache Tomcat, 톰캣 설치, 톰캣 실행, JSP 컨테이너, 서블릿 컨테이너, 웹 컨테이너, 웹 어플리케이션 서버 구축, WAS, JSP 개발환경, Servlet 개발환경, JSP 웹 서버

http://localhost:8080/

아파치 톰캣 서버가 실행된 상태에서 로컬호스트 주소로 접속을 하게 되면 위와 같은 웹페이지를 볼 수 있는데, 이것은 아파치 톰캣 서버가 정상적으로 동작되고 있는 것을 의미합니다. 참고로 위에 나온 화면은 C:\apache-tomcat-8.0.15\webapps\ROOT\index.jsp 파일의 내용입니다.

윈도우 환경에서 JSP, Servlet 프로그래밍을 공부하기 위해 아파치 톰캣(Apache Tomcat)을 설치해보았습니다. 서버쪽 프로그래밍은 리눅스에 올려줘야 제대로인데 그래도 공부할 때는 윈도우가 편한 것은 사실입니다. 리눅스를 설치하고 이것 저것 세팅할 필요가 없으니까요.

 

 

출저 : http://withcoding.com/25

안녕하세요 엘체프 GG 임돠

매번 컴터 셋팅 할때마다 필수로 업그레이드를 해야합니다. 그이후로는 굳이 꼭 할필요가없죠.

윈도우 업그레이드는 자동으로 설정되어 있습니다. 그래서 컴터를 종료하거나 시작할때 자기 맘대로 자동으로 업그레이드를 시작합니다. 업그레이드가 시작 되면 완료시까지 기다려야 하죠 그때 정말 짜증 나죠 그래서 윈도우 업그레이드를 끄는 방법에 대해 알아 보죠.

 

1. 순서대로

제어판 -> 시스템 및 보안 -> 관리도구 -> 서비스 -> window update -> 속성 -> 시작유형 -> 사용안함 

이렇게 하시면 됩니다.

 

더 빨리

 

2.시작해서 "서비스" 검색합니다.

구성요소 서비스 클릭

서비스->windows update 사용중지 하시면 끝!!

감사합니다.

 

'스터디' 카테고리의 다른 글

정보처리기사 알고리즘 기초  (7) 2018.05.09
보험사 업무 프로세스  (4) 2018.03.07
리눅스 프로파일(profile)  (7) 2018.02.27
소스 코드를 컬러풀하게 꾸미는 툴 color scriptor  (5) 2018.02.27
IT 용어 모음  (9) 2018.02.22

이클립스(Eclipse)에 톰캣서버(Apache Tomcat Server)가 생성되어 있다면 바로 웹프로젝트를 생성해서 JSP 프로그램을 작성할 수가 있습니다. 그럼 바로 살펴보죠.

 

이클립스 웹프로젝트(Dynamic Web Project) 만들기 (생성에서 실행까지)

이클립스 웹프로젝트 생성, 이클립스 웹프로젝트 실행, 이클립스 웹 프로젝트 만들기, Dynamic Web Project, 아파치 톰캣서버 연동, JSP 개발환경설정, 이클립스 JSP, 이클립스 HTML

File - New - Dynamic Web Project를 선택하면 위와 같은 대화상자가 나타납니다. 프로젝트 이름을 지정한 후 톰캣서버 설정이 제대로 되어 있는지 확인하고 Finish버튼을 누릅니다.


 

이클립스의 Project Explorer를 보면 프로젝트가 제대로 생성된 것을 볼 수 있습니다.

이클립스 웹프로젝트 생성, 이클립스 웹프로젝트 실행, 이클립스 웹 프로젝트 만들기, Dynamic Web Project, 아파치 톰캣서버 연동, JSP 개발환경설정, 이클립스 JSP, 이클립스 HTML

 

프로젝트를 보면 WebContent라는 폴더가 보이는데 보통 여기에 HTML파일이나 JSP파일을 생성시키게 됩니다. 그럼 간단하게 HTML파일을 만들어보겠습니다.(JSP파일은 HTML보다는 좀 복잡하니 다음 기회에) WebContent 폴더 위에서 오른쪽 마우스 클릭을 한 후 New - HTML File을 선택합니다.

 

파일 이름을 index.html로 지정하고 Finish 버튼!

 

이클립스 웹프로젝트 생성, 이클립스 웹프로젝트 실행, 이클립스 웹 프로젝트 만들기, Dynamic Web Project, 아파치 톰캣서버 연동, JSP 개발환경설정, 이클립스 JSP, 이클립스 HTML

WebContent 폴더에 index.html이라는 HTML파일이 생성된 것을 볼 수 있습니다. 이 파일을 조금 편집을 한 후 빨간색으로 표시된 Run 버튼을 클릭합니다.


이클립스 웹프로젝트 생성, 이클립스 웹프로젝트 실행, 이클립스 웹 프로젝트 만들기, Dynamic Web Project, 아파치 톰캣서버 연동, JSP 개발환경설정, 이클립스 JSP, 이클립스 HTML

 

톰캣서버가 잘 설정되어 있는지 확인하고 Next 버튼을 클릭. 다음부터 계속 이 설정으로 서버를 실행시킬거라면 Always use this server when running this project 선택해서 다음부터 이 과정을 생략할 수 있습니다.

 

서버의 자원을 관리하는 화면인데 Add, Remove버튼을 사용해서 Available 또는 Configured로 변경이 가능합니다. 자신에 생성한 웹프로젝트 이름이 Configured 영역에 있다면 그냥 Finish버튼을 누르면 됩니다. 이렇게 Configured로 설정된 웹 어플리케이션 모듈은 서버에서 실행할 수 있게 배치(Deployment)가 되는데, 이클립스에서는 [이클립스 워크스페이스 위치]\.metadata\.plugins\org.eclipse.wst.server.core\tmp0 와 같은 임시폴더에 저장을 합니다.

 

이클립스 웹프로젝트 생성, 이클립스 웹프로젝트 실행, 이클립스 웹 프로젝트 만들기, Dynamic Web Project, 아파치 톰캣서버 연동, JSP 개발환경설정, 이클립스 JSP, 이클립스 HTML

 

크롬이나 익스플러로같은 브라우저에서 주소를 쳐서 톰캣서버가 제대로 작동하는지 테스트해 볼 수도 있지만, 이클립스 Run기능을 사용하면 바로 결과값을 이클립스 에디터에서 확인할 수 있습니다. 서버에 접속된 주소가 http://localhost:8080/TestServer/index.html로 프로젝트의 이름이 주소에 영향을 주는 것을 볼 수 있습니다.

 

 

위에서 웹 프로그램을 실행할 때 Available, Configured를 지정할 수 있다고 했는데, Server 탭에서 오른쪽 마우스 클릭 Add and Remove를 선택해도 이러한 작업을 수행할 수 있습니다. 작업을 할 때 필요한 것은 Configured에, 아닌 것은 Available로 이동시키면 되는데, 나중에 복잡한 프로그래밍을 할 때 필요하니 알아두세요.

 

출저 : http://withcoding.com/33

안녕하세요 엘체프 입니다.

STL컨테이너의 요소로 변환 하여 교환해보는 실습으로 C++마무리 합니다.



문) 아래와 같이 비속어들과 그에 따른 교정어(바른 말)로 된 배열을 작성하고 이것을 STL 컨테이너의 요소로 변환하여

비속어 교정 사전을 만든 후, 특정 욕설 문장을 입력하였을 때 바로 교정하여 화면에 인쇄하는 프로그램입니다.


관련 예제 : 교과서 p.522 예제

 

   비속어 배열 요소들 : {"미친",     "뼉다귀",   "염병",  "것들",   "빡쳐", "졸라"};
   교정어 배열 요소들 : {"정신나간", "고집쟁이", "이런", "사람들", "화나", "정말"};


출력 예시)


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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <iostream>
#include <string>
#include <map>
 
using namespace std;
 
int main(void) {
 
     string trashArr[]   = {"미친",     "뼉다귀",   "염병",  "것들",  "빡쳐", "졸라"};
     string correctArr[] = {"정신나간", "고집쟁이", "이런", "사람들", "화나", "정말"};
 
     int sizeArr = sizeof(trashArr) / sizeof(string);
     map<string, string> slangDic;
 
     for (int i=0; i<sizeArr; i++) {
        slangDic.insert(make_pair(trashArr[i], correctArr[i]));
     } // for
 
     /*map<string, string>::reverse_iterator it
        = slangDic.rbegin();
 
     while (it != slangDic.rend()) {
      cout << it->first << ", " << it->second << endl;
      it++;
     } // while*/
 
     string slangSent = "이 미친 염병 뼉다귀 같은 것들 때문에 졸라 빡쳐!";
     string correctSent;
 
     // 비속어 문장(slangSent) 비속어 사전 -> 검색
     // 교정어 치환 -> 결과(correctSent) -> 인쇄
     // p.522/533
 
      map<string, string>::iterator it = slangDic.begin();
 
      size_t found;
 
      correctSent = slangSent; // 교정 문장 완성
 
       while (it != slangDic.end()) {
 
           found = correctSent.find((*it).first);
           
          while(found !=string::npos) {
 
            // 작성 시작 
          // 작성 힌트)
          // correctSent 문장 변수에서 found 변수(검색 단어 변수)
          // 를 it 반복자 패턴 변수의 값(second)로 교체(replace)하는
          // 한개의 문장을 작성합니다. p.523 중단의 replace 구문 참조
   
            

            // 작성 끝
            found = correctSent.find((*it).first, 
                                    found+1);
          } // while
 
          it++;
 
         } // while // 치환 완료
 
 
     cout << slangSent << endl;  // 교정전 문장
     cout << correctSent << endl; // 교정 후 문장
 
     system("PAUSE");
     return 0;
}


----------------------------------------------

답안소스

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <iostream>
#include <string>
#include <map>
 
using namespace std;
 
int main(void) {
 
     string trashArr[]   = {"미친",     "뼉다귀",   "염병",  "것들",  "빡쳐", "졸라"};
     string correctArr[] = {"정신나간", "고집쟁이", "이런", "사람들", "화나", "정말"};
 
     int sizeArr = sizeof(trashArr) / sizeof(string);
     map<string, string> slangDic;
 
     for (int i=0; i<sizeArr; i++) {
        slangDic.insert(make_pair(trashArr[i], correctArr[i]));
     } // for
 
     /*map<string, string>::reverse_iterator it
        = slangDic.rbegin();
 
     while (it != slangDic.rend()) {
      cout << it->first << ", " << it->second << endl;
      it++;
     } // while*/
 
     string slangSent = "이 미친 염병 뼉다귀 같은 것들 때문에 졸라 빡쳐!";
     string correctSent;
 
     // 비속어 문장(slangSent) 비속어 사전 -> 검색
     // 교정어 치환 -> 결과(correctSent) -> 인쇄
     // p.522/533
 
      map<string, string>::iterator it = slangDic.begin();
 
      size_t found;
 
      correctSent = slangSent; // 교정 문장 완성
 
       while (it != slangDic.end()) {
 
           found = correctSent.find((*it).first);
           
          while(found !=string::npos) {
 
            // 작성 시작 
            // 작성 힌트)
            // correctSent 문장 변수에서 found 변수(검색 단어 변수)
            // 를 it 반복자 패턴 변수의 값(second)로 교체(replace)하는
            // 한개의 문장을 작성합니다. p.523 중단의 replace 구문 참조
   
            correctSent.replace(found, 
                             (*it).first.length(), 
                             (*it).second);
            // 작성 끝
            found = correctSent.find((*it).first, 
                                    found+1);
          } // while
 
          it++;
 
         } // while // 치환 완료
 
 
     cout << slangSent << endl;  // 교정전 문장
     cout << correctSent << endl; // 교정 후 문장
 
     system("PAUSE");
     return 0;
}


'스터디 > C,C++' 카테고리의 다른 글

map 정렬 문제  (6) 2018.03.05
C++ map을 이용한 login 문제  (6) 2018.02.28
C 문자열(string) 분리  (6) 2018.02.28
C 문자열(string) 바꾸기  (6) 2018.02.28
마지막 C 시험문제 공백 사각찍기  (7) 2018.02.28

안녕하세요 엘체프 임돠

오늘은 map으로 정렬하는 문제로 map을 이해 해보도록 하겠습니다.


참고 링크) multimap 과 map의 차이점

http://blog.daum.net/coolprogramming/83


문) 영화 목록을 아래와 같이 오름차순 정렬하여 출력할 수 있도록 프로그램을 작성합니다.


실행화면 



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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <iostream>
#include <map>
#include <string>
#include <list>
using namespace std;
typedef multimap<int, string>::iterator year_movie_it;
 
int findMovieYear(map<string, int> sortedMap, string movie) {
 
 int year;
 map<string, int>::iterator sit = sortedMap.find(movie);
 
 if (sit !=  sortedMap.end())
  year = sit->second;
 
 return year;
}
 
int main()
{
 multimap<int, string> year_movie_map;
 pair<int, string> year_movie[] = {
  make_pair(1998, "타이타닉"),
  make_pair(2008, "슬럼독 밀리어네어"),
  make_pair(1997, "인생은 아름다워"),
  make_pair(2003, "올드보이"),
  make_pair(1994, "라이온킹"),
  make_pair(1999, "매트릭스"),
  make_pair(1994, "포레스트검프"),
 };
  
 for (int i=0 ; i<sizeof(year_movie)/sizeof(pair<int, string>) ; i++)
 {
  year_movie_map.insert(year_movie[i]);
 }
 
 // 문1) 정렬할 수 있도록 movieList 라는 list 클래스의 객체변수를 만듭니다.  
 // hint) list의 구성요소는 문자열 성분이다.
 

 // 문2) 21번 라인에서 구성된 multimap에 반복자 패턴(iterator)를 결합하여 
 // it 라는 반복자 패턴 변수를 작성한다.

 
 // 문3) 정렬한 결과를 담을 수 있는 sortedMap이라는
 // map 객체 변수를 만들어서 기존의 multimap의 내용을 key와 value를
 // 반대로 뒤집어서 저장하여 정렬하도록 합니다. (참고로 아래는 문3) 세분화한 힌트입니다)
 
 // 과정-1) sortedMap map 객체 생성
 
 // 과정-2) while문을 사용하여 문제 2에서 만든 it 반복자 패턴객체
    를 이용하여 it의 키(it->first 또는 (*it).first)를 sortedMap
    의 으로 반대로 it의 값(it->second)은 sortedMap의 로 대입

 // 과정-3) 아래의 while문을 돌리기 위한 list<string>과 반복자 패턴
    (iterator)가 결합된 mit 라는 변수를 생성.  
 
 while (mit != movieList.end()) {
   sortedMap.insert(make_pair(*mit, findMovieYear(sortedMap, *mit)));
  mit++;
 } // while
 
 // 문4) 정렬된 sortedMap으로 주어진 결과와 같은 화면이
 // 인쇄될 수 있도록 코드를 작성하십시오.
 
 
 
 system("PAUSE");
 return 0;

}

--------------------------------------------
답안소스

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <iostream>
#include <map>
#include <string>
#include <list>
 
using namespace std;
 
typedef multimap<int, string>::iterator year_movie_it;
 
int findMovieYear(map<string, int> sortedMap, string movie) {
 int year;
 
 map<string, int>::iterator sit = sortedMap.find(movie);
 
 if (sit !=  sortedMap.end())
  year = sit->second;
 
 return year;
}
 
int main()
{
 multimap<int, string> year_movie_map;
 pair<int, string> year_movie[] = {
  make_pair(1998, "타이타닉"),
  make_pair(2008, "슬럼독 밀리어네어"),
  make_pair(1997, "인생은 아름다워"),
  make_pair(2003, "올드보이"),
  make_pair(1994, "라이온킹"),
  make_pair(1999, "매트릭스"),
  make_pair(1994, "포레스트검프"),
 };
  
 for (int i=0 ; i<sizeof(year_movie)/sizeof(pair<int, string>) ; i++)
 {
  year_movie_map.insert(year_movie[i]);
 }
 
 // 문1) 정렬할 수 있도록 movieList 라는 list 클래스의 객체변수를 만듭니다.  
 // hint) list의 구성요소는 문자열 성분이다.
 
    list<string> movieList;
 
  // 문2) 21번 라인에서 구성된 multimap에 반복자 패턴(iterator)를 결합하여 
  // it 라는 반복자 패턴 변수를 작성한다.    
 
    multimap<int, string>::iterator it = year_movie_map.begin();
 
 // 문3) 정렬한 결과를 담을 수 있는 sortedMap이라는
 // map 객체 변수를 만들어서 기존의 multimap의 내용을 key와 value를
 // 반대로 뒤집어서 저장하여 정렬하도록 합니다.
 
 map<string, int> sortedMap;
 
 while (it != year_movie_map.end()) {
 
  sortedMap.insert(make_pair(it->second, it->first));
  it++;
 } // while
 
 list<string>::iterator mit =  movieList.begin();
 
 while (mit != movieList.end()) {
 
  sortedMap.insert(make_pair(*mit, findMovieYear(sortedMap, *mit)));
  mit++;
 } // while
 
 // 문4) 정렬된 sortedMap으로 주어진 결과와 같은 화면이
 // 인쇄될 수 있도록 코드를 작성하십시오.
 
 map<string, int>::iterator mit2 = sortedMap.begin();
 
 while (mit2 != sortedMap.end()) {
  cout << mit2->first << "," << mit2->second << endl;
  mit2++;
 }// while
 
 system("PAUSE");
 return 0;
}


안녕하세요 엘체프 GG 임돠

프로젝트 끝나고 회사에서 컴터 포맷하고 다시 셋팅 하고 팀장님이 쿼리 풀어 보라길래 머리 아프게 풀었네요.

오라클 문제지에 나와있는 문제 입니다. 답인지는 모르겠으나 문제랑 답이랑 올릴께요

문제문제.

--1. EMP 테이블에서 Blake와 같은 부서에 있는 모든 사원의 이름과 입사일자를 출력하는 SELECT문을 작성하시오.


--2. EMP 테이블에서 평균 급여 이상을 받는 모든 종업원에 대해서 종업원 번호와 이름을 출력하는 SELECT문을 작성하시오. 단 급여가 많은 순으로 출력하여라.


--3. EMP 테이블에서 이름에 “T”가 있는 사원이 근무하는 부서에서 근무하는 모든 종업원에 대해 사원 번호,이름,급여를 출력하는 SELECT문을 작성하시오. 단 사원번호 순으로 출력하여라.


--4. EMP 테이블에서 부서 위치가 Dallas인 모든 종업원에 대해 이름,업무,급여를 출력하는 SELECT문을 작성하시오.


--5. EMP 테이블에서 King에게 보고하는 모든 사원의 이름과 급여를 출력하는 SELECT문을 작성하시오.


--6. EMP 테이블에서 SALES부서 사원의 이름,업무를 출력하는 SELECT문을 작성하시오.


--7. EMP 테이블에서 월급이 부서 30의 최저 월급보다 높은 사원을 출력하는 SELECT문을 작성하시오.


--8. EMP 테이블에서 부서 10에서 부서 30의 사원과 같은 업무를 맡고 있는 사원의 이름과 업무를 출력하는 SELECT문을 작성하시오.


--9. EMP 테이블에서 FORD와 업무도 월급도 같은 사원의 모든 정보를 출력하는 SELECT문을 작성하시오.

 

제가 만든 답안

 

select * from emp;
select * from dept;
--1번
select e.ename 사원이름,e.hiredate 입사일자 from emp e, emp m  where e.deptno = m.deptno and e.ename = 'BLAKE';

--2번
select empno 종업원번호, ename 사원이름,sal 급여 from emp where sal> (select avg(sal)from emp) order by sal ;

--3번
select e.JOB 근무부서,e.ename 사원이름,e.deptno 사원번호 from emp e, emp m  where e.deptno = m.DEPTNO and e.ename like '%T%' order by e.DEPTNO;
select JOB 근무부서,ename 사원이름,deptno 사원번호 from emp where deptno in (select deptno from emp where ename like '%T%');

--4번
select * from emp where deptno in (select deptno from dept where loc ='DALAS');

--5번
select  ename 사원이름,  sal 급여 from emp where ename in (select e.ename from emp e , emp m where e.mgr = m.empno and m.ename='KING');

--6번
select ename 사원이름, job 업무,deptno from emp where deptno in (select deptno from dept where dname ='SALES');

--7번
select * from emp where sal> (select min(sal) from emp where deptno = 30)  ;

--8번
select ename 이름, job 업무,deptno from emp where deptno between '10' and '30';

--9번

select * from emp where job in (select job from emp where ename = 'FORD')and sal in (select sal from emp where ename = 'FORD');

 


 

안녕하세요 엘체프 GG 임돠

DB대신 map에 데이터를 넣어 이용할 수 있는 login 문제입니다.

 

실행/출력 결과 예시)

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <iostream>
#include <string>
#include <map>
 
using namespace std;
 
int main(void) {
 
 string id;
 string pw;
 
 // 문1) id/pw 입력 부분 완성
 // 시작
 
 
 
 // 끝
 
 // 문2) map 객체 변수를 생성하고, 주어진 데이터를
 // map 객체에 대입.
 // ID/PW는 각각 아래와 같이 2가지 세트를 대입합니다. 
 // ID : abcd, PW : 1234
 // ID : a1234, PW : 5678 
 // 대입한 map 객체의 데이터를 연속적으로 화면 인쇄 !
 
 // 시작
 
 
 
 // 끝
 
 
 // 입력한 id/pw를 map 객체의 id/pw와 비교하여
 // 메시징하는 부분 -> 이중 if !
 // id 존재여부 점검 -> pw 존재 여부 점검
 
 map<string, string>::iterator it
    = mapLogin.find(id);
 
 if (it == mapLogin.end()) {
 
        cout << "아이디가 존재하지 않습니다." << endl;
  } else {
 
   if (id == (*it).first) {
 
      if (pw == (*it).second) {
         cout << "패쓰워드가 일치합니다." << endl;
      } else {
         cout << "패쓰워드가 일치하지 않습니다." << endl;
      } // if
 
   } 
  
  }
 
 system("PAUSE");
 return 0;
}

 

-답안

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include <iostream>
#include <string>
#include <map>
 
using namespace std;
 
int main(void) {
    string id;
    string pw;
 
    // 문1) id/pw 입력 부분 완성
    cout << "아이디를 입력하십시오 : ";
    cin >> id;
 
    // cout << endl;
    cout << "패쓰워드를 입력하십시오 : ";
    cin >> pw;
    cout << endl;
 
    cout << id << "," << pw << endl;
 
    // 문2) map 객체 변수를 생성하고, 주어진 데이터를
    // map 객체에 대입.
    // ID/PW는 각각 아래와 같이 2가지 세트를 대입합니다. 
    // ID : abcd, PW : 1234
    // ID : a1234, PW : 5678 
    // 대입한 map 객체의 데이터를 연속적으로 화면 인쇄 ! 
 
    map<string, string> mapLogin;
 
    mapLogin.insert(make_pair("abcd""1234"));
    mapLogin.insert(make_pair("a1234""5678"));
 
    /*
    map<string, string>::reverse_iterator it
    = mapLogin.rbegin();
    while (it !=mapLogin.rend()) {
    cout << it->first << "," << it->second << endl;
    it++;
    } // for
    */
 
    // 입력한 id/pw를 map 객체의 id/pw와 비교하여
    // 메시징하는 부분 -> 이중 if !
    // id 존재여부 점검 -> pw 존재 여부 점검 
 
    map<string, string>::iterator it
        = mapLogin.find(id);
 
    if (it == mapLogin.end()) {
 
        cout << "아이디가 존재하지 않습니다."
            << endl;
    }
    else {
 
        if (id == (*it).first) {
 
            if (pw == (*it).second) {
                cout << "패쓰워드가 일치합니다." << endl;
            }
            else {
                cout << "패쓰워드가 일치하지 않습니다."
                    << endl;
            } // if
 
        }
    }
 
    system("PAUSE");
    return 0;
}
cs

 

감사합니다.

'스터디 > C,C++' 카테고리의 다른 글

비속어 필터링(trash talk filtering) 문제  (6) 2018.03.05
map 정렬 문제  (6) 2018.03.05
C 문자열(string) 분리  (6) 2018.02.28
C 문자열(string) 바꾸기  (6) 2018.02.28
마지막 C 시험문제 공백 사각찍기  (7) 2018.02.28

안녕하세요 엘체프 GG 임돠

문자열분리 해보는 문제 입니다.

 

문) 아래와 같이 문자열이 주어졌을 때 출력 결과가 정렬되어 나올 수 있도록 프로그램을 작성하십시오.

(부분 완성 문제)

 

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <iostream>
#include <string>
#include <sstream>
#include <list>
#include <vector>
 
// 문장을 입력받아서 단어로 분리. 단, 특수 문자는 제외시키도록 조치.
using namespace std;
 
string replaceSpecWord(string str);
list<string> splitSentence(string sent);
 
string replaceSpecWord(string str) {
 
   string word = " \t\n.,!?:;-";
   size_t found = str.find_first_of(word);
 
   while (found != string::npos)
   {
     str.replace(found, word.length(), "");
     found = str.find(word, found+1);
   }
 
   return str;
}
 
list<string> splitSentence(string sent) {
 
   list<string> strList;
   string temp;
   istringstream iss;
 
   iss.str(sent);
 
 
   while (iss >> temp) {
      temp= replaceSpecWord(temp);
      strList.push_back(temp);
   }
 
   return strList;
}
 
 
int main(void) {
 
   string sent = "내일은, 99주년. 3월1일\t 삼일절입니다!";
   list<string> wList = splitSentence(sent);
 
   // 나머지 부분을 완성하십시오.
   // 힌트) 문자열 변수에 반복자 패턴을 결합하여 인쇄한다.  
        
   
 
 
   system("PAUSE");
   return 0;
}

 

 

-답

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <iostream>
#include <string>
#include <sstream>
#include <list>
#include <vector> 
 
// 문장을 입력받아서 단어로 분리. 단, 특수 문자는 제외시키도록 조치.
using namespace std;
 
string replaceSpecWord(string str);
list<string> splitSentence(string sent);
 
string replaceSpecWord(string str) {
 
    string word = " \t\n.,!?:;-";
    size_t found = str.find_first_of(word);
    while (found != string::npos)
    {
        str.replace(found, word.length(), "");
        found = str.find(word, found + 1);
    }
    return str;
 
}
 
list<string> splitSentence(string sent) {
    list<string> strList;
    string temp;
    istringstream iss;
    iss.str(sent);
 
    while (iss >> temp) {
        temp = replaceSpecWord(temp);
        strList.push_back(temp);
    }
 
    return strList;
}
 
int main(void) {
    string sent = "내일은, 99주년. 3월1일\t 삼일절입니다!";
    list<string> wList = splitSentence(sent);
    // 나머지 부분을 완성하십시오.
    list<string>::iterator it = wList.begin();
 
    while (it != wList.end()) {
        cout << *it++ << endl;
    } // while 
 
    system("PAUSE");
 
    return 0;
 
}
cs

 

 

감사합니다.

 

 

 

 

 

 

 

'스터디 > C,C++' 카테고리의 다른 글

map 정렬 문제  (6) 2018.03.05
C++ map을 이용한 login 문제  (6) 2018.02.28
C 문자열(string) 바꾸기  (6) 2018.02.28
마지막 C 시험문제 공백 사각찍기  (7) 2018.02.28
C++ 문자열 경사면 인쇄하기  (9) 2018.02.19

안녕하세요 엘체프 GG 임돠

C 문자열을 바꾸는 소스 올립니다.

 

문) "C언어는 객체지향 언어이다." 라는 말을 지역변수로 입력받아서

"C언어는 구조적 언어이다."로 변경하는 프로그램을 작성하십시오.

 

-답

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
using namespace std;
 
void main() {
 
    // string str("C언어는 객체지향 언어이다.");
    string str = "C언어는 객체지향 언어이다.";
    string oriWord = "객체지향";
    string repWord = "구조적";
    size_t found = str.find(oriWord);
 
    while (found != string::npos) {
        str.replace(found, oriWord.length(), repWord);
        found = str.find(repWord, found + 1);
    }
    
    cout << str << endl;
    system("PAUSE");
}
cs

 

감사합니다.

'스터디 > C,C++' 카테고리의 다른 글

C++ map을 이용한 login 문제  (6) 2018.02.28
C 문자열(string) 분리  (6) 2018.02.28
마지막 C 시험문제 공백 사각찍기  (7) 2018.02.28
C++ 문자열 경사면 인쇄하기  (9) 2018.02.19
C++ 클래스 실습과제  (7) 2018.02.19

아래의 제시된 플로우차트를 참고하여 주어진 결과를 인쇄할 수 있도록 코드를 작성하여 제출하십시오.

1.출력결과

 

2.플로우차트

잘안보이네요......

바로 첨부파일

C언어과정수행평가서-(피평가자용)_남근곤.hwp

 -답

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
typedef unsigned int unit; /*int를 사용하기 위해*/
#include <stdio.h> /* printf사용시 */
#include <stdlib.h> /* systemf사용시 */
#define LINE_NUM /* 5를 사용하기 위해*/
 
int main()
{
    unit i, j;
    for (int i = 0; i < LINE_NUM; i++){// 5번 반복. 바깥쪽 루프는 세로 방향
        for (int j = 0; j < LINE_NUM -1- i; j++){ // 5번 반복. 안쪽 루프는 가로 방향
            printf("%c"' ');// 공백 출력
        }
        for (j = 0; j <LINE_NUM ; j++){
            printf("%c"'*');// 별표 출력
 
        }
        printf("\n");// 가로 방향으로 별을 다 그린 뒤 다음 줄로 넘어감
    }
    system("pause");
    return 0;
}
cs

 

C 공부 다시 해야겠다......

 

감사합니다.

 

'스터디 > C,C++' 카테고리의 다른 글

C 문자열(string) 분리  (6) 2018.02.28
C 문자열(string) 바꾸기  (6) 2018.02.28
C++ 문자열 경사면 인쇄하기  (9) 2018.02.19
C++ 클래스 실습과제  (7) 2018.02.19
C++ 클래스 응용 소스  (6) 2018.02.19

+ Recent posts