[{"content":"폐업으로 버려진 애터미 공기청정기 Home Assistant 로컬 연동 성공기 (Tuya ESP8266 TLS 패치 및 우회) 부모님 댁에 보관되어 있던 애터미 공기청정기를 집으로 가져왔습니다. 필터 상태나 하드웨어 자체의 공기 청정 성능은 상당히 괜찮은 편이라 스마트홈에 붙여서 자동화로 활용해 보려고 했습니다.\n그런데 전용 앱 접속이 전혀 되지 않아서 애터미 고객센터에 문의해 보니, **\u0026ldquo;해당 앱 개발 및 서버 관리를 담당하던 외주 업체가 폐업하여 더 이상 서비스 지원이 불가능하다\u0026rdquo;**는 답변을 받았습니다. 확인해 보니 이미 iOS 앱스토어에서는 관련 앱이 완전히 내려간 상태였습니다. (안드로이드용 APK 파일만 인터넷에서 겨우 구할 수 있는 수준이었습니다.)\n멀쩡한 하드웨어를 이대로 방치하거나 버리기엔 너무 아까워서, 아예 순정 클라우드를 끊어버리고 Home Assistant(HA)에 완전히 로컬 방식으로 연동하여 부활시켜 보기로 했습니다. 한 이틀 동안 삽질한 끝에 연동에 성공한 과정을 정리해 둡니다.\n1차 시도: 하드웨어 개조(UART 납땜) 대신 소프트웨어 우회를 선택한 이유 처음에는 기기를 분해해서 메인보드의 **UART 시리얼 통신 핀(TX/RX/GND/3V3)**에 USB-to-TTL 젠더를 물리고 납땜해서 ESPHome이나 Tasmota 같은 커스텀 펌웨어를 덮어씌울까 생각했습니다.\n하지만 시리얼 젠더를 따로 주문하고 택배를 기다리는 시간도 걸리고, 당장 오늘 밤에 바로 연동해보고 싶다는 마음이 컸습니다. 굳이 멀쩡한 보드를 분해해서 납땜하는 번거로운 과정을 거치기보다는, 기존 하드웨어를 그대로 유지하면서 소프트웨어적으로 제어권을 가져오는 무납땜 방식을 시도해 보기로 했습니다.\n2차 시도: APK Reverse Engineering과 히든 API 발견 우선 구해낸 애터미 스마트홈 안드로이드 앱 APK 파일을 JADX 디컴파일러를 활용하여 앱 내부의 통신 로직을 Reverse Engineering해 보았습니다.\n소스코드를 분석해 보니 공기청정기 내부 칩셋은 Tuya계열 ESP8266을 사용하고 있었습니다.\n기기의 Wi-Fi 버튼을 길게 눌러 SoftAP 모드(Atomy_Air_Purifier)로 전환하면, 기기 내부 HTTP 웹서버(192.168.4.1:789)가 열리며 다음과 같은 숨겨진 RESTful Provisioning API 3개가 작동한다는 것을 발견했습니다.\n1. MQTT Broker 주소 지정: http://192.168.4.1:789/setbroker?url=[HA_IP]\u0026amp;port=1885 2. 집 Wi-Fi 정보 주입: http://192.168.4.1:789/provision?ssid=[SSID]\u0026amp;passwd=[PW] 3. Provisioning 완료 명령: http://192.168.4.1:789/endprovision 이 히든 API들을 이용하면 굳이 분해나 납땜을 하지 않고도, 이미 서버가 닫혀버린 애터미 자사 서버 대신 저희 집 내부의 Home Assistant OS IP로 MQTT Broker 주소를 강제 지정해 줄 수 있었습니다.\n통곡의 벽: ESP8266 비표준 TLS 1.2 Handshake 오류 Broker 주소를 HA OS의 IP로 변경하고 기기를 접속시켜 보았는데, HA의 TLS 릴레이 포트에서 패킷을 받자마자 TLS Handshake가 즉시 실패하면서 접속이 튕겨 나갔습니다.\nSSL3 alert read:fatal:unexpected message (Alert number 10) SSL_accept(): error:0A00006E:SSL routines::bad extension 원인 분석 레거시 Ciphers 요구: ESP8266 칩셋 특성상 구형 Cipher(AES128-SHA256)만 지원합니다. TLS Extension 규격 미준수: ESP8266의 펌웨어 TLS 라이브러리가 ClientHello를 송신할 때 max_fragment_length Extension 옵션을 TLS 표준 규격(1byte)이 아닌 2byte(0x00 0x02)로 송신하고 있었습니다. OpenSSL 3.x의 엄격한 Validation: 최신 Linux 및 HA OS에 탑재된 OpenSSL 3.x 라이브러리는 이를 비표준 비정상 패킷으로 판단하고 즉시 Reject(bad extension)을 던지며 세션을 닫아버리는 것이었습니다. 해결책: OpenSSL 3.6.3 C 소스코드 패치 및 커스텀 Addon 빌드 기기의 펌웨어를 직접 수정할 수는 없었기에, HA OS 측에서 패킷을 받아주는 OpenSSL 라이브러리의 C 소스코드를 직접 다운로드하여 규격 검사 로직을 Bypass하도록 패치하기로 결정했습니다.\nOpenSSL 3.6.3 소스코드의 ssl/statem/extensions_srvr.c 파일 내 tls_parse_ctos_maxfragmentlen 함수 진입부에 조기 정상 승인(return 1;)을 반환하도록 Python 패치 스크립트를 작성하여 적용했습니다.\n# patch.py - OpenSSL TLS Extension Validation Bypass path = \u0026#34;/build/openssl/ssl/statem/extensions_srvr.c\u0026#34; text = open(path).read() idx = text.find(\u0026#34;tls_parse_ctos_maxfragmentlen\u0026#34;) brace = text.find(\u0026#34;{\u0026#34;, idx) # 함수 시작 부분에 조기 return 1; 을 주입하여 규격 검사 Bypass patched = text[:brace+1] + \u0026#34;\\n (void)s; (void)pkt; (void)context; return 1;\\n\u0026#34; + text[brace+1:] open(path, \u0026#34;w\u0026#34;).write(patched) 디버깅 과정에서 openssl s_server를 컨테이너 비대화형 환경에서 테스트할 때 Stdin EOF로 인해 프로세스가 수신 직후 즉시 닫히는 이슈가 있었으나, 파이프 보완 및 socat 정적 컴파일을 통해 안정적인 릴레이 바이너리를 생성했습니다.\n이 패치된 OpenSSL을 기반으로 Alpine Linux 환경에서 커스텀 Addon(local_atomy_bridge) Docker 이미지를 새로 빌드했습니다.\n최종 통신 아키텍처는 다음과 같습니다:\n[공기청정기] --(TLS 1.2 / Port 1885)--\u0026gt; [socat TLS Decryptor] --(Plaintext MQTT / Port 11883)--\u0026gt; [Local Mosquitto] --(Bridge)--\u0026gt; [HA Core]\n프로토콜 반전: 1분 주기 수치 요청(Polling) 자동화의 발견 통신이 성공한 후 수치가 지속적으로 들어오지 않는 현상이 있어 패킷 구조를 추가 분석해 보았습니다.\n알고 보니 이 공기청정기는 센서 수치를 자발적으로 끊임없이 수신하는 스트리밍 방식이 아니라, 앱에서 요청 패킷을 쏘아줄 때만 측정값을 응답하는 \u0026lsquo;요청-응답 폴링(Polling)\u0026rsquo; 아키텍처를 가지고 있었습니다.\n따라서 1분마다 aircleaner/app/[MAC] 토픽으로 '{\u0026quot;1\u0026quot;:11}' 데이터 요청 패킷을 수신해 주는 폴링 자동화를 Home Assistant automations.yaml에 등록함으로써, 매분 정각 실시간으로 온습도(27.1°C, 68.1%) 및 센서 데이터가 완전하게 수신되는 것을 확인했습니다.\n(참고: PM2.5 센서의 경우 물리 모듈을 제외해 둔 상태여서 0 수치가 정상이 들어오는 것이 확인되었으며, 추후 샤오미 호환 레이저 PM2.5 모듈로 교체 시 즉시 실제 미세먼지 수치가 연동되는 구조입니다.)\n최종 구성 코드 (configuration.yaml \u0026amp; automations.yaml) 1. configuration.yaml (MQTT 엔티티 정의) mqtt: fan: - name: \u0026#34;Atomy Air Purifier\u0026#34; unique_id: atomy_air_purifier_fan state_topic: \u0026#34;aircleaner/device/A1B2C3D4E5F6\u0026#34; command_topic: \u0026#34;aircleaner/app/A1B2C3D4E5F6\u0026#34; value_template: \u0026#34;{{ \u0026#39;POWER_ON\u0026#39; if value_json[\u0026#39;2\u0026#39;] == 1 else \u0026#39;POWER_OFF\u0026#39; }}\u0026#34; payload_on: \u0026#39;{\u0026#34;1\u0026#34;:2,\u0026#34;2\u0026#34;:1}\u0026#39; payload_off: \u0026#39;{\u0026#34;1\u0026#34;:2,\u0026#34;2\u0026#34;:2}\u0026#39; sensor: - name: \u0026#34;Atomy PM25\u0026#34; unique_id: atomy_pm25 state_topic: \u0026#34;aircleaner/device/A1B2C3D4E5F6\u0026#34; value_template: \u0026#34;{{ value_json[\u0026#39;3\u0026#39;] if value_json[\u0026#39;3\u0026#39;] is defined else states(\u0026#39;sensor.atomy_pm25\u0026#39;) }}\u0026#34; unit_of_measurement: \u0026#34;µg/m³\u0026#34; device_class: pm25 - name: \u0026#34;Atomy Temperature\u0026#34; unique_id: atomy_temperature state_topic: \u0026#34;aircleaner/device/A1B2C3D4E5F6\u0026#34; value_template: \u0026#34;{{ value_json[\u0026#39;4\u0026#39;] if value_json[\u0026#39;4\u0026#39;] is defined else states(\u0026#39;sensor.atomy_temperature\u0026#39;) }}\u0026#34; unit_of_measurement: \u0026#34;°C\u0026#34; device_class: temperature - name: \u0026#34;Atomy Humidity\u0026#34; unique_id: atomy_humidity state_topic: \u0026#34;aircleaner/device/A1B2C3D4E5F6\u0026#34; value_template: \u0026#34;{{ value_json[\u0026#39;5\u0026#39;] if value_json[\u0026#39;5\u0026#39;] is defined else states(\u0026#39;sensor.atomy_humidity\u0026#39;) }}\u0026#34; unit_of_measurement: \u0026#34;%\u0026#34; device_class: humidity 2. automations.yaml (1분 센서 폴링 자동화) - id: \u0026#34;atomy_air_purifier_poll_sensors\u0026#34; alias: \u0026#34;Atomy Air Purifier - Poll Sensor State\u0026#34; description: \u0026#34;Requests sensor readings from the Atomy air purifier every minute\u0026#34; trigger: - platform: time_pattern minutes: \u0026#34;/1\u0026#34; action: - service: mqtt.publish data: topic: \u0026#34;aircleaner/app/A1B2C3D4E5F6\u0026#34; payload: \u0026#39;{\u0026#34;1\u0026#34;:11}\u0026#39; mode: single 최종 연동 성공 및 Entities 구성 패치된 Addon이 정상 구동된 상태에서 SoftAP Provisioning을 다시 진행하자, 마침내 TLS Handshake가 완전하게 통과되었습니다.\n1786000700: New connection from 127.0.0.1:58980 on port 11883. 2026/08/06 07:18:20 socat[9] N SSL connection using AES128-SHA256 1786000700: New client connected from 127.0.0.1 as Client-XXXXXXXXXXXX (p2, c1, k60, u\u0026#39;atomy_bridge\u0026#39;). 2026/08/06 07:18:20 socat[9] N write(6, 0x7f1497d0e000, 81) completed 2026/08/06 07:19:05 socat[9] N write(6, 0x7f1497d0e000, 2) completed (PINGREQ Keepalive) 로그를 보면 클라이언트명으로 Keepalive 60초(k60) 세션이 안정적으로 수립되었으며, 45초 간격으로 PINGREQ/PINGRESP 패킷을 주고받으며 끊김 없이 실시간 Payload 수신 및 제어가 가능해졌습니다.\n구성 완료된 Home Assistant Entities (Clean English IDs) fan.atomy_air_purifier: 전원(ON/OFF) 및 풍량 모드 (Auto / Sleep / Low / Medium / High) sensor.atomy_pm25: PM2.5 미세먼지 측정값 (µg/m³) sensor.atomy_temperature: 실내 온도 (°C) sensor.atomy_humidity: 실내 습도 (%) sensor.atomy_air_quality: 종합 공기질 상태 switch.atomy_child_lock: Child Lock 스위치 마무리 소감 앱 개발사의 폐업으로 스마트 기능이 완전히 죽어버렸던 기기였지만, 굳이 부속을 따로 사서 납땜하거나 분해하는 번거로움 없이 APK Reverse Engineering과 C 소스 수준의 OpenSSL 패치로 Home Assistant 로컬 기기로 완벽하게 부활시킬 수 있었습니다.\n비록 이틀 정도 시간 소요했지만 HA로 잘 동작하는 걸 보고 있으니 뿌듯하군요 하하\n다른 분들도 혹시 앱 서비스가 종료되어 사용하지 못하고 계신 구형 IoT 기기가 있다면, 위와 같은 방식으로 접근해 보시는 것을 추천해 드립니다. HA 애드온 리포지터리 패키지도 만들어 두었으니 필요하신 분들은 활용해 보셔도 좋을 것 같습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 (새창열림)\n","permalink":"https://blog.sobamemil.com/posts/195-ha-diy-%EC%95%A0%ED%84%B0%EB%AF%B8-%EA%B3%B5%EA%B8%B0%EC%B2%AD%EC%A0%95%EA%B8%B0-home-assistant-%EB%A1%9C%EC%BB%AC-%EC%97%B0%EB%8F%99-%EB%B0%A9%EB%B2%95-tuya-esp8/","summary":"\u003ch1 id=\"폐업으로-버려진-애터미-공기청정기-home-assistant-로컬-연동-성공기-tuya-esp8266-tls-패치-및-우회\"\u003e폐업으로 버려진 애터미 공기청정기 Home Assistant 로컬 연동 성공기 (Tuya ESP8266 TLS 패치 및 우회)\u003c/h1\u003e\n\u003cp\u003e부모님 댁에 보관되어 있던 애터미 공기청정기를 집으로 가져왔습니다. 필터 상태나 하드웨어 자체의 공기 청정 성능은 상당히 괜찮은 편이라 스마트홈에 붙여서 자동화로 활용해 보려고 했습니다.\u003c/p\u003e\n\u003cp\u003e그런데 전용 앱 접속이 전혀 되지 않아서 애터미 고객센터에 문의해 보니, **\u0026ldquo;해당 앱 개발 및 서버 관리를 담당하던 외주 업체가 폐업하여 더 이상 서비스 지원이 불가능하다\u0026rdquo;**는 답변을 받았습니다. 확인해 보니 이미 iOS 앱스토어에서는 관련 앱이 완전히 내려간 상태였습니다. (안드로이드용 APK 파일만 인터넷에서 겨우 구할 수 있는 수준이었습니다.)\u003c/p\u003e","title":"[HA / DIY] 애터미 공기청정기 Home Assistant 로컬 연동 방법 (Tuya ESP8266 TLS 패치 및 우회)"},{"content":"부모님 댁에 보관되어 있던 애터미 공기청정기를 집으로 가져왔습니다. 필터 상태나 하드웨어 자체의 공기 청정 성능은 상당히 괜찮은 편이라 스마트홈에 붙여서 자동화로 활용해 보려고 했습니다.\n그런데 전용 앱 접속이 전혀 되지 않아서 애터미 고객센터에 문의해 보니, **\u0026ldquo;해당 앱 개발 및 서버 관리를 담당하던 외주 업체가 폐업하여 더 이상 서비스 지원이 불가능하다\u0026rdquo;**는 답변을 받았습니다. 확인해 보니 이미 iOS 앱스토어에서는 관련 앱이 완전히 내려간 상태였습니다. (안드로이드용 APK 파일만 인터넷에서 겨우 구할 수 있는 수준이었습니다.)\n멀쩡한 하드웨어를 이대로 방치하거나 버리기엔 너무 아까워서, 아예 순정 클라우드를 끊어버리고 Home Assistant(HA)에 완전히 로컬 방식으로 연동하여 부활시켜 보기로 했습니다. 한 이틀 동안 삽질한 끝에 연동에 성공한 과정을 정리해 둡니다.\n1차 시도: 하드웨어 개조(UART 납땜) 대신 소프트웨어 우회를 선택한 이유 처음에는 기기를 분해해서 메인보드의 **UART 시리얼 통신 핀(TX/RX/GND/3V3)**에 USB-to-TTL 젠더를 물리고 납땜해서 ESPHome이나 Tasmota 같은 커스텀 펌웨어를 덮어씌울까 생각했습니다.\n하지만 시리얼 젠더를 따로 주문하고 택배를 기다리는 시간도 걸리고, 당장 오늘 밤에 바로 연동해보고 싶다는 마음이 컸습니다. 굳이 멀쩡한 보드를 분해해서 납땜하는 번거로운 과정을 거치기보다는, 기존 하드웨어를 그대로 유지하면서 소프트웨어적으로 제어권을 가져오는 무납땜 방식을 시도해 보기로 했습니다.\n2차 시도: APK Reverse Engineering과 히든 API 발견 우선 구해낸 애터미 스마트홈 안드로이드 앱 APK 파일을 JADX 디컴파일러를 활용하여 앱 내부의 통신 로직을 Reverse Engineering해 보았습니다.\n소스코드를 분석해 보니 공기청정기 내부 칩셋은 Tuya계열 ESP8266을 사용하고 있었습니다.\n기기의 Wi-Fi 버튼을 길게 눌러 SoftAP 모드(Atomy_Air_Purifier)로 전환하면, 기기 내부 HTTP 웹서버(192.168.4.1:789)가 열리며 다음과 같은 숨겨진 RESTful Provisioning API 3개가 작동한다는 것을 발견했습니다.\n1. MQTT Broker 주소 지정: http://192.168.4.1:789/setbroker?url=[HA_IP]\u0026amp;port=1885 2. 집 Wi-Fi 정보 주입: http://192.168.4.1:789/provision?ssid=[SSID]\u0026amp;passwd=[PW] 3. Provisioning 완료 명령: http://192.168.4.1:789/endprovision 이 히든 API들을 이용하면 굳이 분해나 납땜을 하지 않고도, 이미 서버가 닫혀버린 애터미 자사 서버 대신 저희 집 내부의 Home Assistant OS IP로 MQTT Broker 주소를 강제 지정해 줄 수 있었습니다.\n통곡의 벽: ESP8266 비표준 TLS 1.2 Handshake 오류 Broker 주소를 HA OS의 IP로 변경하고 기기를 접속시켜 보았는데, HA의 TLS 릴레이 포트에서 패킷을 받자마자 TLS Handshake가 즉시 실패하면서 접속이 튕겨 나갔습니다.\nSSL3 alert read:fatal:unexpected message (Alert number 10) SSL_accept(): error:0A00006E:SSL routines::bad extension 원인 분석 레거시 Ciphers 요구: ESP8266 칩셋 특성상 구형 Cipher(AES128-SHA256)만 지원합니다. TLS Extension 규격 미준수: ESP8266의 펌웨어 TLS 라이브러리가 ClientHello를 송신할 때 max_fragment_length Extension 옵션을 TLS 표준 규격(1byte)이 아닌 2byte(0x00 0x02)로 송신하고 있었습니다. OpenSSL 3.x의 엄격한 Validation: 최신 Linux 및 HA OS에 탑재된 OpenSSL 3.x 라이브러리는 이를 비표준 비정상 패킷으로 판단하고 즉시 Reject(bad extension)을 던지며 세션을 닫아버리는 것이었습니다. 해결책: OpenSSL 3.6.3 C 소스코드 패치 및 커스텀 Addon 빌드 기기의 펌웨어를 직접 수정할 수는 없었기에, HA OS 측에서 패킷을 받아주는 OpenSSL 라이브러리의 C 소스코드를 직접 다운로드하여 규격 검사 로직을 Bypass하도록 패치하기로 결정했습니다.\nOpenSSL 3.6.3 소스코드의 ssl/statem/extensions_srvr.c 파일 내 tls_parse_ctos_maxfragmentlen 함수 진입부에 조기 정상 승인(return 1;)을 반환하도록 Python 패치 스크립트를 작성하여 적용했습니다.\n# patch.py - OpenSSL TLS Extension Validation Bypass path = \u0026#34;/build/openssl/ssl/statem/extensions_srvr.c\u0026#34; text = open(path).read() idx = text.find(\u0026#34;tls_parse_ctos_maxfragmentlen\u0026#34;) brace = text.find(\u0026#34;{\u0026#34;, idx) # 함수 시작 부분에 조기 return 1; 을 주입하여 규격 검사 Bypass patched = text[:brace+1] + \u0026#34;\\n (void)s; (void)pkt; (void)context; return 1;\\n\u0026#34; + text[brace+1:] open(path, \u0026#34;w\u0026#34;).write(patched) 프로토콜 반전: 1분 주기 수치 요청(Polling) 자동화의 발견 통신이 성공한 후 수치가 지속적으로 들어오지 않는 현상이 있어 패킷 구조를 추가 분석해 보았습니다.\n알고 보니 이 공기청정기는 센서 수치를 자발적으로 끊임없이 수신하는 스트리밍 방식이 아니라, 앱에서 요청 패킷을 쏘아줄 때만 측정값을 응답하는 \u0026lsquo;요청-응답 폴링(Polling)\u0026rsquo; 아키텍처를 가지고 있었습니다.\n따라서 1분마다 aircleaner/app/[MAC] 토픽으로 '{\u0026quot;1\u0026quot;:11}' 데이터 요청 패킷을 수신해 주는 폴링 자동화를 Home Assistant automations.yaml에 등록함으로써, 매분 정각 실시간으로 온습도(27.1°C, 68.1%) 및 센서 데이터가 완전하게 수신되는 것을 확인했습니다.\n(참고: PM2.5 센서의 경우 물리 모듈을 제외해 둔 상태여서 0 수치가 정상이 들어오는 것이 확인되었으며, 추후 샤오미 호환 레이저 PM2.5 모듈로 교체 시 즉시 실제 미세먼지 수치가 연동되는 구조입니다.)\n최종 구성 코드 (configuration.yaml \u0026amp; automations.yaml) 실제 기기 통신을 캡처해서 얻은 진짜 페이로드 구조를 앱 소스코드(AppDataFrame.Key 상수)와 대조해 맞춘, 실제로 동작을 검증한 설정입니다.\n1. configuration.yaml (MQTT 엔티티 정의) (주의: A1B2C3D4E5F6 자리에 본인 공기청정기의 MAC 주소를 입력하세요)\nmqtt: fan: - name: \u0026#34;Atomy Air Purifier\u0026#34; unique_id: atomy_air_purifier state_topic: \u0026#34;aircleaner/device/A1B2C3D4E5F6\u0026#34; command_topic: \u0026#34;aircleaner/app/A1B2C3D4E5F6\u0026#34; command_template: \u0026gt;- {% if value == \u0026#34;ON\u0026#34; %}{\u0026#34;1\u0026#34;:2,\u0026#34;2\u0026#34;:2} {% elif value == \u0026#34;OFF\u0026#34; %}{\u0026#34;1\u0026#34;:2,\u0026#34;2\u0026#34;:1} {% endif %} payload_on: \u0026#34;ON\u0026#34; payload_off: \u0026#34;OFF\u0026#34; state_value_template: \u0026gt;- {% set power = value_json.get(\u0026#39;2\u0026#39;) or (value_json.get(\u0026#39;19\u0026#39;, {}).get(\u0026#39;2\u0026#39;)) %} {% if power == 2 %}ON{% elif power == 1 %}OFF{% else %}OFF{% endif %} preset_modes: - \u0026#34;Auto\u0026#34; - \u0026#34;Sleep\u0026#34; - \u0026#34;Low\u0026#34; - \u0026#34;Medium\u0026#34; - \u0026#34;High\u0026#34; preset_mode_state_topic: \u0026#34;aircleaner/device/A1B2C3D4E5F6\u0026#34; preset_mode_value_template: \u0026gt;- {% set mode = value_json.get(\u0026#39;3\u0026#39;) or (value_json.get(\u0026#39;19\u0026#39;, {}).get(\u0026#39;3\u0026#39;)) %} {% if mode == 1 %}Auto {% elif mode == 2 %}Sleep {% elif mode == 3 %}Low {% elif mode == 4 %}Medium {% elif mode == 5 %}High {% else %}Auto{% endif %} preset_mode_command_topic: \u0026#34;aircleaner/app/A1B2C3D4E5F6\u0026#34; preset_mode_command_template: \u0026gt;- {% if value == \u0026#34;Auto\u0026#34; %}{\u0026#34;1\u0026#34;:3,\u0026#34;3\u0026#34;:1} {% elif value == \u0026#34;Sleep\u0026#34; %}{\u0026#34;1\u0026#34;:3,\u0026#34;3\u0026#34;:2} {% elif value == \u0026#34;Low\u0026#34; %}{\u0026#34;1\u0026#34;:3,\u0026#34;3\u0026#34;:3} {% elif value == \u0026#34;Medium\u0026#34; %}{\u0026#34;1\u0026#34;:3,\u0026#34;3\u0026#34;:4} {% elif value == \u0026#34;High\u0026#34; %}{\u0026#34;1\u0026#34;:3,\u0026#34;3\u0026#34;:5} {% endif %} sensor: - name: \u0026#34;Atomy PM2.5\u0026#34; unique_id: atomy_pm25 state_topic: \u0026#34;aircleaner/device/A1B2C3D4E5F6\u0026#34; unit_of_measurement: \u0026#34;µg/m³\u0026#34; device_class: pm25 value_template: \u0026#34;{{ value_json.get(\u0026#39;10\u0026#39;) if value_json.get(\u0026#39;10\u0026#39;) is not none else value_json.get(\u0026#39;20\u0026#39;, {}).get(\u0026#39;10\u0026#39;) }}\u0026#34; - name: \u0026#34;Atomy Temperature\u0026#34; unique_id: atomy_temperature state_topic: \u0026#34;aircleaner/device/A1B2C3D4E5F6\u0026#34; unit_of_measurement: \u0026#34;°C\u0026#34; device_class: temperature value_template: \u0026#34;{{ value_json.get(\u0026#39;13\u0026#39;) if value_json.get(\u0026#39;13\u0026#39;) is not none else value_json.get(\u0026#39;20\u0026#39;, {}).get(\u0026#39;13\u0026#39;) }}\u0026#34; - name: \u0026#34;Atomy Humidity\u0026#34; unique_id: atomy_humidity state_topic: \u0026#34;aircleaner/device/A1B2C3D4E5F6\u0026#34; unit_of_measurement: \u0026#34;%\u0026#34; device_class: humidity value_template: \u0026#34;{{ value_json.get(\u0026#39;14\u0026#39;) if value_json.get(\u0026#39;14\u0026#39;) is not none else value_json.get(\u0026#39;20\u0026#39;, {}).get(\u0026#39;14\u0026#39;) }}\u0026#34; - name: \u0026#34;Atomy Air Quality\u0026#34; unique_id: atomy_air_quality state_topic: \u0026#34;aircleaner/device/A1B2C3D4E5F6\u0026#34; value_template: \u0026gt;- {% set q = value_json.get(\u0026#39;27\u0026#39;) if value_json.get(\u0026#39;27\u0026#39;) is not none else value_json.get(\u0026#39;20\u0026#39;, {}).get(\u0026#39;27\u0026#39;) %} {% if q == 1 %}Good {% elif q == 2 %}Moderate {% elif q == 3 %}Unhealthy {% elif q == 4 %}Hazardous {% else %}Unknown{% endif %} switch: - name: \u0026#34;Atomy Child Lock\u0026#34; unique_id: atomy_child_lock command_topic: \u0026#34;aircleaner/app/A1B2C3D4E5F6\u0026#34; state_topic: \u0026#34;aircleaner/device/A1B2C3D4E5F6\u0026#34; payload_on: \u0026#39;{\u0026#34;1\u0026#34;:7,\u0026#34;7\u0026#34;:2}\u0026#39; payload_off: \u0026#39;{\u0026#34;1\u0026#34;:7,\u0026#34;7\u0026#34;:1}\u0026#39; state_on: \u0026#34;ON\u0026#34; state_off: \u0026#34;OFF\u0026#34; value_template: \u0026gt;- {% set lock = value_json.get(\u0026#39;7\u0026#39;) or value_json.get(\u0026#39;19\u0026#39;, {}).get(\u0026#39;7\u0026#39;) %} {% if lock == 2 %}ON{% else %}OFF{% endif %} 값 필드가 0일 수 있는 센서(PM2.5 등)는 or 대신 is not none 체크를 써야 합니다. Jinja의 or는 0을 \u0026ldquo;값 없음\u0026quot;으로 취급해서 정상적인 0 수치를 놓치는 버그가 있습니다.\n2. automations.yaml (1분 센서 폴링 자동화) 기기는 센서값을 자발적으로 보내지 않고, {\u0026quot;1\u0026quot;:11} (SENSOR_STATE 명령) 요청에만 응답합니다. 그래서 이 폴링 자동화가 없으면 센서 엔티티들은 계속 unknown 상태로 남습니다.\n- id: \u0026#34;atomy_air_purifier_poll_sensors\u0026#34; alias: \u0026#34;Atomy Air Purifier - Poll Sensor State\u0026#34; description: \u0026#34;Requests sensor readings from the Atomy air purifier every minute\u0026#34; trigger: - platform: time_pattern minutes: \u0026#34;/1\u0026#34; action: - service: mqtt.publish data: topic: \u0026#34;aircleaner/app/A1B2C3D4E5F6\u0026#34; payload: \u0026#39;{\u0026#34;1\u0026#34;:11}\u0026#39; mode: single 마무리 소감 앱 개발사의 폐업으로 스마트 기능이 완전히 죽어버렸던 기기였지만, 굳이 부속을 따로 사서 납땜하거나 분해하는 번거로움 없이 APK Reverse Engineering, OpenSSL 소스 패치, 그리고 1분 주기 수치 요청 자동화로 Home Assistant 로컬 기기로 완벽하게 부활시킬 수 있었습니다.\n비록 이틀 정도 시간 소요했지만 HA로 잘 동작하는 걸 보고 있으니 뿌듯하군요 하하.\n","permalink":"https://blog.sobamemil.com/posts/atomy-air-purifier-ha/","summary":"\u003cp\u003e부모님 댁에 보관되어 있던 애터미 공기청정기를 집으로 가져왔습니다. 필터 상태나 하드웨어 자체의 공기 청정 성능은 상당히 괜찮은 편이라 스마트홈에 붙여서 자동화로 활용해 보려고 했습니다.\u003c/p\u003e\n\u003cp\u003e그런데 전용 앱 접속이 전혀 되지 않아서 애터미 고객센터에 문의해 보니, **\u0026ldquo;해당 앱 개발 및 서버 관리를 담당하던 외주 업체가 폐업하여 더 이상 서비스 지원이 불가능하다\u0026rdquo;**는 답변을 받았습니다. 확인해 보니 이미 iOS 앱스토어에서는 관련 앱이 완전히 내려간 상태였습니다. (안드로이드용 APK 파일만 인터넷에서 겨우 구할 수 있는 수준이었습니다.)\u003c/p\u003e","title":"폐업으로 버려진 애터미 공기청정기 Home Assistant 로컬 연동 성공기 (Tuya ESP8266 TLS 패치 및 우회)"},{"content":"문제:\n자연수 n이 입력으로 주어졌을 때 만약 n이 짝수이면 \u0026ldquo;n is even\u0026quot;을, 홀수이면 \u0026ldquo;n is odd\u0026quot;를 출력하는 코드를 작성해 보세요.\nhttps://school.programmers.co.kr/learn/courses/30/lessons/181944\n[프로그래머스\n코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.\nprogrammers.co.kr](https://school.programmers.co.kr/learn/courses/30/lessons/181944)\n제한사항:\n1 ≤ n ≤ 1,000 풀이:\nlet a = Int(readLine()!)! let resultString = a % 2 == 0 ? \u0026#34;\\(a) is even\u0026#34; : \u0026#34;\\(a) is odd\u0026#34; print(resultString) Ternary operator(삼항 연산자) 사용해서 문제를 해결 하였습니다. 입련된 수를 2로 나눈 나머지가 0인지 확인하여 짝수인지 확인할 수 있습니다.\nlet a = Int(readLine()!)! print(a, \u0026#34;is\u0026#34;, a.isMultiple(of: 2) ? \u0026#34;even\u0026#34; : \u0026#34;odd\u0026#34;) 이런 식으로 isMultiple(of:) 함수를 사용해서 홀짝을 판별할 수도 있습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 알고리즘 \u0026amp; 코딩테스트\u0026rsquo; 카테고리의 다른 글 [Swift] 문자열 돌리기 / LV.0, 181945, 프로그래머스 (0) 2023.06.22 [Swift] 문자열 붙여서 출력하기 / LV.0, 181946, 프로그래머스 (0) 2023.06.20 [Swift] 덧셈식 출력하기 / LV.0, 181947, 프로그래머스 (0) 2023.06.20 [Swift] 특수문자 출력하기 / LV.0, 181948, 프로그래머스 (0) 2023.06.19 [Swift] 대소문자 바꿔서 출력하기 / LV.0, 181949, 프로그래머스 (0) 2023.06.19 ","permalink":"https://blog.sobamemil.com/posts/194-swift-%ED%99%80%EC%A7%9D-%EA%B5%AC%EB%B6%84%ED%95%98%EA%B8%B0-lv0-181944-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/","summary":"\u003cp\u003e\u003cstrong\u003e문제:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e자연수 n이 입력으로 주어졌을 때 만약 n이 짝수이면 \u0026ldquo;n is even\u0026quot;을, 홀수이면 \u0026ldquo;n is odd\u0026quot;를 출력하는 코드를 작성해 보세요.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://school.programmers.co.kr/learn/courses/30/lessons/181944\"\u003ehttps://school.programmers.co.kr/learn/courses/30/lessons/181944\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e[프로그래머스\u003c/p\u003e\n\u003cp\u003e코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.\u003c/p\u003e\n\u003cp\u003eprogrammers.co.kr](\u003ca href=\"https://school.programmers.co.kr/learn/courses/30/lessons/181944\"\u003ehttps://school.programmers.co.kr/learn/courses/30/lessons/181944\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e제한사항:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e1 ≤ n ≤ 1,000\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e풀이:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-cpp\" data-lang=\"cpp\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003elet a \u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e Int(readLine()\u003cspan style=\"color:#f92672\"\u003e!\u003c/span\u003e)\u003cspan style=\"color:#f92672\"\u003e!\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003elet resultString \u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e a \u003cspan style=\"color:#f92672\"\u003e%\u003c/span\u003e \u003cspan style=\"color:#ae81ff\"\u003e2\u003c/span\u003e \u003cspan style=\"color:#f92672\"\u003e==\u003c/span\u003e \u003cspan style=\"color:#ae81ff\"\u003e0\u003c/span\u003e \u003cspan style=\"color:#f92672\"\u003e?\u003c/span\u003e \u003cspan style=\"color:#e6db74\"\u003e\u0026#34;\\(a) is even\u0026#34;\u003c/span\u003e \u003cspan style=\"color:#f92672\"\u003e:\u003c/span\u003e \u003cspan style=\"color:#e6db74\"\u003e\u0026#34;\\(a) is odd\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eprint(resultString)\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eTernary operator(삼항 연산자) 사용해서 문제를 해결 하였습니다.  입련된 수를 2로 나눈 나머지가 0인지 확인하여 짝수인지 확인할 수 있습니다.\u003c/p\u003e","title":"[Swift] 홀짝 구분하기 / LV.0, 181944, 프로그래머스"},{"content":"문제:\n문자열 str이 주어집니다.\n문자열을 시계방향으로 90도 돌려서 아래 입출력 예와 같이 출력하는 코드를 작성해 보세요.\nhttps://school.programmers.co.kr/learn/courses/30/lessons/181945\n[프로그래머스\n코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.\nprogrammers.co.kr](https://school.programmers.co.kr/learn/courses/30/lessons/181945)\n제한사항:\n1 ≤ str의 길이 ≤ 10 풀이:\nreadLine()?.forEach { print($0) } 가로로 제시된 문자열을 세로로 하나씩 출력하면 되는 문제입니다.\n문자열을 하나하나 순회하며 출력해주면 됩니다.\n저는 forEach 문법을 사용해서 문자열을 하나씩 출력해 주었습니다.\n아직 Swift 문법이 어색하다면 아래와 같이 for in 문을 사용하여 해결할 수도 있습니다.\nlet line = readLine()! for character in line { print(character) } 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 알고리즘 \u0026amp; 코딩테스트\u0026rsquo; 카테고리의 다른 글 [Swift] 홀짝 구분하기 / LV.0, 181944, 프로그래머스 (0) 2023.06.29 [Swift] 문자열 붙여서 출력하기 / LV.0, 181946, 프로그래머스 (0) 2023.06.20 [Swift] 덧셈식 출력하기 / LV.0, 181947, 프로그래머스 (0) 2023.06.20 [Swift] 특수문자 출력하기 / LV.0, 181948, 프로그래머스 (0) 2023.06.19 [Swift] 대소문자 바꿔서 출력하기 / LV.0, 181949, 프로그래머스 (0) 2023.06.19 ","permalink":"https://blog.sobamemil.com/posts/193-swift-%EB%AC%B8%EC%9E%90%EC%97%B4-%EB%8F%8C%EB%A6%AC%EA%B8%B0-lv0-181945-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/","summary":"\u003cp\u003e\u003cstrong\u003e문제:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e문자열 str이 주어집니다.\u003c/p\u003e\n\u003cp\u003e문자열을 시계방향으로 90도 돌려서 아래 입출력 예와 같이 출력하는 코드를 작성해 보세요.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://school.programmers.co.kr/learn/courses/30/lessons/181945\"\u003ehttps://school.programmers.co.kr/learn/courses/30/lessons/181945\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e[프로그래머스\u003c/p\u003e\n\u003cp\u003e코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.\u003c/p\u003e\n\u003cp\u003eprogrammers.co.kr](\u003ca href=\"https://school.programmers.co.kr/learn/courses/30/lessons/181945\"\u003ehttps://school.programmers.co.kr/learn/courses/30/lessons/181945\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e제한사항:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e1 ≤ str의 길이 ≤ 10\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e풀이:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-cpp\" data-lang=\"cpp\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ereadLine()\u003cspan style=\"color:#f92672\"\u003e?\u003c/span\u003e.forEach { print(\u003cspan style=\"color:#960050;background-color:#1e0010\"\u003e$\u003c/span\u003e\u003cspan style=\"color:#ae81ff\"\u003e0\u003c/span\u003e) }\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e가로로 제시된 문자열을 세로로 하나씩 출력하면 되는 문제입니다.\u003c/p\u003e\n\u003cp\u003e문자열을 하나하나 순회하며 출력해주면 됩니다.\u003c/p\u003e\n\u003cp\u003e저는 forEach 문법을 사용해서 문자열을 하나씩 출력해 주었습니다.\u003c/p\u003e","title":"[Swift] 문자열 돌리기 / LV.0, 181945, 프로그래머스"},{"content":"문제:\n두 개의 문자열 str1, str2가 공백으로 구분되어 입력으로 주어집니다.\n입출력 예와 같이 str1과 str2을 이어서 출력하는 코드를 작성해 보세요.\nhttps://school.programmers.co.kr/learn/courses/30/lessons/181946\n[프로그래머스\n코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.\nprogrammers.co.kr](https://school.programmers.co.kr/learn/courses/30/lessons/181946)\n제한사항:\n1 ≤ str1, str2의 길이 ≤ 10 풀이:\nprint(readLine()!.components(separatedBy: [\u0026#34; \u0026#34;]).joined().replacingOccurrences(of: \u0026#34; \u0026#34;, with: \u0026#34;\u0026#34;)) 두 문자열 사이의 공백을 제거하고 출력하면 되는 문제입니다. 방법은 아주 많겠지만 한 줄로 해결해 보았습니다.\nswift에서는 replacingOccurrences(of:with:)를 사용해서 of 위치의 문자열을 with 문자열로 쉽게 변경할 수 있습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 알고리즘 \u0026amp; 코딩테스트\u0026rsquo; 카테고리의 다른 글 [Swift] 홀짝 구분하기 / LV.0, 181944, 프로그래머스 (0) 2023.06.29 [Swift] 문자열 돌리기 / LV.0, 181945, 프로그래머스 (0) 2023.06.22 [Swift] 덧셈식 출력하기 / LV.0, 181947, 프로그래머스 (0) 2023.06.20 [Swift] 특수문자 출력하기 / LV.0, 181948, 프로그래머스 (0) 2023.06.19 [Swift] 대소문자 바꿔서 출력하기 / LV.0, 181949, 프로그래머스 (0) 2023.06.19 ","permalink":"https://blog.sobamemil.com/posts/192-swift-%EB%AC%B8%EC%9E%90%EC%97%B4-%EB%B6%99%EC%97%AC%EC%84%9C-%EC%B6%9C%EB%A0%A5%ED%95%98%EA%B8%B0-lv0-181946-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/","summary":"\u003cp\u003e\u003cstrong\u003e문제:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e두 개의 문자열 str1, str2가 공백으로 구분되어 입력으로 주어집니다.\u003cbr\u003e\n입출력 예와 같이 str1과 str2을 이어서 출력하는 코드를 작성해 보세요.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://school.programmers.co.kr/learn/courses/30/lessons/181946\"\u003ehttps://school.programmers.co.kr/learn/courses/30/lessons/181946\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e[프로그래머스\u003c/p\u003e\n\u003cp\u003e코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.\u003c/p\u003e\n\u003cp\u003eprogrammers.co.kr](\u003ca href=\"https://school.programmers.co.kr/learn/courses/30/lessons/181946\"\u003ehttps://school.programmers.co.kr/learn/courses/30/lessons/181946\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e제한사항:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e1 ≤ str1, str2의 길이 ≤ 10\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e풀이:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-cpp\" data-lang=\"cpp\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eprint(readLine()\u003cspan style=\"color:#f92672\"\u003e!\u003c/span\u003e.components(separatedBy: [\u003cspan style=\"color:#e6db74\"\u003e\u0026#34; \u0026#34;\u003c/span\u003e]).joined().replacingOccurrences(of: \u003cspan style=\"color:#e6db74\"\u003e\u0026#34; \u0026#34;\u003c/span\u003e, with: \u003cspan style=\"color:#e6db74\"\u003e\u0026#34;\u0026#34;\u003c/span\u003e))\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e두 문자열 사이의 공백을 제거하고 출력하면 되는 문제입니다. 방법은 아주 많겠지만 한 줄로 해결해 보았습니다.\u003c/p\u003e","title":"[Swift] 문자열 붙여서 출력하기 / LV.0, 181946, 프로그래머스"},{"content":"문제:\n두 정수 a, b가 주어질 때 다음과 같은 형태의 계산식을 출력하는 코드를 작성해 보세요.\na + b = c https://school.programmers.co.kr/learn/courses/30/lessons/181947\n[프로그래머스\n코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.\nprogrammers.co.kr](https://school.programmers.co.kr/learn/courses/30/lessons/181947)\n제한사항:\n1 ≤ a, b ≤ 100 풀이:\nlet n = readLine()!.components(separatedBy: [\u0026#34; \u0026#34;]).map { Int($0)! } let (a, b) = (n[0], n[1]) let result = a + b print(\u0026#34;\\(a) + \\(b) = \\(result)\u0026#34;) // 또는 // print(a, \u0026#34;+\u0026#34;, b, \u0026#34;=\u0026#34;, a + b) 문자열을 포맷에 맞춰 출력하는 문제입니다. 문자열에 직접 ()을 사용해서 변수를 출력할 수도 있고, 아래 주석처럼 콤마(,)로 나눠서 출력할 수도 있습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 알고리즘 \u0026amp; 코딩테스트\u0026rsquo; 카테고리의 다른 글 [Swift] 문자열 돌리기 / LV.0, 181945, 프로그래머스 (0) 2023.06.22 [Swift] 문자열 붙여서 출력하기 / LV.0, 181946, 프로그래머스 (0) 2023.06.20 [Swift] 특수문자 출력하기 / LV.0, 181948, 프로그래머스 (0) 2023.06.19 [Swift] 대소문자 바꿔서 출력하기 / LV.0, 181949, 프로그래머스 (0) 2023.06.19 [Swift] 문자열 반복해서 출력하기 / LV.0, 181950, 프로그래머스 (0) 2023.06.19 ","permalink":"https://blog.sobamemil.com/posts/191-swift-%EB%8D%A7%EC%85%88%EC%8B%9D-%EC%B6%9C%EB%A0%A5%ED%95%98%EA%B8%B0-lv0-181947-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/","summary":"\u003cp\u003e\u003cstrong\u003e문제:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e두 정수 a, b가 주어질 때 다음과 같은 형태의 계산식을 출력하는 코드를 작성해 보세요.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-cpp\" data-lang=\"cpp\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ea \u003cspan style=\"color:#f92672\"\u003e+\u003c/span\u003e b \u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e c\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e\u003ca href=\"https://school.programmers.co.kr/learn/courses/30/lessons/181947\"\u003ehttps://school.programmers.co.kr/learn/courses/30/lessons/181947\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e[프로그래머스\u003c/p\u003e\n\u003cp\u003e코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.\u003c/p\u003e\n\u003cp\u003eprogrammers.co.kr](\u003ca href=\"https://school.programmers.co.kr/learn/courses/30/lessons/181947\"\u003ehttps://school.programmers.co.kr/learn/courses/30/lessons/181947\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e제한사항:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e1 ≤ a, b ≤ 100\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e풀이:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-cpp\" data-lang=\"cpp\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003elet n \u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e readLine()\u003cspan style=\"color:#f92672\"\u003e!\u003c/span\u003e.components(separatedBy: [\u003cspan style=\"color:#e6db74\"\u003e\u0026#34; \u0026#34;\u003c/span\u003e]).map { Int(\u003cspan style=\"color:#960050;background-color:#1e0010\"\u003e$\u003c/span\u003e\u003cspan style=\"color:#ae81ff\"\u003e0\u003c/span\u003e)\u003cspan style=\"color:#f92672\"\u003e!\u003c/span\u003e }\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003elet (a, b) \u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e (n[\u003cspan style=\"color:#ae81ff\"\u003e0\u003c/span\u003e], n[\u003cspan style=\"color:#ae81ff\"\u003e1\u003c/span\u003e])\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003elet result \u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e a \u003cspan style=\"color:#f92672\"\u003e+\u003c/span\u003e b\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eprint(\u003cspan style=\"color:#e6db74\"\u003e\u0026#34;\\(a) + \\(b) = \\(result)\u0026#34;\u003c/span\u003e)\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#75715e\"\u003e// 또는 \n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#75715e\"\u003e// print(a, \u0026#34;+\u0026#34;, b, \u0026#34;=\u0026#34;, a + b)\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e문자열을 포맷에 맞춰 출력하는 문제입니다. 문자열에 직접 ()을 사용해서 변수를 출력할 수도 있고, 아래 주석처럼 콤마(,)로 나눠서 출력할 수도 있습니다.\u003c/p\u003e","title":"[Swift] 덧셈식 출력하기 / LV.0, 181947, 프로그래머스"},{"content":"문제:\n다음과 같이 출력하도록 코드를 작성해 주세요.\n!@#$%^\u0026amp;*(\\\u0026#39;\u0026#34;\u0026lt;\u0026gt;?:; https://school.programmers.co.kr/learn/courses/30/lessons/181948\n[프로그래머스\n코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.\nprogrammers.co.kr](https://school.programmers.co.kr/learn/courses/30/lessons/181948)\n풀이:\nprint(#\u0026#34;!@#$%^\u0026amp;*(\\\u0026#39;\u0026#34;\u0026lt;\u0026gt;?:;\u0026#34;#) // 또는 // print(\u0026#34;!@#$%^\u0026amp;*(\\\\\u0026#39;\\\u0026#34;\u0026lt;\u0026gt;?:;\u0026#34;) swift에서는 특수문자를 출력하는 데 여러 방법이 있습니다.\n그 중 문자열 앞 뒤로 # 을 사용하면 특수문자를 그대로 출력합니다.\n또는 아래 주석처럼 \\ 이나 \u0026quot; 처럼 이미 키워드로 사용하고 있는 특수문자들은 앞에 \\ 를 하나 붙여주면 특수문자가 문자열 그대로 출력됩니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 알고리즘 \u0026amp; 코딩테스트\u0026rsquo; 카테고리의 다른 글 [Swift] 문자열 붙여서 출력하기 / LV.0, 181946, 프로그래머스 (0) 2023.06.20 [Swift] 덧셈식 출력하기 / LV.0, 181947, 프로그래머스 (0) 2023.06.20 [Swift] 대소문자 바꿔서 출력하기 / LV.0, 181949, 프로그래머스 (0) 2023.06.19 [Swift] 문자열 반복해서 출력하기 / LV.0, 181950, 프로그래머스 (0) 2023.06.19 [Swift] a와 b 출력하기 / LV.0, 181951, 프로그래머스 (0) 2023.06.18 ","permalink":"https://blog.sobamemil.com/posts/190-swift-%ED%8A%B9%EC%88%98%EB%AC%B8%EC%9E%90-%EC%B6%9C%EB%A0%A5%ED%95%98%EA%B8%B0-lv0-181948-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/","summary":"\u003cp\u003e\u003cstrong\u003e문제:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e다음과 같이 출력하도록 코드를 작성해 주세요.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-cpp\" data-lang=\"cpp\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#f92672\"\u003e!\u003c/span\u003e\u003cspan style=\"color:#960050;background-color:#1e0010\"\u003e@#$\u003c/span\u003e\u003cspan style=\"color:#f92672\"\u003e%^\u0026amp;*\u003c/span\u003e(\u003cspan style=\"color:#960050;background-color:#1e0010\"\u003e\\\u0026#39;\u003c/span\u003e\u003cspan style=\"color:#e6db74\"\u003e\u0026#34;\u0026lt;\u0026gt;?:;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e\u003ca href=\"https://school.programmers.co.kr/learn/courses/30/lessons/181948\"\u003ehttps://school.programmers.co.kr/learn/courses/30/lessons/181948\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e[프로그래머스\u003c/p\u003e\n\u003cp\u003e코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.\u003c/p\u003e\n\u003cp\u003eprogrammers.co.kr](\u003ca href=\"https://school.programmers.co.kr/learn/courses/30/lessons/181948\"\u003ehttps://school.programmers.co.kr/learn/courses/30/lessons/181948\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e풀이:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-cpp\" data-lang=\"cpp\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eprint(\u003cspan style=\"color:#960050;background-color:#1e0010\"\u003e#\u003c/span\u003e\u003cspan style=\"color:#e6db74\"\u003e\u0026#34;!@#$%^\u0026amp;*(\u003c/span\u003e\u003cspan style=\"color:#ae81ff\"\u003e\\\u0026#39;\u003c/span\u003e\u003cspan style=\"color:#e6db74\"\u003e\u0026#34;\u003c/span\u003e\u003cspan style=\"color:#f92672\"\u003e\u0026lt;\u0026gt;?:\u003c/span\u003e;\u003cspan style=\"color:#e6db74\"\u003e\u0026#34;#)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#75715e\"\u003e// 또는\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#75715e\"\u003e// print(\u0026#34;!@#$%^\u0026amp;*(\\\\\u0026#39;\\\u0026#34;\u0026lt;\u0026gt;?:;\u0026#34;)\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eswift에서는 특수문자를 출력하는 데 여러 방법이 있습니다.\u003c/p\u003e\n\u003cp\u003e그 중 문자열 앞 뒤로 # 을 사용하면 특수문자를 그대로 출력합니다.\u003c/p\u003e\n\u003cp\u003e또는 아래 주석처럼 \\ 이나 \u0026quot; 처럼 이미 키워드로 사용하고 있는 특수문자들은 앞에 \\ 를 하나 붙여주면 특수문자가 문자열 그대로 출력됩니다.\u003c/p\u003e","title":"[Swift] 특수문자 출력하기 / LV.0, 181948, 프로그래머스"},{"content":"문제:\n영어 알파벳으로 이루어진 문자열 str이 주어집니다.\n각 알파벳을 대문자는 소문자로 소문자는 대문자로 변환해서 출력하는 코드를 작성해 보세요.\nhttps://school.programmers.co.kr/learn/courses/30/lessons/181949\n[프로그래머스\n코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.\nprogrammers.co.kr](https://school.programmers.co.kr/learn/courses/30/lessons/181949)\n제한사항:\n1 ≤ str의 길이 ≤ 20 str은 알파벳으로 이루어진 문자열입니다. 풀이:\nlet line = readLine()! let resultString = line.map { character in if character.isLowercase { return character.uppercased() } else { return character.lowercased() } }.joined() print(resultString) // 또는 // print(readLine()?.map { $0.isLowercase ? $0.uppercased() : $0.lowercased() }.joined() ?? \u0026#34;\u0026#34;) 입력 받은 각 문자 하나하나가 대문자인지 소문자인지 판단해서 반대로 출력하면 되는 문제입니다.\n고차함수 map을 사용해서 character를 하나하나 확인하여 소문자라면 대문자를, 대문자라면 소문자를 돌려주도록 하여 [String] 타입의 배열을 만들고, joined() 함수를 사용하여 String으로 만들어 주었습니다.\n아래 주석에는 ternary를 사용하여 한 줄로 문제를 풀 수 있는 방법도 제시해 두었습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 알고리즘 \u0026amp; 코딩테스트\u0026rsquo; 카테고리의 다른 글 [Swift] 덧셈식 출력하기 / LV.0, 181947, 프로그래머스 (0) 2023.06.20 [Swift] 특수문자 출력하기 / LV.0, 181948, 프로그래머스 (0) 2023.06.19 [Swift] 문자열 반복해서 출력하기 / LV.0, 181950, 프로그래머스 (0) 2023.06.19 [Swift] a와 b 출력하기 / LV.0, 181951, 프로그래머스 (0) 2023.06.18 [Swift] 문자열 출력하기 / LV.0, 181952, 프로그래머스 (0) 2023.06.18 ","permalink":"https://blog.sobamemil.com/posts/189-swift-%EB%8C%80%EC%86%8C%EB%AC%B8%EC%9E%90-%EB%B0%94%EA%BF%94%EC%84%9C-%EC%B6%9C%EB%A0%A5%ED%95%98%EA%B8%B0-lv0-181949-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/","summary":"\u003cp\u003e\u003cstrong\u003e문제:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e영어 알파벳으로 이루어진 문자열 str이 주어집니다.\u003c/p\u003e\n\u003cp\u003e각 알파벳을 대문자는 소문자로 소문자는 대문자로 변환해서 출력하는 코드를 작성해 보세요.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://school.programmers.co.kr/learn/courses/30/lessons/181949\"\u003ehttps://school.programmers.co.kr/learn/courses/30/lessons/181949\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e[프로그래머스\u003c/p\u003e\n\u003cp\u003e코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.\u003c/p\u003e\n\u003cp\u003eprogrammers.co.kr](\u003ca href=\"https://school.programmers.co.kr/learn/courses/30/lessons/181949\"\u003ehttps://school.programmers.co.kr/learn/courses/30/lessons/181949\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e제한사항:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e1 ≤ str의 길이 ≤ 20\n\u003cul\u003e\n\u003cli\u003estr은 알파벳으로 이루어진 문자열입니다.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e풀이:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-cpp\" data-lang=\"cpp\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003elet line \u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e readLine()\u003cspan style=\"color:#f92672\"\u003e!\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003elet resultString \u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e line.map { character in\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    \u003cspan style=\"color:#66d9ef\"\u003eif\u003c/span\u003e character.isLowercase {\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e        \u003cspan style=\"color:#66d9ef\"\u003ereturn\u003c/span\u003e character.uppercased()\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    } \u003cspan style=\"color:#66d9ef\"\u003eelse\u003c/span\u003e {\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e        \u003cspan style=\"color:#66d9ef\"\u003ereturn\u003c/span\u003e character.lowercased()\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    }\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e}.joined()\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eprint(resultString)\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#75715e\"\u003e// 또는\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#75715e\"\u003e// print(readLine()?.map { $0.isLowercase ? $0.uppercased() : $0.lowercased() }.joined() ?? \u0026#34;\u0026#34;)\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e입력 받은 각 문자 하나하나가 대문자인지 소문자인지 판단해서 반대로 출력하면 되는 문제입니다.\u003c/p\u003e","title":"[Swift] 대소문자 바꿔서 출력하기 / LV.0, 181949, 프로그래머스"},{"content":"문제:\n문자열 str과 정수 n이 주어집니다.\nstr이 n번 반복된 문자열을 만들어 출력하는 코드를 작성해 보세요.\nhttps://school.programmers.co.kr/learn/courses/30/lessons/181950\n[프로그래머스\n코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.\nprogrammers.co.kr](https://school.programmers.co.kr/learn/courses/30/lessons/181950)\n제한사항:\n1 ≤ str의 길이 ≤ 10 1 ≤ n ≤ 5 풀이:\nlet inp = readLine()!.components(separatedBy: [\u0026#34; \u0026#34;]).map { $0 } let (s1, a) = (inp[0], Int(inp[1])!) let resultString: String = { var string: String = \u0026#34;\u0026#34; for _ in 0..\u0026lt;a { string += s1 } return string }() print(resultString) // 또는 // let resultString = String(repeating: s1, count: a) // print(resultString) 문자열을 n 번 반복해서 이어 붙이면 되는 문제입니다.\n코드 아래 주석에는 swift에서 간단하게 문제를 해결할 수 있는 방법도 적어 두었습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 알고리즘 \u0026amp; 코딩테스트\u0026rsquo; 카테고리의 다른 글 [Swift] 특수문자 출력하기 / LV.0, 181948, 프로그래머스 (0) 2023.06.19 [Swift] 대소문자 바꿔서 출력하기 / LV.0, 181949, 프로그래머스 (0) 2023.06.19 [Swift] a와 b 출력하기 / LV.0, 181951, 프로그래머스 (0) 2023.06.18 [Swift] 문자열 출력하기 / LV.0, 181952, 프로그래머스 (0) 2023.06.18 크러스컬 알고리즘 구현 2 (붕괴법칙을 적용한 방법) (3) 2021.04.09 ","permalink":"https://blog.sobamemil.com/posts/188-swift-%EB%AC%B8%EC%9E%90%EC%97%B4-%EB%B0%98%EB%B3%B5%ED%95%B4%EC%84%9C-%EC%B6%9C%EB%A0%A5%ED%95%98%EA%B8%B0-lv0-181950-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/","summary":"\u003cp\u003e\u003cstrong\u003e문제:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e문자열 str과 정수 n이 주어집니다.\u003cbr\u003e\nstr이 n번 반복된 문자열을 만들어 출력하는 코드를 작성해 보세요.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://school.programmers.co.kr/learn/courses/30/lessons/181950\"\u003ehttps://school.programmers.co.kr/learn/courses/30/lessons/181950\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e[프로그래머스\u003c/p\u003e\n\u003cp\u003e코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.\u003c/p\u003e\n\u003cp\u003eprogrammers.co.kr](\u003ca href=\"https://school.programmers.co.kr/learn/courses/30/lessons/181950\"\u003ehttps://school.programmers.co.kr/learn/courses/30/lessons/181950\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e제한사항:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e1 ≤ str의 길이 ≤ 10\u003c/li\u003e\n\u003cli\u003e1 ≤ n ≤ 5\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e풀이:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-cpp\" data-lang=\"cpp\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003elet inp \u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e readLine()\u003cspan style=\"color:#f92672\"\u003e!\u003c/span\u003e.components(separatedBy: [\u003cspan style=\"color:#e6db74\"\u003e\u0026#34; \u0026#34;\u003c/span\u003e]).map { \u003cspan style=\"color:#960050;background-color:#1e0010\"\u003e$\u003c/span\u003e\u003cspan style=\"color:#ae81ff\"\u003e0\u003c/span\u003e }\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003elet (s1, a) \u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e (inp[\u003cspan style=\"color:#ae81ff\"\u003e0\u003c/span\u003e], Int(inp[\u003cspan style=\"color:#ae81ff\"\u003e1\u003c/span\u003e])\u003cspan style=\"color:#f92672\"\u003e!\u003c/span\u003e)\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003elet resultString: String \u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e {\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    var string: String \u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e \u003cspan style=\"color:#e6db74\"\u003e\u0026#34;\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    \u003cspan style=\"color:#66d9ef\"\u003efor\u003c/span\u003e _ in \u003cspan style=\"color:#ae81ff\"\u003e0.\u003c/span\u003e.\u003cspan style=\"color:#f92672\"\u003e\u0026lt;\u003c/span\u003ea {\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e        string \u003cspan style=\"color:#f92672\"\u003e+=\u003c/span\u003e s1\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    }\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    \u003cspan style=\"color:#66d9ef\"\u003ereturn\u003c/span\u003e string\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e}()\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eprint(resultString)\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#75715e\"\u003e// 또는\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#75715e\"\u003e// let resultString = String(repeating: s1, count: a)\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#75715e\"\u003e// print(resultString)\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e문자열을 n 번 반복해서 이어 붙이면 되는 문제입니다.\u003c/p\u003e","title":"[Swift] 문자열 반복해서 출력하기 / LV.0, 181950, 프로그래머스"},{"content":"문제:\n정수 a와 b가 주어집니다. 각 수를 입력받아 입출력 예와 같은 형식으로 출력하는 코드를 작성해 보세요.\nhttps://school.programmers.co.kr/learn/courses/30/lessons/181951\n[프로그래머스\n코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.\nprogrammers.co.kr](https://school.programmers.co.kr/learn/courses/30/lessons/181951)\n제한사항:\n-100,000 ≤ a, b ≤ 100,000 풀이:\nlet n = readLine()!.components(separatedBy: [\u0026#34; \u0026#34;]) let (a, b) = (n[0], n[1]) print(\u0026#34;a = \\(a)\\nb = \\(b)\u0026#34;) // 또는 // print(\u0026#34;a =\u0026#34;, a) // print(\u0026#34;b =\u0026#34;, b) 두 가지의 정수를 공백 기준으로 나눈 후, 형식에 맞게 출력 해주면 되는 문제입니다.\n출력은 아주 다양한 방법으로 할 수 있습니다 ~\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 알고리즘 \u0026amp; 코딩테스트\u0026rsquo; 카테고리의 다른 글 [Swift] 대소문자 바꿔서 출력하기 / LV.0, 181949, 프로그래머스 (0) 2023.06.19 [Swift] 문자열 반복해서 출력하기 / LV.0, 181950, 프로그래머스 (0) 2023.06.19 [Swift] 문자열 출력하기 / LV.0, 181952, 프로그래머스 (0) 2023.06.18 크러스컬 알고리즘 구현 2 (붕괴법칙을 적용한 방법) (3) 2021.04.09 크러스컬 알고리즘 구현 1 (붕괴법칙을 적용하지 않은 방법) (0) 2021.04.09 ","permalink":"https://blog.sobamemil.com/posts/187-swift-a%EC%99%80-b-%EC%B6%9C%EB%A0%A5%ED%95%98%EA%B8%B0-lv0-181951-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/","summary":"\u003cp\u003e\u003cstrong\u003e문제:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e정수 a와 b가 주어집니다. 각 수를 입력받아 입출력 예와 같은 형식으로 출력하는 코드를 작성해 보세요.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://school.programmers.co.kr/learn/courses/30/lessons/181951\"\u003ehttps://school.programmers.co.kr/learn/courses/30/lessons/181951\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e[프로그래머스\u003c/p\u003e\n\u003cp\u003e코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.\u003c/p\u003e\n\u003cp\u003eprogrammers.co.kr](\u003ca href=\"https://school.programmers.co.kr/learn/courses/30/lessons/181951\"\u003ehttps://school.programmers.co.kr/learn/courses/30/lessons/181951\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e제한사항:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e-100,000 ≤ a, b ≤ 100,000\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e풀이:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-cpp\" data-lang=\"cpp\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003elet n \u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e readLine()\u003cspan style=\"color:#f92672\"\u003e!\u003c/span\u003e.components(separatedBy: [\u003cspan style=\"color:#e6db74\"\u003e\u0026#34; \u0026#34;\u003c/span\u003e])\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003elet (a, b) \u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e (n[\u003cspan style=\"color:#ae81ff\"\u003e0\u003c/span\u003e], n[\u003cspan style=\"color:#ae81ff\"\u003e1\u003c/span\u003e])\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eprint(\u003cspan style=\"color:#e6db74\"\u003e\u0026#34;a = \\(a)\u003c/span\u003e\u003cspan style=\"color:#ae81ff\"\u003e\\n\u003c/span\u003e\u003cspan style=\"color:#e6db74\"\u003eb = \\(b)\u0026#34;\u003c/span\u003e)\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#75715e\"\u003e// 또는 \n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#75715e\"\u003e// print(\u0026#34;a =\u0026#34;, a)\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#75715e\"\u003e// print(\u0026#34;b =\u0026#34;, b)\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e두 가지의 정수를 공백 기준으로 나눈 후, 형식에 맞게 출력 해주면 되는 문제입니다.\u003c/p\u003e","title":"[Swift] a와 b 출력하기 / LV.0, 181951, 프로그래머스"},{"content":"문제:\n문자열 str이 주어질 때, str을 출력하는 코드를 작성해 보세요.\nhttps://school.programmers.co.kr/learn/courses/30/lessons/181952\n[프로그래머스\n코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.\nprogrammers.co.kr](https://school.programmers.co.kr/learn/courses/30/lessons/181952)\n제한사항:\n1 ≤ str의 길이 ≤ 1,000,000 str에는 공백이 없으며, 첫째 줄에 한 줄로만 주어집니다. 풀이:\n입력 받은 문자열을 그대로 출력해주면 되는 문제입니다.\nprint(readLine() ?? \u0026#34;\u0026#34;) readLine 함수는 optional을 return 하므로 ?? 연산자(nil 병합 연산자 / coalescing operator)를 사용해 줍니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 알고리즘 \u0026amp; 코딩테스트\u0026rsquo; 카테고리의 다른 글 [Swift] 문자열 반복해서 출력하기 / LV.0, 181950, 프로그래머스 (0) 2023.06.19 [Swift] a와 b 출력하기 / LV.0, 181951, 프로그래머스 (0) 2023.06.18 크러스컬 알고리즘 구현 2 (붕괴법칙을 적용한 방법) (3) 2021.04.09 크러스컬 알고리즘 구현 1 (붕괴법칙을 적용하지 않은 방법) (0) 2021.04.09 R 프로그램 다운로드 설치 및 실행 방법 (0) 2020.09.03 ","permalink":"https://blog.sobamemil.com/posts/186-swift-%EB%AC%B8%EC%9E%90%EC%97%B4-%EC%B6%9C%EB%A0%A5%ED%95%98%EA%B8%B0-lv0-181952-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/","summary":"\u003cp\u003e\u003cstrong\u003e문제:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e문자열 str이 주어질 때, str을 출력하는 코드를 작성해 보세요.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://school.programmers.co.kr/learn/courses/30/lessons/181952\"\u003ehttps://school.programmers.co.kr/learn/courses/30/lessons/181952\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e[프로그래머스\u003c/p\u003e\n\u003cp\u003e코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.\u003c/p\u003e\n\u003cp\u003eprogrammers.co.kr](\u003ca href=\"https://school.programmers.co.kr/learn/courses/30/lessons/181952\"\u003ehttps://school.programmers.co.kr/learn/courses/30/lessons/181952\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e제한사항:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e1 ≤ str의 길이 ≤ 1,000,000\u003c/li\u003e\n\u003cli\u003estr에는 공백이 없으며, 첫째 줄에 한 줄로만 주어집니다.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e풀이:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e입력 받은 문자열을 그대로 출력해주면 되는 문제입니다.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-cpp\" data-lang=\"cpp\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003eprint(readLine() \u003cspan style=\"color:#f92672\"\u003e??\u003c/span\u003e \u003cspan style=\"color:#e6db74\"\u003e\u0026#34;\u0026#34;\u003c/span\u003e)\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003ereadLine 함수는 optional을 return 하므로 ?? 연산자(nil 병합 연산자 / coalescing operator)를 사용해 줍니다.\u003c/p\u003e","title":"[Swift] 문자열 출력하기 / LV.0, 181952, 프로그래머스"},{"content":"수어 통역 애플리케이션의 동작 시연 영상입니다.\n단순 시연용으로 서버와 APP 모두 로컬 네트워크에서 진행되었습니다.\n동영상 서비스가 종료되어 해당 콘텐츠를 재생할 수 없습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; iOS \u0026amp; 기타\u0026rsquo; 카테고리의 다른 글 [iOS] Postman 설명 및 다운로드 방법 (0) 2021.05.17 [iOS] \u0026ldquo;Errors were encountered while preparing your device for development. Please check the Devices and Simulators Window.\u0026rdquo; 오류 해결법 (0) 2021.05.09 ","permalink":"https://blog.sobamemil.com/posts/185-%EC%88%98%EC%96%B4-%ED%86%B5%EC%97%AD-application-%EB%8F%99%EC%9E%91-%EC%8B%9C%EC%97%B0-%EC%98%81%EC%83%81/","summary":"\u003cp\u003e수어 통역 애플리케이션의 동작 시연 영상입니다.\u003c/p\u003e\n\u003cp\u003e단순 시연용으로 서버와 APP 모두 로컬 네트워크에서 진행되었습니다.\u003c/p\u003e\n\u003cp\u003e동영상 서비스가 종료되어 해당 콘텐츠를 재생할 수 없습니다.\u003c/p\u003e\n\u003cp\u003e공유하기\u003c/p\u003e\n\u003cp\u003e게시글 관리\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e코딩은 내일부터 ;\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://creativecommons.org/licenses/by-nc/4.0/deed.ko\"\u003e저작자표시 비영리\n(새창열림)\u003c/a\u003e\u003c/p\u003e\n\u003ch4 id=\"-개발--cs--ios--기타-카테고리의-다른-글\"\u003e\u0026lsquo;\u003ca href=\"/category/%F0%9F%92%BB%20%EA%B0%9C%EB%B0%9C%20%26%20CS\"\u003e💻 개발 \u0026amp; CS\u003c/a\u003e \u0026gt; \u003ca href=\"/category/%F0%9F%92%BB%20%EA%B0%9C%EB%B0%9C%20%26%20CS/iOS%20%26%20%EA%B8%B0%ED%83%80\"\u003eiOS \u0026amp; 기타\u003c/a\u003e\u0026rsquo; 카테고리의 다른 글\u003c/h4\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ca href=\"/184\"\u003e[iOS] Postman 설명 및 다운로드 방법\u003c/a\u003e  (0)\u003c/td\u003e\n          \u003ctd\u003e2021.05.17\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ca href=\"/182\"\u003e[iOS] \u0026ldquo;Errors were encountered while preparing your device for development. Please check the Devices and Simulators Window.\u0026rdquo; 오류 해결법\u003c/a\u003e  (0)\u003c/td\u003e\n          \u003ctd\u003e2021.05.09\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e","title":"[수어 통역 Application] 동작 시연 영상"},{"content":"Postman이란 Rest API 통신 서버를 본격적으로 구축하기 전 테스트 할 수 있도록 도와주는 GUI 툴이라고 생각하면 쉽게 이해될 것 같습니다. 윈도우, 리눅스에서도 사용 가능하고 WEB 버전도 있지만 이 포스팅에서는 macOS를 기준으로 진행하겠습니다.\n사용자가 개인이고 기본적인 기능만 사용한다고 하면 무료로 사용할 수 있습니다. 비용에 관한 자세한 부분은 홈페이지에 기재되어 있습니다.\nPostman 다운로드 링크 :\nhttps://www.postman.com/downloads/\n[Download Postman | Try Postman for Free\nTry Postman for free! Join 13 million developers who rely on Postman, the collaboration platform for API development. Create better APIs—faster.\nwww.postman.com](https://www.postman.com/downloads/)\n위의 링크를 들어가면 다음과 같은 화면이 나오는데 Download the App 버튼을 클릭하여 Postman 파일을 다운받습니다.\n아래와 같이 Postman 압축 파일이 받아졌습니다.\n압축을 풀어주면 본격적인 파일이 나옵니다. 그럼 파일을 실행시켜줍니다.\n아래와 같은 애플리케이션이 실행되고, 처음 사용하는 경우에는 Create Free Account 버튼을 눌러 회원가입을 해줍니다.\n위에서부터 순서대로 이메일, 이름(아이디), 비밀번호를 입력해줍니다.\n계정 등록 이후 직업군을 물어보고 팀 이름을 입력하라고 나오는데 건너뛸 수 있습니다.\n계정 등록까지 완료했으면 아래와 같은 화면이 반겨줍니다. 다운로드 및 설치가 완료되었습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; iOS \u0026amp; 기타\u0026rsquo; 카테고리의 다른 글 [수어 통역 Application] 동작 시연 영상 (1) 2021.06.28 [iOS] \u0026ldquo;Errors were encountered while preparing your device for development. Please check the Devices and Simulators Window.\u0026rdquo; 오류 해결법 (0) 2021.05.09 ","permalink":"https://blog.sobamemil.com/posts/184-ios-postman-%EC%84%A4%EB%AA%85-%EB%B0%8F-%EB%8B%A4%EC%9A%B4%EB%A1%9C%EB%93%9C-%EB%B0%A9%EB%B2%95/","summary":"\u003cp\u003ePostman이란 Rest API 통신 서버를 본격적으로 구축하기 전 테스트 할 수 있도록 도와주는 GUI 툴이라고 생각하면 쉽게 이해될 것 같습니다. 윈도우, 리눅스에서도 사용 가능하고 WEB 버전도 있지만 이 포스팅에서는 macOS를 기준으로 진행하겠습니다.\u003c/p\u003e\n\u003cp\u003e사용자가 개인이고 기본적인 기능만 사용한다고 하면 무료로 사용할 수 있습니다. 비용에 관한 자세한 부분은 홈페이지에 기재되어 있습니다.\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/184/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003ePostman 다운로드 링크 :\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://www.postman.com/downloads/\"\u003ehttps://www.postman.com/downloads/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e[Download Postman | Try Postman for Free\u003c/p\u003e\n\u003cp\u003eTry Postman for free! Join 13 million developers who rely on Postman, the collaboration platform for API development. Create better APIs—faster.\u003c/p\u003e","title":"[iOS] Postman 설명 및 다운로드 방법"},{"content":"ESP32-CAM 스케치 작성 및 컴파일 시 아래와 같은 오류가 발생하는 경우가 있습니다.\n[E][camera.c:1049] camera_probe(): Detected camera not supported.\n[E][camera.c:1249] esp_camera_init(): Camera probe failed with error 0x20004\n저는 WebServerCam 예제를 실행할 때에도 이러한 오류가 발생 하였습니다.\n분명 와이파이 id와 password를 올바르게 넣었고, 코드도 예제 코드이므로 오류가 발생할 부분이 없는데 이러한 오류가 발생하여 서버가 올라가지 않는 일이 생겨서 당황스러웠습니다.\n저의 해결 방법은 예제 코드의 상단 부분에 주석처리 되어있는 부분 중 CAMERA_MODEL을 지정해주는 부분에서\n#define CAMERA_MODEL_WROVER_KIT // Has PSRAM 이 부분이 주석 해제 되어 있었는데 이 부분을 다시 주석처리 하고\n#define CAMERA_MODEL_AI_THINKER // Has PSRAM 이 부분을 주석 해제 해주었더니 정상적으로 동작하였습니다.\n해결된 이유를 알려드리면 저는 아두이노 보드에 연결하여 컴파일 및 업로드 한 것이 아니라 ESP32-CAM-MB라는 모듈을 장착하여 컴파일 및 업로드 하였는데, ESP32-CAM-MB 모듈을 장착하여 업로드 하는 경우는 아두이노 보드에 연결하여 업로드 하는 경우와 다르게 설정을 해주어야 한다는 것을 모르고 있었기 때문에 간단하게 CAMERA_MODEL_AI_THINKER를 #define 해줌으로 해결 하였습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 시스템 \u0026amp; 임베디드\u0026rsquo; 카테고리의 다른 글 Cortex-M3 STM32F103R8T6 GPIO 레지스터 종류 (0) 2020.07.08 시스템 프로그래밍 프로젝트 #7 최종 (Assembler in C) (2) 2020.03.19 시스템 프로그래밍 프로젝트 #1 (1) 2020.01.12 시스템 프로그래밍 프로젝트 #2 (1) 2020.01.12 시스템 프로그래밍 프로젝트 #3 (1) 2020.01.12 ","permalink":"https://blog.sobamemil.com/posts/183-esp32-cam-%EC%98%A4%EB%A5%98-ecamerac1049-camera-probe-detected-ca/","summary":"\u003cp\u003eESP32-CAM 스케치 작성 및 컴파일 시 아래와 같은 오류가 발생하는 경우가 있습니다.\u003c/p\u003e\n\u003cp\u003e[E][camera.c:1049] camera_probe(): Detected camera not supported.\u003cbr\u003e\n[E][camera.c:1249] esp_camera_init(): Camera probe failed with error 0x20004\u003c/p\u003e\n\u003cp\u003e저는 WebServerCam 예제를 실행할 때에도 이러한 오류가 발생 하였습니다.\u003c/p\u003e\n\u003cp\u003e분명 와이파이 id와 password를 올바르게 넣었고, 코드도 예제 코드이므로 오류가 발생할 부분이 없는데 이러한 오류가 발생하여 서버가 올라가지 않는 일이 생겨서 당황스러웠습니다.\u003c/p\u003e\n\u003cp\u003e저의 해결 방법은  예제 코드의 상단 부분에 주석처리 되어있는 부분 중 CAMERA_MODEL을 지정해주는 부분에서\u003c/p\u003e","title":"ESP32-CAM 오류 : [E][camera.c:1049] camera_probe(): Detected camera not supported. [E][camera.c:1249] esp_camera_init(): Camera probe failed with error 0x20004"},{"content":"코드를 작성하고 디바이스로 빌드하고자 할 때 \u0026ldquo;Errors were encountered while preparing your device for development. Please check the Devices and Simulators Window.\u0026ldquo;와 같은 오류가 발생하여 난감한 경험이 있었습니다.\n처음에 디바이스와 맥북을 무선으로 연결해서 사용했었는데 혹시 연결 문제인가 하여 케이블을 사용하여 연결하고 빌드 해보았지만 여전히 동일한 증상이 나타났습니다.\n그래서 열심히 구글링을 하여 해결법을 찾게 되었고 매우 간단하게 해결할 수 있었습니다.\n해결 방법은 바로 \u0026ldquo;재부팅\u0026rdquo; 하는 것입니다.\n디바이스를 껏다 키면 아무일 없었다는 듯이 정상적으로 작동하는 것을 볼 수가 있습니다.\n이 글을 보시는 분은 당황하지 마시고 간단하게 문제를 해결하셨으면 좋겠습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; iOS \u0026amp; 기타\u0026rsquo; 카테고리의 다른 글 [수어 통역 Application] 동작 시연 영상 (1) 2021.06.28 [iOS] Postman 설명 및 다운로드 방법 (0) 2021.05.17 ","permalink":"https://blog.sobamemil.com/posts/182-ios-errors-were-encountered-while-preparing-your-d/","summary":"\u003cp\u003e코드를 작성하고 디바이스로 빌드하고자 할 때 \u0026ldquo;Errors were encountered while preparing your device for development. Please check the Devices and Simulators Window.\u0026ldquo;와 같은 오류가 발생하여 난감한 경험이 있었습니다.\u003c/p\u003e\n\u003cp\u003e처음에 디바이스와 맥북을 무선으로 연결해서 사용했었는데 혹시 연결 문제인가 하여 케이블을 사용하여 연결하고 빌드 해보았지만 여전히 동일한 증상이 나타났습니다.\u003c/p\u003e\n\u003cp\u003e그래서 열심히 구글링을 하여 해결법을 찾게 되었고 매우 간단하게 해결할 수 있었습니다.\u003c/p\u003e\n\u003cp\u003e해결 방법은 바로 \u0026ldquo;재부팅\u0026rdquo; 하는 것입니다.\u003c/p\u003e\n\u003cp\u003e디바이스를 껏다 키면 아무일 없었다는 듯이 정상적으로 작동하는 것을 볼 수가 있습니다.\u003c/p\u003e","title":"[iOS] \"Errors were encountered while preparing your device for development. Please check the Devices and Simulators Window.\" 오류 해결법"},{"content":"프로그램 개요 :\nC 언어를 사용한 크러스컬 알고리즘(Kruskal Algorithm) 구현.\n붕괴법칙을 적용하지 않은 크러스컬 알고리즘. 붕괴법칙을 적용한 크러스컬 알고리즘 프로그램 구조 및 설계:\n이전 글과 이어지는 포스팅입니다. 프로그램의 구조와 설계 방법은 아래 링크에서 보실 수 있습니다.\n2021.04.09 - [알고리즘] - 크러스컬 알고리즘 구현 1 (붕괴법칙을 적용하지 않은 방법)\n[크러스컬 알고리즘 구현 1 (붕괴법칙을 적용하지 않은 방법)\n프로그램 개요 : C 언어를 사용한 크러스컬 알고리즘(Kruskal Algorithm) 구현. 붕괴법칙을 적용하지 않은 크러스컬 알고리즘. 붕괴법칙을 적용한 크러스컬 알고리즘 입력 파일 : 프로그램 실행 결과 :\nsobamemil.tistory.com](https://sobamemil.tistory.com/180)\n참고로 아래 코드에서 붕괴법칙(collapsing rule)을 적용하여 문제를 해결하는 알고리즘이 있는데, 붕괴법칙이란 임의의 노드 i에 대해 find 연산을 한다고 하였을 때, 정상적으로 루트를 찾았다면 i부터 루트까지의 경로에 있는 모든 노드들을 그 루트의 자식으로 만드는 것을 말합니다. 즉, i에 대해 find 연산을 한 번 하였다면 그 이후부터는 i부터 루트까지의 경로에 있는 모든 노드들이 한 번에 자신의 루트를 찾을 수 있다는 뜻이 됩니다.\n프로그램 실행 결과 :\n붕괴법칙을 적용한 경우 붕괴법칙을 적용한 크러스컬 알고리즘 실행 결과\n붕괴법칙을 적용하고 show() 함수를 사용한 경우 붕괴법칙을 적용하고 실행 과정까지 출력한 결과\n소스 코드 :\n1 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 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 // 붕괴법칙을 적용한 크러스컬 알고리즘 구현 #include \u0026lt;stdio.h\u0026gt; #include \u0026lt;string.h\u0026gt; #include \u0026lt;stdlib.h\u0026gt; // qsort 함수가 선언된 헤더 파일 #include \u0026lt;time.h\u0026gt; // 시간을 측정하기 위한 clock() 함수가 선언된 헤더 파일 // #define CLOCKS_PER_SEC 1000 -\u0026gt; time.h에 선언되어 있음 #define n 9 // 정점의 개수 int line_cnt=0; // 간선의 개수 int tot_wei=0; // 총 가중치 int rootNode_x; // 정점 x의 루트 노드 int rootNode_y; // 정점 y의 루트 노드 struct Graph { // 두개의 정점과 가중치를 저장하는 구조체 선언 int x; // 정점 x 에서 int y; // 정점 y 까지의 int wei; // 가중치 weight } graph[n][n]; // 비용 인접 행렬 생성을 위한 graph[][] // 오름차순으로 정렬하기 위한 함수 int compare(struct Graph *g1, struct Graph *g2) { // 오름차순으로 qsort()를 사용하기 위해 값을 비교하여 리턴하는 함수 // 첫 번째 매개변수가 더 크면 양수 반환 // 첫 번째 매개변수가 더 작으면 음수 반환 // 두 매개변수가 같으면 0 반환 if(g1-\u0026gt;wei \u0026gt; g2-\u0026gt;wei) return 1; else if(g1-\u0026gt;wei \u0026lt; g2-\u0026gt;wei) return -1; return 0; } // 입력 데이터를 읽어 비용인접행렬을 만드는 함수 void readFileMakeGraph(FILE *fp) { char buf[10], *ptr; // 입력 파일을 읽어 올 buf와 token을 저장할 포인터 ptr int num; // 토큰 값을 int형으로 저장하기 위한 변수 int count=0; // 입력 데이터에서 값을 분리하기 위한 변수 int i=0, j=0; // i=행, j=열 // graph의 원소를 전부 -1로 초기화 // -1은 무한대를 의미 memset(graph, -1, n*n*sizeof(struct Graph)); // 파일 포인터 fp를 이용해 한 줄씩 최대 buf의 size만큼 buf[]로 읽어옴 while( (fgets(buf, sizeof(buf), fp)) != NULL ) { // 입력 파일의 끝까지 반복 ptr = strtok(buf, \u0026quot; \u0026ldquo;); while(ptr != NULL) { // ptr이 NULL이 아니면 실행 num = atoi(ptr); switch(count++) { case 0: i = num; // 행 삽입 break; case 1: j = num; // 열 삽입 break; case 2: graph[i][j].wei = num; // i에서 j까지의 가중치 num; graph[i][j].x = i; // 정점 x graph[i][j].y = j; // 정점 y graph[j][i].wei = num; // j에서 i까지의 가중치 num; graph[j][i].x = i; // 정점 x graph[j][i].y = j; // 정점 y break; } ptr = strtok(NULL, \u0026quot; \u0026ldquo;); } count = 0; } for(i=0; i\u0026lt;=n; i++) // i행 i열의 가중치는 0 // 즉, 자기 자신으로의 가중치는 0 graph[i][i].wei = 0; } // 의미 있는 가중치만 추출해내는 함수 void getWeigth(struct Graph tmp_graph[]) { int i, j; for(i=0; i\u0026lt;n; i++) for(j=i+1; j\u0026lt;n; j++) // 비용 인접 행렬 대각선을 기준으로 위쪽만 탐색 if(graph[i][j].wei \u0026gt; 0) // graph[i][j]의 가중치가 의미 있는 경우에만 실행 tmp_graph[line_cnt++] = graph[i][j]; // sorted_graph[] 배열에 복사 } // parent 배열 초기화 함수 void initSet(int p[]) { for(int i=0; i \u0026lt; n; i++) p[i] = -1; // 각각 노드를 하나만 가지고 있는 배열로 초기화 } //정점 x와 y를 union 하는 함수 void unionSet(int x, int y, int p[]) { if(p[rootNode_x] \u0026lt;= p[rootNode_y]) { // p[rootNode_x] 집합의 원소가 더 많거나 같으면 실행 p[rootNode_x] += p[rootNode_y]; // p[rootNode_y]집합을 p[rootNode_x]집합으로 병합 // p[rootNode_y]는 index x를 가리킨다 // 즉 y의 기존 최상위 노드가 x를 가리킨다 p[rootNode_y] = x; } else { // p[rootNode_y] 집합의 원소가 더 많으면 실행 p[rootNode_y] += p[rootNode_x]; // p[rootNode_x]집합을 p[rootNode_y]집합으로 병합 // p[rootNode_x]는 index y를 가리킨다 // 즉 x의 기존 최상위 노드가 y를 가리킨다 p[rootNode_x] = y; } } // 최상위 부모 노드를 찾아 자신이 어느 집합에 있는지 확인 및 저장하고 // 두 노드가 같은 집합에 속해 있는지 알려주는 함수 int find(int p[], int x, int y) { int ori_x = x, ori_y = y; int tmp_x, tmp_y; if(p[x] == -1 \u0026amp;\u0026amp; p[y] == -1) { // p[x]와 p[y]가 둘 다 -1이면 union 가능 rootNode_x = x; // x의 최상위 노드는 자기 자신 rootNode_y = y; // y의 최상위 노드는 자기 자신 return 1; } // p[x]와 p[y]가 둘 다 -1이 아니면 while(1) { if(p[x] == p[y]) { break; } if(p[x] \u0026lt; 0 \u0026amp;\u0026amp; p[y] \u0026lt; 0) { // p[x]와 p[y]의 원소 값이 0보다 작으면 최상위 노드이기 때문에 while문 탈출 break; } else if(p[x] \u0026gt; -1 \u0026amp;\u0026amp; p[y] \u0026gt; -1) { // 둘 다 최상위 노드가 아니면 x = p[x]; // 부모 노드를 찾아가기 위함 y = p[y]; // 부모 노드를 찾아가기 위함 } else if(p[x] \u0026gt; -1 \u0026amp;\u0026amp; p[y] \u0026lt; 0) { // p[x]만 최상위 노드가 아닌 경우 x = p[x]; // 부모 노드를 찾아가기 위함 } else if(p[x] \u0026lt; 0 \u0026amp;\u0026amp; p[y] \u0026gt; -1){ // p[y]만 최상위 노드가 아닌 경우 y = p[y]; // 부모 노드를 찾아가기 위함 } else { // 이도 저도 아니면 에러메시지 출력 후 프로그램 종료 printf(\u0026ldquo;find() error\u0026hellip;\u0026rdquo;); exit(1); } } rootNode_x = x; // x의 최상위 노드인덱스 저장 rootNode_y = y; // y의 최상위 노드인덱스 저장 x = ori_x; // 처음 정점 x y = ori_y; // 처음 정점 y // 붕괴 법칙 적용 while(1) { if(p[x] == p[y]) { break; } if(p[x] \u0026lt; 0 \u0026amp;\u0026amp; p[y] \u0026lt; 0) { // p[x]와 p[y]의 원소 값이 0보다 작으면 최상위 노드이기 때문에 while문 탈출 break; } else if(p[x] \u0026gt; -1 \u0026amp;\u0026amp; p[y] \u0026gt; -1) { // 둘 다 최상위 노드가 아니면 tmp_x = x; // 임시로 x를 저장하기 위함 tmp_y = y; // 임시로 y를 저장하기 위함 x = p[x]; // 부모 노드를 찾아가기 위함 y = p[y]; // 부모 노드를 찾아가기 위함 p[tmp_x] = rootNode_x; // 자식 노드의 값을 최상위 노드의 값으로 변경 p[tmp_y] = rootNode_y; // 자식 노드의 값을 최상위 노드의 값으로 변경 } else if(p[x] \u0026gt; -1 \u0026amp;\u0026amp; p[y] \u0026lt; 0) { // p[x]만 최상위 노드가 아닌 경우 tmp_x = x; // 임시로 x를 저장하기 위함 x = p[x]; // 부모 노드를 찾아가기 위함 p[tmp_x] = rootNode_x; // 자식 노드의 값을 최상위 노드의 값으로 변경 } else if(p[x] \u0026lt; 0 \u0026amp;\u0026amp; p[y] \u0026gt; -1){ // p[y]만 최상위 노드가 아닌 경우 tmp_y = y; // 임시로 y를 저장하기 위함 y = p[y]; // 부모 노드를 찾아가기 위함 p[tmp_y] = rootNode_y; // 자식 노드의 값을 최상위 노드의 값으로 변경 } else { // 이도 저도 아니면 에러메시지 출력 후 프로그램 종료 printf(\u0026ldquo;find() error\u0026hellip;\u0026rdquo;); exit(1); } } // 둘 다 최상위 노드이면 같은 집합에 속해있는지 비교 if(p[x] == p[y] ) // 서로 같은 집합이면 return 0; // 같은 집합에 속해있기 때문에 union 불가 // 같은 집합에 속해있지 않기 때문에 union 가능 return 1; } void kruskalAlgo(struct Graph sg[], int par[]) { int i; int cnt=0; // 정점의 개수-1 만큼 union해야하는데 이때, 카운트 하기 위한 변수 getWeigth(sg); // 가중치 추출 qsort(sg, line_cnt, sizeof(struct Graph), compare); // c언어에서 제공하는 sort initSet(par); // parent 배열 초기화 for(i=0; cnt!=n-1; i++) { // cnt가 정점 개수-1이 될 때까지 반복 switch(find(par, sg[i].x, sg[i].y)) { // find() 함수 실행 case 0: // union 불가능 break; case 1: // union 가능 printf(\u0026quot;%d) %d에서 %d까지의 가중치 : %d\\n\u0026rdquo;, cnt+1, sg[i].x, sg[i].y, sg[i].wei); unionSet(sg[i].x, sg[i].y, par); cnt++; // union 성공 tot_wei += sg[i].wei; // union에 성공했으면 가중치를 더함 // show(par); // union 할 떄마다 parent[] 배열 출력 break; default : // 이도 저도 아니면 에러메시지 출력 후 프로그램 종료 printf(\u0026ldquo;algo error\u0026hellip;\\n\u0026rdquo;); exit(1); } } printf(\u0026quot;\\n\u0026rdquo;); for(i=0; i\u0026lt;n; i++) // parent[] 배열 포맷을 인덱스와 함께 출력 printf(\u0026ldquo;par[%d]\\t\u0026rdquo;, i); printf(\u0026quot;\\n\u0026quot;); for(i=0; i\u0026lt;n; i++) // 각각의 parent[] 배열 원소를 출력 printf(\u0026quot;%d\\t\u0026quot;, par[i]); printf(\u0026quot;\\n\\n\u0026quot;); printf(\u0026ldquo;총 가중치 : %d\\n\u0026rdquo;, tot_wei); // 총 가중치 출력 } void show(int pa[]) { // parent[] 배열의 원소들을 출력해주는 함수 int i; for(i=0; i\u0026lt;n; i++) // parent[] 배열 포맷을 인덱스와 함께 출력 printf(\u0026ldquo;par[%d]\\t\u0026rdquo;, i); printf(\u0026quot;\\n\u0026quot;); for(i=0; i\u0026lt;n; i++) // 각각의 parent[] 배열 원소를 출력 printf(\u0026quot;%d\\t\u0026quot;, pa[i]); printf(\u0026quot;\\n\\n\u0026quot;); } int main() { clock_t start, finish; // 시간 측정을 위한 clock_t타입의 변수 선언 int i=0; int parent[n]; // 정점 개수 만큼의 원소를 가진 parent 배열 생성 struct Graph sorted_graph[200]; // 가중치를 뽑아내어 저장하고 정렬 할 구조체 배열 선언 FILE *fp = fopen(\u0026ldquo;graphInf.txt\u0026rdquo;, \u0026ldquo;r\u0026rdquo;); // 입력 데이터 텍스트 파일 오픈 if(!fp) { // 파일이 없을 경우 에러 메시지 출력 후 프로그램 종료 printf(\u0026ldquo;입력 파일이 없습니다.\\n\u0026rdquo;); return 0; } readFileMakeGraph(fp); // 비용인접행렬을 만드는 함수 호출 // clock() 함수는 millisecond(ms) 단위로 시간 반환 // 1ms = 1/1000sec start = clock(); // 시작 지점에서 시간 체크 kruskalAlgo(sorted_graph, parent); // 크러스컬 알고리즘 실행 finish = clock(); // 종료 지점에서 시간 체크 printf(\u0026ldquo;프로그램 실행시간 : %fs\\n\u0026rdquo;, (float)(finish-start)/CLOCKS_PER_SEC); // (종료 시간 - 시작 시간)/1000 = 측정 구간 실행 시간 return 0; } 결과분석 :\nC언어에서 제공하는 clock() 함수를 통해 크러스컬 알고리즘의 실행 시간을 측정하였는데, 정점의 개수가 적어서 붕괴법칙을 적용한 경우와 붕괴법칙을 적용하지 않은 경우의 시간 차이가 나지 않았습니다. 실행 결과에서는 0.001초의 차이가 나지만 실제로는 프로그램을 실행할 때마다 시간 차이가 조금씩 나서 명확한 결과를 얻기는 힘들었습니다. 그러나 이론상으로는 정점의 개수가 많아지고, 동일 집합의 정점에 재접근하는 횟수가 많아진다면 붕괴법칙을 사용한 경우의 실행 시간이 더 짧을 것으로 예상됩니다.\nshow() 함수를 만들어 매 union() 할 때마다 parent[] 배열 각각의 원소를 출력하여 진행 과정을 보기 편하게 만들었는데, show() 함수를 매 번 호출하면 실행 시간에 많은 차이가 나게 되어 본 프로그램 실행시간 측정시에는 호출하지 않았으나 마지막 캡처 사진에 show() 함수를 호출하여 실행한 실행 결과도 첨부 하였습니다.\n본 글에 나와있는 코드는 이전 글에서의 크러스컬 알고리즘 개요에서 보았던 기본적인 코드 및 방법과 완전히 일치하지는 않고, 중간 중간 구현하기 편하게 혹은 간단하게 바꾸어 둔 부분도 조금씩 존재합니다.\n또한, 크러스컬 알고리즘에 대해 이해가 가신 분은 개인적으로 재귀함수에 대한 공부를 한 후에 재귀함수를 사용한 find() 함수를 구현해 보시는 것을 추천합니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 알고리즘 \u0026amp; 코딩테스트\u0026rsquo; 카테고리의 다른 글 [Swift] a와 b 출력하기 / LV.0, 181951, 프로그래머스 (0) 2023.06.18 [Swift] 문자열 출력하기 / LV.0, 181952, 프로그래머스 (0) 2023.06.18 크러스컬 알고리즘 구현 1 (붕괴법칙을 적용하지 않은 방법) (0) 2021.04.09 R 프로그램 다운로드 설치 및 실행 방법 (0) 2020.09.03 크러스컬(Kruskal) 알고리즘 (1) 2020.07.02 ","permalink":"https://blog.sobamemil.com/posts/181-%ED%81%AC%EB%9F%AC%EC%8A%A4%EC%BB%AC-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EA%B5%AC%ED%98%84-2-%EB%B6%95%EA%B4%B4%EB%B2%95%EC%B9%99%EC%9D%84-%EC%A0%81%EC%9A%A9%ED%95%9C-%EB%B0%A9%EB%B2%95/","summary":"\u003cp\u003e\u003cstrong\u003e프로그램 개요 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eC 언어를 사용한 크러스컬 알고리즘(Kruskal Algorithm) 구현.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e붕괴법칙을 적용하지 않은 크러스컬 알고리즘.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e붕괴법칙을 적용한 크러스컬 알고리즘\u003c/strong\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e프로그램 구조 및 설계:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e이전 글과 이어지는 포스팅입니다. 프로그램의 구조와 설계 방법은 아래 링크에서 보실 수 있습니다.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://sobamemil.tistory.com/180\"\u003e2021.04.09 - [알고리즘] - 크러스컬 알고리즘 구현 1 (붕괴법칙을 적용하지 않은 방법)\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e[크러스컬 알고리즘 구현 1 (붕괴법칙을 적용하지 않은 방법)\u003c/p\u003e\n\u003cp\u003e프로그램 개요 : C 언어를 사용한 크러스컬 알고리즘(Kruskal Algorithm) 구현. 붕괴법칙을 적용하지 않은 크러스컬 알고리즘. 붕괴법칙을 적용한 크러스컬 알고리즘 입력 파일 : 프로그램 실행 결과 :\u003c/p\u003e","title":"크러스컬 알고리즘 구현 2 (붕괴법칙을 적용한 방법)"},{"content":"프로그램 개요 :\nC 언어를 사용한 크러스컬 알고리즘(Kruskal Algorithm) 구현.\n붕괴법칙을 적용하지 않은 크러스컬 알고리즘. 붕괴법칙을 적용한 크러스컬 알고리즘 크러스컬 알고리즘에 대한 설명은 아래 링크의 이전 글에서 볼 수 있습니다.\n2020.07.02 - [알고리즘] - 크러스컬(Kruskal) 알고리즘\n[크러스컬(Kruskal) 알고리즘\n크러스컬(Kruskal) 알고리즘이란? 크러스컬 알고리즘은 최소 비용 신장 그래프를 찾는 알고리즘 입니다. 변의 개수를 E, 꼭지점의 개수를 V라고 한다면 크러스컬 알고리즘은 O(ElogV)의 시간 복잡도\nsobamemil.tistory.com](https://sobamemil.tistory.com/150)\n이 글에서는 예로 주어진 그래프에 대해서 크러스컬 알고리즘으로 문제를 해결하는 방법과 코드를 작성하였습니다.\n입력 가중치 그래프 :\n입력 파일 :\n입력 데이터\n입력 데이터가 들어있는 .txt 파일입니다.\n[graphInf.txt\n0.00MB](https://blog.kakaocdn.net/dna/9GWpl/btq2iFfdTGn/AAAAAAAAAAAAAAAAAAAAAPR1afPSYRSSngG_pTeKxCHZPt50vsapwyoi0hUqhYlq/graphInf.txt?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8\u0026amp;expires=1788188399\u0026amp;allow_ip=\u0026amp;allow_referer=\u0026amp;signature=tBqiAllXzExVIgPQgq2UUYjZeLk%3D\u0026amp;attach=1\u0026amp;knm=tfile.txt)\n프로그램 실행 결과 :\n붕괴법칙을 적용하지 않은 경우\n붕괴법칙을 적용하지 않은 크러스컬 알고리즘 실행 결과\n프로그램 구조 및 설계:\n총 1개의 구조체와 main() 함수를 포함한 9개의 함수로 이루어져 있음.\nstruct Graph : 정점 u를 나타내는 int x와 정점 v를 나타내는 int y 그리고 가중치를 나타내는 int wei 변수를 가지고 있음.\nint main() 함수 : clock_t 타입의 변수를 선언하고 clock() 함수를 이용해 크러스컬 알고리즘의 실행 시간 측정, FILE 타입의 포인터 fp를 선언하고 fopen() 함수를 통해 입력 파일을 오픈, 비용 인접 행렬을 만드는 함수 호출, 크러스컬 알고리즘을 실행하는 함수 호출 등의 역할을 함.\nint compare(struct Graph *g1, struct Graph *g2) 함수 : C언어에서 제공하는 정렬 함수인 qsort() 함수를 사용할 때 특정 값을 비교해서 결과에 따른 값을 리턴해주기 위한 함수. 이 프로그램에서는 구조체 Graph의 변수 wei 즉, 가중치를 비교해 값을 리턴.\nvoid readFileMakeGraph(FILE *fp) 함수 : 파일 포인터를 매개변수로 받아 한 줄씩 읽어가며 공백을 기준으로 token을 잘라 비용 인접 행렬을 만드는 함수.\nvoid getWeigth(struct Graph tmp_graph[]) : Graph 구조체 타입의 1차원 배열을 매개변수로 받아 비용 인접 행렬의 대각선을 기준으로 위쪽만 탐색하며, 그중 가중치가 의미 있는 경우에만 (가중치가 0이 아닌 양수인 경우) tmp_graph[]로 복사.\nvoid initSet(int p[]) : 각각의 정점에 대해 집합을 만드는 함수. 이 프로그램에서는 parent[] 배열을 만들고 그 배열을 집합에 노드가 하나만 있다는 뜻인 –1로 초기화시키는 함수.\nint find(int p[], int x, int y) : 정점 x와 y에 대해 각각의 최상위 노드를 찾고, 각각 어느 집합에 있는지 rootNode_x, rootNode_y에 저장하고, 두 노드가 같은 집합에 속해있는지를 리턴값으로 알려주는 함수.\n붕괴법칙을 적용한 소스 코드에서는 이 단계에서 각각의 최상위 노드를 찾은 후 다시 최상위 노드까지 거슬러 올라가며 그 경로에 있는 노드들이 가지고 있는 부모 노드의 정보를 해당 집합의 최상위 노드의 인덱스로 변경해주는 작업 추가. -\u0026gt; 다음 find() 할 때 다시 거슬러 올라가지 않아도 됨.\nvoid unionSet(int x, int y, int p[]) : 정점 x의 집합 크기와 정점 y의 집합 크기를 비교하여, 정점 x의 집합 크기가 정점 y의 집합 크기보다 크거나 같으면 정점 y의 집합을 정점 x의 집합으로 병합하고, 정점 y의 집합 크기가 정점 x의 집합 크기보다 크면 정점 x의 집합을 정점 y의 집합으로 병합하는 함수. 그리고 병합당한 집합(집합의 크기가 더 작은 집합)의 최상위 노드가 병합한 집합(집합의 크기가 더 큰 집합)의 정점을 가리키도록 설정.\nvoid kruskalAlgo(struct Graph sg[], int par[]) : 크러스컬 알고리즘을 구현한 함수.\n인자로 구조체 Graph 타입의 1차원 배열과 parent[] 배열을 받음. 가중치를 추출하는 함수를 호출하고, qsort()를 이용해 1차원 배열을 가중치를 기준으로 정렬하고, find와 union을 하는 함수. 알고리즘 실행을 마치고 나면 parent[] 배열의 모든 원소를 출력해줌.\nvoid show() 함수 : union을 하나 할 때마다 parent[] 배열의 현재 상태를 보여주는 함수.\n시간을 많이 잡아먹어 현재 프로그램에서는 호출하는 부분을 주석으로 처리해 둠.\n소스코드 :\n붕괴법칙을 사용하지 않은 경우\n1 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 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 // 붕괴법칙을 적용하지 않은 크러스컬 알고리즘 구현 #include \u0026lt;stdio.h\u0026gt; #include \u0026lt;string.h\u0026gt; #include \u0026lt;stdlib.h\u0026gt; // qsort() 함수가 선언된 헤더 파일 #include \u0026lt;time.h\u0026gt; // 시간을 측정하기 위한 clock() 함수가 선언된 헤더 파일 // #define CLOCKS_PER_SEC 1000 -\u0026gt; time.h에 선언되어 있음 #define n 9 // 정점의 개수 int line_cnt=0; // 간선의 개수 int tot_wei=0; // 총 가중치 int rootNode_x; // 정점 x의 루트 노드 int rootNode_y; // 정점 y의 루트 노드 struct Graph { // 두개의 정점과 가중치를 저장하는 구조체 선언 int x; // 정점 x 에서 int y; // 정점 y 까지의 int wei; // 가중치 weight } graph[n][n]; // 비용 인접 행렬 생성을 위한 graph[][] // 오름차순으로 정렬하기 위한 함수 int compare(struct Graph *g1, struct Graph *g2) { // 오름차순으로 qsort()를 사용하기 위해 값을 비교하여 리턴하는 함수 // 첫 번째 매개변수가 더 크면 양수 반환 // 첫 번째 매개변수가 더 작으면 음수 반환 // 두 매개변수가 같으면 0 반환 if(g1-\u0026gt;wei \u0026gt; g2-\u0026gt;wei) return 1; else if(g1-\u0026gt;wei \u0026lt; g2-\u0026gt;wei) return -1; return 0; } // 입력 데이터를 읽어 비용인접행렬을 만드는 함수 void readFileMakeGraph(FILE *fp) { char buf[10], *ptr; // 입력 파일을 읽어 올 buf와 token을 저장할 포인터 ptr int num; // 토큰 값을 int형으로 저장하기 위한 변수 int count=0; // 입력 데이터에서 값을 분리하기 위한 변수 int i=0, j=0; // i=행, j=열 // graph의 원소를 전부 -1로 초기화 // -1은 무한대를 의미 memset(graph, -1, n*n*sizeof(struct Graph)); // 파일 포인터 fp를 이용해 한 줄씩 최대 buf의 size만큼 buf[]로 읽어옴 while( (fgets(buf, sizeof(buf), fp)) != NULL ) { // 입력 파일의 끝까지 반복 ptr = strtok(buf, \u0026quot; \u0026ldquo;); while(ptr != NULL) { // ptr이 NULL이 아니면 실행 num = atoi(ptr); switch(count++) { case 0: i = num; // 행 삽입 break; case 1: j = num; // 열 삽입 break; case 2: graph[i][j].wei = num; // i에서 j까지의 가중치 num; graph[i][j].x = i; // 정점 x graph[i][j].y = j; // 정점 y graph[j][i].wei = num; // j에서 i까지의 가중치 num; graph[j][i].x = i; // 정점 x graph[j][i].y = j; // 정점 y break; } ptr = strtok(NULL, \u0026quot; \u0026ldquo;); } count = 0; } for(i=0; i\u0026lt;=n; i++) // i행 i열의 가중치는 0 // 즉, 자기 자신으로의 가중치는 0 graph[i][i].wei = 0; } // 의미 있는 가중치만 추출해내는 함수 void getWeigth(struct Graph tmp_graph[]) { int i, j; for(i=0; i\u0026lt;n; i++) for(j=i+1; j\u0026lt;n; j++) // 비용 인접 행렬 대각선을 기준으로 위쪽만 탐색 if(graph[i][j].wei \u0026gt; 0) // graph[i][j]의 가중치가 의미 있는 경우에만 실행 tmp_graph[line_cnt++] = graph[i][j]; // sorted_graph[] 배열에 복사 } // parent 배열 초기화 함수 void initSet(int p[]) { for(int i=0; i \u0026lt; n; i++) p[i] = -1; // 각각 노드를 하나만 가지고 있는 배열로 초기화 } //정점 x와 y를 union 하는 함수 void unionSet(int x, int y, int p[]) { if(p[rootNode_x] \u0026lt;= p[rootNode_y]) { // p[rootNode_x] 집합의 원소가 더 많거나 같으면 실행 p[rootNode_x] += p[rootNode_y]; // p[rootNode_y]집합을 p[rootNode_x]집합으로 병합 // p[rootNode_y]는 index x를 가리킨다 // 즉 y의 기존 최상위 노드가 x를 가리킨다 p[rootNode_y] = x; } else { // p[rootNode_y] 집합의 원소가 더 많으면 실행 p[rootNode_y] += p[rootNode_x]; // p[rootNode_x]집합을 p[rootNode_y]집합으로 병합 // p[rootNode_x]는 index y를 가리킨다 // 즉 x의 기존 최상위 노드가 y를 가리킨다 p[rootNode_x] = y; } } // 최상위 부모 노드를 찾아 자신이 어느 집합에 있는지 확인 및 저장하고 // 두 노드가 같은 집합에 속해 있는지 알려주는 함수 int find(int p[], int x, int y) { if(p[x] == -1 \u0026amp;\u0026amp; p[y] == -1) { // p[x]와 p[y]가 둘 다 -1이면 union 가능 rootNode_x = x; // x의 최상위 노드는 자기 자신 rootNode_y = y; // y의 최상위 노드는 자기 자신 return 1; } // p[x]와 p[y]가 둘 다 -1이 아니면 while(1) { if(p[x] \u0026lt; 0 \u0026amp;\u0026amp; p[y] \u0026lt; 0) // p[x]와 p[y]의 원소 값이 0보다 작으면 최상위 노드이기 때문에 while문 탈출 break; else if(p[x] \u0026gt; -1 \u0026amp;\u0026amp; p[y] \u0026gt; -1) { // 둘 다 최상위 노드가 아니면 x = p[x]; // 부모 노드의 부모 노드를 찾아가기 위함 y = p[y]; // 부모 노드의 부모 노드를 찾아가기 위함 } else if(p[x] \u0026gt; -1 \u0026amp;\u0026amp; p[y] \u0026lt; 0) { // p[x]만 최상위 노드가 아닌 경우 x = p[x]; // 부모 노드의 부모 노드를 찾아가기 위함 } else if(p[x] \u0026lt; 0 \u0026amp;\u0026amp; p[y] \u0026gt; -1){ // p[y]만 최상위 노드가 아닌 경우 y = p[y]; // 부모 노드의 부모 노드를 찾아가기 위함 } else { // 이도 저도 아니면 에러메시지 출력 후 프로그램 종료 printf(\u0026ldquo;find() error\u0026hellip;\u0026rdquo;); exit(1); } } // 둘 다 최상위 노드이면 같은 집합에 속해있는지 비교 if(p[x] == p[y] ) // 서로 같은 집합이면 return 0; // 같은 집합에 속해있기 때문에 union 불가 // 같은 집합에 속해있지 않기 때문에 union 가능 rootNode_x = x; // x의 최상위 노드값 저장 rootNode_y = y; // y의 최상위 노드값 저장 return 1; } void kruskalAlgo(struct Graph sg[], int par[]) { int i; int cnt=0; // 정점의 개수-1 만큼 union해야하는데 이때, 카운트 하기 위한 변수 getWeigth(sg); // 가중치 추출 qsort(sg, line_cnt, sizeof(struct Graph), compare); // c언어에서 제공하는 sort initSet(par); // parent 배열 초기화 for(i=0; cnt!=n-1; i++) { // cnt가 정점 개수-1이 될 때까지 반복 switch(find(par, sg[i].x, sg[i].y)) { // find() 함수 실행 case 0: // union 불가능 break; case 1: // union 가능 unionSet(sg[i].x, sg[i].y, par); printf(\u0026quot;%d) %d에서 %d까지의 가중치 : %d\\n\u0026rdquo;, cnt+1, sg[i].x, sg[i].y, sg[i].wei); cnt++; // union 성공 tot_wei += sg[i].wei; // union에 성공했으면 가중치를 더함 // show(par); // union 할 떄마다 parent[] 배열 출력 break; default : // 이도 저도 아니면 에러메시지 출력 후 프로그램 종료 printf(\u0026ldquo;algo error\u0026hellip;\\n\u0026rdquo;); exit(1); } } printf(\u0026quot;\\n\u0026rdquo;); for(i=0; i\u0026lt;n; i++) // parent[] 배열 포맷을 인덱스와 함께 출력 printf(\u0026ldquo;par[%d]\\t\u0026rdquo;, i); printf(\u0026quot;\\n\u0026quot;); for(i=0; i\u0026lt;n; i++) // 각각의 parent[] 배열 원소를 출력 printf(\u0026quot;%d\\t\u0026quot;, par[i]); printf(\u0026quot;\\n\\n\u0026quot;); printf(\u0026ldquo;총 가중치 : %d\\n\u0026rdquo;, tot_wei); // 총 가중치 출력 } void show(int pa[]) { // parent[] 배열의 원소들을 출력해주는 함수 int i; for(i=0; i\u0026lt;n; i++) // parent[] 배열 포맷을 인덱스와 함께 출력 printf(\u0026ldquo;par[%d]\\t\u0026rdquo;, i); printf(\u0026quot;\\n\u0026quot;); for(i=0; i\u0026lt;n; i++) // 각각의 parent[] 배열 원소를 출력 printf(\u0026quot;%d\\t\u0026quot;, pa[i]); printf(\u0026quot;\\n\\n\u0026quot;); } int main() { clock_t start, finish; // 시간 측정을 위한 clock_t타입의 변수 선언 int i=0; int parent[n]; // 정점 개수 만큼의 원소를 가진 parent 배열 생성 struct Graph sorted_graph[200]; // 가중치를 뽑아내어 저장하고 정렬 할 구조체 배열 선언 FILE *fp = fopen(\u0026ldquo;graphInf.txt\u0026rdquo;, \u0026ldquo;r\u0026rdquo;); // 입력 데이터 텍스트 파일 오픈 if(!fp) { // 파일이 없을 경우 에러 메시지 출력 후 프로그램 종료 printf(\u0026ldquo;입력 파일이 없습니다.\\n\u0026rdquo;); return 0; } readFileMakeGraph(fp); // 비용인접행렬을 만드는 함수 호출 // clock() 함수는 millisecond(ms) 단위로 시간 반환 // 1ms = 1/1000sec start = clock(); // 시작 지점에서 시간 체크 kruskalAlgo(sorted_graph, parent); // 크러스컬 알고리즘 실행 finish = clock(); // 종료 지점에서 시간 체크 printf(\u0026ldquo;프로그램 실행시간 : %fs\\n\u0026rdquo;, (float)(finish-start)/CLOCKS_PER_SEC); // (종료 시간 - 시작 시간)/1000 = 측정 구간 실행 시간 return 0; } 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 알고리즘 \u0026amp; 코딩테스트\u0026rsquo; 카테고리의 다른 글 [Swift] 문자열 출력하기 / LV.0, 181952, 프로그래머스 (0) 2023.06.18 크러스컬 알고리즘 구현 2 (붕괴법칙을 적용한 방법) (3) 2021.04.09 R 프로그램 다운로드 설치 및 실행 방법 (0) 2020.09.03 크러스컬(Kruskal) 알고리즘 (1) 2020.07.02 이원 탐색 트리(Binary Search Tree) 배열 만들기 (1) 2020.03.19 ","permalink":"https://blog.sobamemil.com/posts/180-%ED%81%AC%EB%9F%AC%EC%8A%A4%EC%BB%AC-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EA%B5%AC%ED%98%84-1-%EB%B6%95%EA%B4%B4%EB%B2%95%EC%B9%99%EC%9D%84-%EC%A0%81%EC%9A%A9%ED%95%98%EC%A7%80-%EC%95%8A%EC%9D%80-%EB%B0%A9%EB%B2%95/","summary":"\u003cp\u003e\u003cstrong\u003e프로그램 개요 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eC 언어를 사용한 크러스컬 알고리즘(Kruskal Algorithm) 구현.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e붕괴법칙을 적용하지 않은 크러스컬 알고리즘.\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e붕괴법칙을 적용한 크러스컬 알고리즘\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e크러스컬 알고리즘에 대한 설명은 아래 링크의 이전 글에서 볼 수 있습니다.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://sobamemil.tistory.com/150\"\u003e2020.07.02 - [알고리즘] - 크러스컬(Kruskal) 알고리즘\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e[크러스컬(Kruskal) 알고리즘\u003c/p\u003e\n\u003cp\u003e크러스컬(Kruskal) 알고리즘이란? 크러스컬 알고리즘은 최소 비용 신장 그래프를 찾는 알고리즘 입니다. 변의 개수를 E, 꼭지점의 개수를 V라고 한다면 크러스컬 알고리즘은 O(ElogV)의 시간 복잡도\u003c/p\u003e\n\u003cp\u003esobamemil.tistory.com](\u003ca href=\"https://sobamemil.tistory.com/150\"\u003ehttps://sobamemil.tistory.com/150\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e이 글에서는 예로 주어진 그래프에 대해서 크러스컬 알고리즘으로 문제를 해결하는 방법과 코드를 작성하였습니다.\u003c/p\u003e","title":"크러스컬 알고리즘 구현 1 (붕괴법칙을 적용하지 않은 방법)"},{"content":"1. R 프로그램 설치\n1-1. 구글에 R download를 검색하고 첫 번째 cran.r-project.org를 클릭하여 사이트에 접속하거나 아래 링크를 통해 사이트에 접속합니다.\nhttps://cran.r-project.org/bin/windows/base/\n[Download R-4.0.2 for Windows. The R-project for statistical computing.\nIf you want to double-check that the package you have downloaded matches the package distributed by CRAN, you can compare the md5sum of the .exe to the fingerprint on the master server. You will need a version of md5sum for windows: both graphical and comm\ncran.r-project.org](https://cran.r-project.org/bin/windows/base/)\n1-2. 사이트 접속 후 가장 위에 보이는 Download R 4.0.2 for Windows를 클릭해서 설치 파일을 다운받아 줍니다. (버전은 다를 수 있습니다.)\n1-3. 다운로드 받은 R-4.0.2-win.exe 파일을 눌러서 설치를 시작합니다. 첫 번째로 설치 언어 선택 화면이 나오는데 이때, 자신있는 언어를 선택하고 확인 버튼을 눌러줍니다.\n1-4. 정보를 읽고 다음 버튼을 눌러줍니다.\n1-5. 프로그램을 설치 할 위치를 정해주면 되는데, 저는 기본 위치로 설치하였습니다.\n1-6. 설치하고자 하는 구성 요소를 선택하고 다음 버튼을 눌러줍니다.\n1-7. 스타트업 옵션에서 기본값 사용 체크 후 다음 버튼을 눌러줍니다.\n1-8. 그 후 프로그램의 바로 가기를 만들 곳을 선택해주고 다음 버튼을 눌러줍니다.\n1-9. 추가로 적용할 사항을 선택하고 다음 버튼을 눌러줍니다. 기본적으로 레지스트리 항목들 두 가지만 체크가 되어 있습니다. 아이콘 생성 부분에서 바탕 화면에 아이콘 생성과 빠른 실행에 아이콘 생성을 체크해주면 좋습니다.\n1-10. 설치가 되는 동안 기다려줍니다.\n1-11. 설치가 완료되면 설치 완료 화면이 뜨게 됩니다.\n1-12. 바탕화면에 생긴 바로가기 아이콘을 눌러 실행하면 아래와 같은 실행 화면이 나타나게 됩니다.\n1-13. 아래와 같이 print()함수를 사용해 원하는 문자열을 출력할 수 있습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 알고리즘 \u0026amp; 코딩테스트\u0026rsquo; 카테고리의 다른 글 크러스컬 알고리즘 구현 2 (붕괴법칙을 적용한 방법) (3) 2021.04.09 크러스컬 알고리즘 구현 1 (붕괴법칙을 적용하지 않은 방법) (0) 2021.04.09 크러스컬(Kruskal) 알고리즘 (1) 2020.07.02 이원 탐색 트리(Binary Search Tree) 배열 만들기 (1) 2020.03.19 합병 정렬(Merge Sort) 알고리즘 (1) 2020.03.18 ","permalink":"https://blog.sobamemil.com/posts/179-r-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8-%EB%8B%A4%EC%9A%B4%EB%A1%9C%EB%93%9C-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EC%8B%A4%ED%96%89-%EB%B0%A9%EB%B2%95/","summary":"\u003cp\u003e\u003cstrong\u003e1. R 프로그램 설치\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e1-1. 구글에 R download를 검색하고 첫 번째 cran.r-project.org를 클릭하여 사이트에 접속하거나 아래 링크를 통해 사이트에 접속합니다.\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/179/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://cran.r-project.org/bin/windows/base/\"\u003ehttps://cran.r-project.org/bin/windows/base/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e[Download R-4.0.2 for Windows. The R-project for statistical computing.\u003c/p\u003e\n\u003cp\u003eIf you want to double-check that the package you have downloaded matches the package distributed by CRAN, you can compare the md5sum of the .exe to the fingerprint on the master server. You will need a version of md5sum for windows: both graphical and comm\u003c/p\u003e","title":"R 프로그램 다운로드 설치 및 실행 방법"},{"content":"이 글에서는 Cortex-M3 STM32F103(STM32F103R8T6)(이하 cortex-m3)의 입출력 포트를 제어하기 위해 필요한 레지스터들의 종류에 대해 알아보겠습니다.\ncortex-m3 마이크로컨트롤러는 데이터 출력용 레지스터(GPIOx_ODR, GPIOx_BSRR, GPIOx_BRR)와 데이터 입출력 방향 제어 레지스터(GPIOx_CRL, GPIOx_CRH)와 데이터 입력 레지스터(GPIOx_IDR), 그리고 입출력 값을 고정하는 용도의 레지스터(GPIOx_LCKR)를 가지고 있고 이들에 대해 간단하게 설명하도록 하겠습니다.\n참고로 GPIOx_\u0026hellip; 에서 x는 A~D 사이의 알파벳입니다.\n1. GPIOx_CRL, GPIOx_CRH (Port Configuration Register Low, Port Configuration Register High)\n이 레지스터는 입출력의 제어 설정을 하기 위한 레지스터입니다. 이 레지스터는 해당 포트의 입출력 선언 및 각 핀의 동작 모드를 설정할 수 있는데, 그 중 GPIOx_CRL은 07번 핀을 설정하고, GPIOx_CRH는 815번 핀을 설정합니다. 먼저 GPIOx_CRL의 설정 방법은 아래와 같습니다.\nGPIOx_CRL\nCNFy[1:0] : Port x configuration bits (y=0 \u0026hellip; 7) (Bits : 31:30, 27:26, 23:22, 19:18, 15:14, 11:10, 7:6, 3:2)\n( = 포트 x의 각 비트에 대한 입출력 설정 및 동작모드 설정 비트)\nIn input mode (입력 모드 일 때) (MODE[1:0]=00): 00 : Analog mode\n01 : Floating input (reset state)\n10 : Input with pull-up / pull-down\n11 : Reserved\nIn output mode (출력 모드 일 때) (MODE[1:0] \u0026gt; 00): 00 : General purpose output push-pull\n01 : General purpose output Open-drain\n10 : Alternate function output Push-pull\n11 : Alternate function output Open-drain\nMODEy[1:0] : Port x mode bits (y=0 \u0026hellip; 7) (Bits : 29:28, 25:24, 21:20, 17:16, 13:12, 9:8, 5:4, 1:0)\n( = 포트 입출력 모드 설정 비트)\n00 : Input mode (reset state) ( = 입력 모드)\n01 : Output mode, max speed 10 MHz. ( = 출력 모드, 최대 동작 속도 10Mhz)\n10 : Output mode, max speed 2 MHz. ( = 출력 모드, 최대 동작 속도 2MHz)\n11 : Output mode, max speed 50 MHz ( = 출력 모드, 최대 동작 속도 50MHz)\n그리고 GPIOx_CRH의 설정 방법은 아래와 같습니다.\nGPIOx_CRH\nCNFy[1:0] : Port x configuration bits (y= 8 .. 15) (Bits : 31:30, 27:26, 23:22, 19:18, 15:14, 11:10, 7:6, 3:2)\n( = 포트 x의 각 비트에 대한 입출력 설정 및 동작모드 설정 비트)\nIn input mode (입력 모드 일 때) (MODE[1:0]=00): 00 : Analog mode\n01 : Floating input (reset state)\n10 : Input with pull-up / pull-down\n11 : Reserved\n- In output mode (출력 모드 일 때) (MODE[1:0] \u0026gt; 00):\n00 : General purpose output push-pull\n01 : General purpose output Open-drain\n10 : Alternate function output Push-pull\n11 : Alternate function output Open-drain\nMODEy[1:0] : Port x mode bits (y=8 \u0026hellip; 15) (Bits : 29:28, 25:24, 21:20, 17:16, 13:12, 9:8, 5:4, 1:0)\n( = 포트 입출력 모드 설정 비트)\n00 : Input mode (reset state) ( = 입력 모드)\n01 : Output mode, max speed 10 MHz. ( = 출력 모드, 최대 동작 속도 10Mhz)\n10 : Output mode, max speed 2 MHz. ( = 출력 모드, 최대 동작 속도 2MHz)\n11 : Output mode, max speed 50 MHz ( = 출력 모드, 최대 동작 속도 50MHz)\n2. GPIOx_IDR (Port Input Data Register)\nGPIOx_IDR은 말 그대로 데이터 입력용 레지스터입니다. 즉, 읽기 전용 레지스터입니다.\n포트의 핀 설정이 입력으로 되어있는 경우 PINx 레지스터에 해당하는 값을 읽으면 됩니다. 그러면 포트로부터 입력되는 데이터가 저장됩니다.\nGPIOx_IDR의 설정 방법은 아래와 같습니다.\nGPIOx_IDR\nIDRy : Port input data (y= 0 .. 15) (Bits : 15:0)\n3. GPIOx_ODR (Port Output Data Register)\nGPIOx_ODR은 데이터를 해당 포트 전체를 통해 출력하기 위한 레지스터입니다. 포트의 핀 설정이 출력으로 되어있는 경우 출력하기 원하는 데이터 값을 GPIOx_ODR에 넣어주면 됩니다. 이 레지스터는 읽기와 쓰기가 모두 가능합니다.\nGPIOx_ODR의 설정 방법은 아래와 같습니다.\nGPIOx_ODR\nODRy : Port output data (y= 0 .. 15) (Bits : 15:0)\n4. GPIOx_BSRR (Port Bit Set/Reset Register)\nGPIOx_BSRR은 제어 포트의 특정 핀만을 set/reset 하기 위한 레지스터이며, write-only 입니다.\nGPIOx_BSRR의 설정 방법은 아래와 같습니다.\nGPIOx_BSRR\nBRy : Port x Reset bit y (y= 0 .. 15) (Bits : 31:16)\n0 : No action on the corresponding ODRx bit\n1 : Reset the corresponding ODRx bit\nBSy : Port x Set bit y (y= 0 .. 15) (Bits : 15:0)\n0 : No action on the corresponding ODRx bit\n1 : Set the corresponding ODRx bit\n5. GPIOx_BRR (Port Bit Reset Register)\nGPIOx_BRR은 제어 포트의 특정 핀만을 reset 하기 위한 레지스터입니다. 또한, GPIOx_BSRR과 동일하게 write-only 입니다.\nGPIOx_BRR의 설정 방법은 아래와 같습니다.\nGPIOx_BRR\nBRy : Port x Reset bit y (y= 0 .. 15) (Bits : 15:0)\n0: No action on the corresponding ODRx bit\n1: Reset the corresponding ODRx bit\n6. GPIOx_LCKR (Port Configuration Lock Register)\nGPIOx_LCKR은 포트의 각 핀의 입출력 값을 고정하는 용도의 레지스터입니다.\nGPIOx_LCKR의 설정 방법은 아래와 같습니다.\nGPIOx_LCKR\nLCKK[16] : Lock key (Bit : 16)\n0: Port configuration lock key not active\n1: Port configuration lock key active. GPIOx_LCKR register is locked until the next reset.\nLOCK key writing sequence: Write 1\nWrite 0\nWrite 1\nRead 0\nRead 1 (this read is optional but confirms that the lock is active)\nLCKy : Port x Lock bit y (y= 0 .. 15) (Bits : 15:0)\n0: Port configuration not locked\n1: Port configuration locked.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 시스템 \u0026amp; 임베디드\u0026rsquo; 카테고리의 다른 글 ESP32-CAM 오류 : [E][camera.c:1049] camera_probe(): Detected camera not supported. [E][camera.c:1249] esp_camera_init(): Camera probe failed with error 0x20004 (0) 2021.05.09 시스템 프로그래밍 프로젝트 #7 최종 (Assembler in C) (2) 2020.03.19 시스템 프로그래밍 프로젝트 #1 (1) 2020.01.12 시스템 프로그래밍 프로젝트 #2 (1) 2020.01.12 시스템 프로그래밍 프로젝트 #3 (1) 2020.01.12 ","permalink":"https://blog.sobamemil.com/posts/178-cortex-m3-stm32f103r8t6-gpio-%EB%A0%88%EC%A7%80%EC%8A%A4%ED%84%B0-%EC%A2%85%EB%A5%98/","summary":"\u003cp\u003e이 글에서는 Cortex-M3 STM32F103(STM32F103R8T6)(이하 cortex-m3)의 입출력 포트를 제어하기 위해 필요한 레지스터들의 종류에 대해 알아보겠습니다.\u003c/p\u003e\n\u003cp\u003ecortex-m3 마이크로컨트롤러는 데이터 출력용 레지스터(GPIOx_ODR, GPIOx_BSRR, GPIOx_BRR)와 데이터 입출력 방향 제어 레지스터(GPIOx_CRL, GPIOx_CRH)와 데이터 입력 레지스터(GPIOx_IDR), 그리고 입출력 값을 고정하는 용도의 레지스터(GPIOx_LCKR)를 가지고 있고 이들에 대해 간단하게 설명하도록 하겠습니다.\u003c/p\u003e\n\u003cp\u003e참고로 GPIOx_\u0026hellip; 에서 x는 A~D 사이의 알파벳입니다.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e1. GPIOx_CRL, GPIOx_CRH (Port Configuration Register Low, Port Configuration Register High)\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e이 레지스터는 입출력의 제어 설정을 하기 위한 레지스터입니다. 이 레지스터는 해당 포트의 입출력 선언 및 각 핀의 동작 모드를 설정할 수 있는데, 그 중 GPIOx_CRL은 0\u003cdel\u003e7번 핀을 설정하고, GPIOx_CRH는 8\u003c/del\u003e15번 핀을 설정합니다.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e먼저 GPIOx_CRL의 설정 방법은 아래와 같습니다.\u003c/p\u003e","title":"Cortex-M3 STM32F103R8T6 GPIO 레지스터 종류"},{"content":"크러스컬(Kruskal) 알고리즘이란?\n크러스컬 알고리즘은 최소 비용 신장 그래프를 찾는 알고리즘 입니다.\n변의 개수를 E, 꼭지점의 개수를 V라고 한다면 크러스컬 알고리즘은 O(ElogV)의 시간 복잡도를 갖습니다.\n크러스컬의 MST(욕심쟁이 방법) 알고리즘 간략 코드 :\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 edge_set kruskal_MST(edge_set E, int n) { sort(E); // 간선 정렬 edge_set MST_E = { }; for (i=0; i\u0026lt;n; i++) init_set(i); // n개의 집합(트리)을 생성 while(MST_E의 간선 수 \u0026lt; n - 1) { (u, v) = E의 최소 가중치 간선; E = E - {(u, v)}; if(find(u) != find(v)) // u와 v가 다른 집합(트리) 원소 { MST_E = MST_E ∪ {(u, v)}; // 간선 추가 union(u, v); // 두 집합(트리)을 합병 } } return MST_E; } - 예제 -\n입력으로 받을 그래프 :\n가중치 그래프\n실행 예 :\n실행 예\n구조 :\n크러스컬 알고리즘을 구현하기 위해서는 크게 세 가지 중요한 부분이 있습니다.\n첫 번째로 최초에 정점 하나를 원소로 하는 집합을 만드는 init set 연산\n두 번째로 임의의 정점이 어느 집합의 원소인지를 알아내는 find 연산\n마지막으로 두 집합을 하나로 합치는 union 연산\n이 알고리즘에서는 2번 줄에 간선을 정렬하는 부분이 전체 알고리즘의 복잡도를 좌우하게 되는데, 주어진 그래프의 정점의 수가 n이고 간선의 수가 e이라고 할 때, 정렬 방법 중 성능이 우수한 퀵정렬, 합병정렬 등을 사용한다면 O(e loge)의 시간 복잡도를 갖습니다.\n위쪽에서 변의 개수를 E, 꼭지점의 개수를 V라고 한다면 크러스컬 알고리즘은 O(ElogV)의 시간 복잡도를 갖는다고 하였는데, 그 이유는 간선의 수 e는 최대 O(n^2) 이므로 O(e loge) = O(e logn^2) = O(2e logn) = O(e logn) 가 성립하므로 둘 중 어떠한 복잡도로 말해도 틀린 것이 아니기 때문입니다.\n크러스컬 알고리즘에 대한 실제 구현 예제는 아래 링크에서 볼 수 있습니다.\n2021.04.09 - [알고리즘] - 크러스컬 알고리즘 구현 1 (붕괴법칙을 적용하지 않은 방법)\n[크러스컬 알고리즘 구현 1 (붕괴법칙을 적용하지 않은 방법)\n프로그램 개요 : C 언어를 사용한 크러스컬 알고리즘(Kruskal Algorithm) 구현. 붕괴법칙을 적용하지 않은 크러스컬 알고리즘. 붕괴법칙을 적용한 크러스컬 알고리즘 입력 파일 : 프로그램 실행 결과 :\nsobamemil.tistory.com](https://sobamemil.tistory.com/180)\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 변경금지 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 알고리즘 \u0026amp; 코딩테스트\u0026rsquo; 카테고리의 다른 글 크러스컬 알고리즘 구현 1 (붕괴법칙을 적용하지 않은 방법) (0) 2021.04.09 R 프로그램 다운로드 설치 및 실행 방법 (0) 2020.09.03 이원 탐색 트리(Binary Search Tree) 배열 만들기 (1) 2020.03.19 합병 정렬(Merge Sort) 알고리즘 (1) 2020.03.18 삽입 정렬(Insertion Sort) 알고리즘 (1) 2020.03.17 ","permalink":"https://blog.sobamemil.com/posts/150-%ED%81%AC%EB%9F%AC%EC%8A%A4%EC%BB%ACkruskal-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98/","summary":"\u003cp\u003e\u003cstrong\u003e크러스컬(Kruskal) 알고리즘이란?\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e크러스컬 알고리즘은 최소 비용 신장 그래프를 찾는 알고리즘 입니다.\u003c/p\u003e\n\u003cp\u003e변의 개수를 E, 꼭지점의 개수를 V라고 한다면 크러스컬 알고리즘은 O(ElogV)의 시간 복잡도를 갖습니다.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e크러스컬의 MST(욕심쟁이 방법) 알고리즘 간략 코드 :\u003c/strong\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14  15\u003c/td\u003e\n          \u003ctd\u003eedge_set kruskal_MST(edge_set E, int n) {  sort(E); // 간선 정렬  edge_set MST_E = { };  for (i=0; i\u0026lt;n; i++) init_set(i); // n개의 집합(트리)을 생성  while(MST_E의 간선 수 \u0026lt; n - 1) {  (u, v) = E의 최소 가중치 간선;  E = E - {(u, v)};  if(find(u) != find(v)) // u와 v가 다른 집합(트리) 원소  {  MST_E = MST_E ∪ {(u, v)}; // 간선 추가  union(u, v); // 두 집합(트리)을 합병  }  }  return MST_E;  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e- 예제 -\u003c/strong\u003e\u003c/p\u003e","title":"크러스컬(Kruskal) 알고리즘"},{"content":"Chapter 32 인터넷 보안 연습 문제 풀이(답)\nVPN기술은 기관의 개인정보보호를 보장하기 위해 2개의 기술을 동시에 사용한다. _______ 과 _______ . -\u0026gt; c. IPSec; 터널링\nIP 보안(IPSec)은 _______ 수준에서 패킷의 보안을 제공하기 위해 IETF(Interner Engineering Task Force)에서 설계한 프로토콜의 집합이다. -\u0026gt; b. 네트워크\nIPSec은 2개의 호스트 사이에 _______ 라 불리는 신호처리 프로토콜을 사용하는 논리적인 연결이 필요하다. -\u0026gt; b. SA\nIPSec은 두 가지 _______ 모드와 _______ 모드로 동작한다. -\u0026gt; b. 전송; 터널\n_______ 모드에서 IPSec 헤더는 IP 헤더와 패킷의 나머지 사이에서 더해진다. -\u0026gt; a. 전송\n_______ 모드에서 IPSec 헤더는 원본 IP 헤더의 앞에 배치된다. -\u0026gt; b. 터널\nIPSec은 2개의 프로토콜 _______ 와 _______ 을 정의한다. -\u0026gt; d. 정답 없음 (a. AH; SSP, b. ESP; SSP, c. AH; EH)\n_______ 프로토콜은 발신지 호스트를 인증하고 IP 패킷에 운반되는 페이러도의 무결성을 보장하기 위해 설계되었다. -\u0026gt; a. AH\n_______ 프로토콜은 메시지 인증과 무결성을 제공하지만 개인정보보호는 제공하지 않는다. -\u0026gt; a. AH\n_______ 프로토콜은 메시지 인증과 무결성과 개인정보보호를 제공한다. -\u0026gt; b. ESP\n_______ 는 전송층의 보안을 제공하기 위해 설계되었다. -\u0026gt; c. TLS\n_______ 는 전자우편의 전송에서 보안의 네 가지 측면을 모두 제공하기 위해 필 짐머만(Phil Zimmermann)이 발명하였다. -\u0026gt; d. 정답 없음 (a. AH, b. ESP, c. TLS)\n패킷 필터 방화벽은 _______ 또는 _______ 계층에서 동작한다. -\u0026gt; c. 네트워크; 전송\n프록시 방화벽은 _______ 계층에서 동작한다. -\u0026gt; c. 응용\n전송 모드에서 IPSec은 _______ 를 보호한다. -\u0026gt; b. 전송층으로부터의 페이로드\n터널 모드에서 IPSec은 _______ 를 보호한다. -\u0026gt; a. IP 헤더\nESP 프로토콜은 _______ 설계되었다. -\u0026gt; a. AH 프로토콜 다음에\nIPSec에서 접근 제어는 _______ 를 사용하여 제공된다. -\u0026gt; b. 보안 협상 데이터베이스\nIKE는 _______ 를 제공한다. -\u0026gt; c. 인바운드 SA와 아웃바운드 SA 모두\nIKE는 _______ 개의 구성요소로 만들어진다. -\u0026gt; c. 3\nSSL은 _______ 개의 프로토콜을 사용한다. -\u0026gt; d. 4\n모든 답은 \u0026lsquo;데이터 통신과 네트워킹 5판(Data Communications and Networking Fifth Edition, Behrouz A. Forouzan 저)\u0026rsquo; 책을 공부하며 작성 하였습니다.\n혹시 틀린 답이 있다면 댓글로 알려주세요.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 변경금지 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 네트워크 \u0026amp; 통신\u0026rsquo; 카테고리의 다른 글 데이터 통신과 네트워킹 Chapter 31 암호화와 네트워크 보안 연습 문제 정답 (0) 2020.07.01 데이터 통신과 네트워킹 Chapter 30 서비스 품질 연습 문제 정답 (0) 2020.07.01 데이터 통신과 네트워킹 Chapter 29 대등-대-대등 패러다임 연습 문제 정답 (0) 2020.07.01 데이터 통신과 네트워킹 Chapter 28 멀티미디어 연습 문제 정답 (0) 2020.07.01 데이터 통신과 네트워킹 Chapter 27 네트워크 관리 연습 문제 정답 (0) 2020.06.30 ","permalink":"https://blog.sobamemil.com/posts/176-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%86%B5%EC%8B%A0%EA%B3%BC-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9-chapter-32-%EC%9D%B8%ED%84%B0%EB%84%B7-%EB%B3%B4%EC%95%88-%EC%97%B0%EC%8A%B5-%EB%AC%B8%EC%A0%9C-%EC%A0%95%EB%8B%B5/","summary":"\u003cp\u003e\u003cstrong\u003eChapter 32 인터넷 보안 연습 문제 풀이(답)\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eVPN기술은 기관의 개인정보보호를 보장하기 위해 2개의 기술을 동시에 사용한다. _______ 과 _______ .\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. IPSec; 터널링\u003c/p\u003e\n\u003col start=\"2\"\u003e\n\u003cli\u003eIP 보안(IPSec)은 _______ 수준에서 패킷의 보안을 제공하기 위해 IETF(Interner Engineering Task Force)에서 설계한 프로토콜의 집합이다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. 네트워크\u003c/p\u003e\n\u003col start=\"3\"\u003e\n\u003cli\u003eIPSec은 2개의 호스트 사이에 _______ 라 불리는 신호처리 프로토콜을 사용하는 논리적인 연결이 필요하다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. SA\u003c/p\u003e\n\u003col start=\"4\"\u003e\n\u003cli\u003eIPSec은 두 가지 _______ 모드와 _______ 모드로 동작한다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. 전송; 터널\u003c/p\u003e","title":"데이터 통신과 네트워킹 Chapter 32 인터넷 보안 연습 문제 정답"},{"content":"Chapter 31 암호화와 네트워크 보안 연습 문제 풀이(답)\n보안의 세 가지 목적은 _______ 이다. -\u0026gt; c. 기밀성, 무결성, 가용성\n다음의 공격 중에서 무결성을 위협하는 것은? -\u0026gt; a. 위장\n다음의 공격 중에서 가용성을 위협하는 것은? -\u0026gt; c. 서비스 거부\n_______ 는 연산을 통하여 메시지의 내용을 감추는 것을 의미한다. -\u0026gt; b. 암호화\n_______ 는 무언가로 메시지를 덮어서 감추는 것을 의미한다. -\u0026gt; a. 스테가노그라피\n_______ 암호화에서, 송신자와 수신자는 같은 키를 사용한다. -\u0026gt; a. 대칭키\n_______ 암호화에서, 양방향으로 같은 키를 사용한다. -\u0026gt; a. 대칭키\n_______ 암호는 종종 긴 메시지를 위해 사용된다. -\u0026gt; a. 대칭키\n_______ 암호는 종종 짧은 메시지를 위해 사용된다. -\u0026gt; b. 비대칭키\n_______ 는 송신자와 수신자가 기밀성을 기대한다는 것을 의미한다. -\u0026gt; d. 정답 없음 (a. 부인방지, b. 무결성, c. 인증)\n_______ 는 데이터가 보낸 그대로 정확하게 수신자에게 도착한다는 것을 의미한다. -\u0026gt; b. 메시지 무결성\n_______ 는 인증과 무결성과 메시지의 부인방지를 제공할 수 있다. -\u0026gt; b. 전자 서명\n전자서명은 _______ 을(를) 제공하지 않는다. -\u0026gt; b. 개인정보보호\n_______ 에서 단체의 신분은 시스템 접근의 전체 시간동안 한 번 확인된다. -\u0026gt; a. 개체 인증\n_______ 암호에서 모든 사람은 모든 사람의 공개키에 접근할 수 있다. -\u0026gt; b. 비대칭키\n메시지는 암호화된 후에 _______ 라고 불린다. -\u0026gt; b. 암호문\n기밀성을 위해 사용되는 비대칭키 방법에서 어떤 키가 공개적으로 알려지는가? -\u0026gt; b. 복호화 키만\n기밀성을 위해 사용되는 비대칭키 방법에서 수신자는 메시지를 복호화하기 위해 그/그녀 자신의 _______ 를 사용한다. -\u0026gt; b. 공개키\n기밀성을 위한 RSA 알고리즘은 _______ 암호를 사용한다. -\u0026gt; a. 비대칭키\nRSA에서 사용자 A가 암호화된 메시지를 사용자 B에게 보내려는 경우, 평문은 _______ 의 공개키를 사용하여 암호화된다. -\u0026gt; b. 사용자 B\n전자서명 기술에서 비대칭키를 사용하여 전체 메시지에 서명할 때, 메시지의 송신자는 메시지에 서명하기 위해 _______ 를 사용한다. -\u0026gt; b. 그 또는 그녀 자신의 개인키\n전자서명 기술에서 비대칭키를 사용하여 전체 메시지에 서명할 때, 메시지의 수신자는 서명을 검증하기 위해 _______ 를 사용한다. -\u0026gt; c. 송신자의 공개키\n_______ 는 대칭키 배포의 문제를 해결하는 신뢰된 제3자 기관이다. -\u0026gt; b. KDC\n_______ 는 공개키와 키의 주인 사이의 결속을 인증한다. -\u0026gt; a. CA\n모든 답은 \u0026lsquo;데이터 통신과 네트워킹 5판(Data Communications and Networking Fifth Edition, Behrouz A. Forouzan 저)\u0026rsquo; 책을 공부하며 작성 하였습니다.\n혹시 틀린 답이 있다면 댓글로 알려주세요.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 변경금지 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 네트워크 \u0026amp; 통신\u0026rsquo; 카테고리의 다른 글 데이터 통신과 네트워킹 Chapter 32 인터넷 보안 연습 문제 정답 (0) 2020.07.01 데이터 통신과 네트워킹 Chapter 30 서비스 품질 연습 문제 정답 (0) 2020.07.01 데이터 통신과 네트워킹 Chapter 29 대등-대-대등 패러다임 연습 문제 정답 (0) 2020.07.01 데이터 통신과 네트워킹 Chapter 28 멀티미디어 연습 문제 정답 (0) 2020.07.01 데이터 통신과 네트워킹 Chapter 27 네트워크 관리 연습 문제 정답 (0) 2020.06.30 ","permalink":"https://blog.sobamemil.com/posts/175-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%86%B5%EC%8B%A0%EA%B3%BC-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9-chapter-31-%EC%95%94%ED%98%B8%ED%99%94%EC%99%80-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EB%B3%B4%EC%95%88-%EC%97%B0%EC%8A%B5-%EB%AC%B8%EC%A0%9C-%EC%A0%95%EB%8B%B5/","summary":"\u003cp\u003e\u003cstrong\u003eChapter 31 암호화와 네트워크 보안 연습 문제 풀이(답)\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e보안의 세 가지 목적은 _______ 이다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. 기밀성, 무결성, 가용성\u003c/p\u003e\n\u003col start=\"2\"\u003e\n\u003cli\u003e다음의 공격 중에서 무결성을 위협하는 것은?\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; a. 위장\u003c/p\u003e\n\u003col start=\"3\"\u003e\n\u003cli\u003e다음의 공격 중에서 가용성을 위협하는 것은?\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. 서비스 거부\u003c/p\u003e\n\u003col start=\"4\"\u003e\n\u003cli\u003e_______ 는 연산을 통하여 메시지의 내용을 감추는 것을 의미한다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. 암호화\u003c/p\u003e\n\u003col start=\"5\"\u003e\n\u003cli\u003e_______ 는 무언가로 메시지를 덮어서 감추는 것을 의미한다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; a. 스테가노그라피\u003c/p\u003e\n\u003col start=\"6\"\u003e\n\u003cli\u003e_______ 암호화에서, 송신자와 수신자는 같은 키를 사용한다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; a. 대칭키\u003c/p\u003e","title":"데이터 통신과 네트워킹 Chapter 31 암호화와 네트워크 보안 연습 문제 정답"},{"content":"Chapter 30 서비스 품질 연습 문제 풀이(답)\n다음 중 데이터 흐름 고유 특성이 아닌 것은? -\u0026gt; d. A, B, C 모두 (a. 신뢰도, b. 지연, c. 대역폭)\n다음 중 서비스 품질을 구현하는데 사용되는 방법은 무엇인가? -\u0026gt; d. A, B, C 모두 (a. 스케줄링, b. 자원 예약, c. 트래픽 성형 및 감시)\n다음 방법 중 스케줄링 기술은 무엇인가? -\u0026gt; d. A, B, C 모두 (a. FIFO 큐잉, b. 우선순위 큐잉, c. 가중치공정 큐잉)\n_______ 알고리즘은 평균 데이터율로 버스트 트래픽을 고정속도 트래픽으로 성형하는 감시 기술이다. -\u0026gt; a. 리키 버킷\n_______ 알고리즘은 규제된 최고 속도에 버스트 트래픽을 허용하는 감시 기술이고, 유휴 상태 동안 사용자에게 약간의 신용을 제공한다. -\u0026gt; b. 토큰 버킷\nQoS 모델 중 자원예약에 크게 의존하는 것은 무엇인가? -\u0026gt; a. IntServ\n통합 서비스는 IP를 위해 설계된 _______ QoS 모델이다. -\u0026gt; a. flow-based\n차별화 서비스는 IP를 위해 설계된 _______ QoS 모델이다. -\u0026gt; b. class-based\nIntServ 안에 보장 서비스 모델은 _______ 애플리케이션을 위해서 필요하다. -\u0026gt; d. A, B, C 모두 (a. 주문형 AV, b. 저장된 AV, c. 실시간)\nIntServ 안에 부하 조절 서비스 모델은 _______ 애플리케이션을 위해서 설계되었다. -\u0026gt; a. 패킷 손실에 민감하지만 약간의 지연을 수용할 수 있는\nIntServ 모델은 _______ . -\u0026gt; c. 확장할 수 없고 서비스 종류가 제한된다.\n_______ 을 구현하기 위해서 DS 노드는 기록기, 표시기, 성형이과 폐쇄기 같은 _______ 를 사용한다. -\u0026gt; a. Diffsev, 트래픽 조절기\nFTP는 _______ 수준의 신뢰도를 필요로 한다. -\u0026gt; c. 높은\nVoIP는 _______ 수준의 신뢰도를 필요로 한다. -\u0026gt; a. 낮은\n우선순위 큐잉에서, 높은 우선순위 큐가 가득찰 경우 다음 패킷은 _______ . -\u0026gt; c. 폐기된다.\n가중치공정 큐잉에서, 기아는 _______ . -\u0026gt; b. 절대로 발생하지 않는다.\n리키 버킷 구현에서, 우리는 _______ 을 사용한다. -\u0026gt; a. FIFO 큐잉\n토큰 버킷 구현에서, 우리는 _______ 을 사용한다. -\u0026gt; a. FIFO 큐잉\n통합 서비스는 _______ 서비스 범주를 사용한다. -\u0026gt; b. 2개의\n통합 서비스는 _______ 사용한다. -\u0026gt; d. 경로메시지와 예약메시지 둘 다\n모든 답은 \u0026lsquo;데이터 통신과 네트워킹 5판(Data Communications and Networking Fifth Edition, Behrouz A. Forouzan 저)\u0026rsquo; 책을 공부하며 작성 하였습니다.\n혹시 틀린 답이 있다면 댓글로 알려주세요.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 변경금지 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 네트워크 \u0026amp; 통신\u0026rsquo; 카테고리의 다른 글 데이터 통신과 네트워킹 Chapter 32 인터넷 보안 연습 문제 정답 (0) 2020.07.01 데이터 통신과 네트워킹 Chapter 31 암호화와 네트워크 보안 연습 문제 정답 (0) 2020.07.01 데이터 통신과 네트워킹 Chapter 29 대등-대-대등 패러다임 연습 문제 정답 (0) 2020.07.01 데이터 통신과 네트워킹 Chapter 28 멀티미디어 연습 문제 정답 (0) 2020.07.01 데이터 통신과 네트워킹 Chapter 27 네트워크 관리 연습 문제 정답 (0) 2020.06.30 ","permalink":"https://blog.sobamemil.com/posts/174-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%86%B5%EC%8B%A0%EA%B3%BC-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9-chapter-30-%EC%84%9C%EB%B9%84%EC%8A%A4-%ED%92%88%EC%A7%88-%EC%97%B0%EC%8A%B5-%EB%AC%B8%EC%A0%9C-%EC%A0%95%EB%8B%B5/","summary":"\u003cp\u003e\u003cstrong\u003eChapter 30 서비스 품질 연습 문제 풀이(답)\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e다음 중 데이터 흐름 고유 특성이 아닌 것은?\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; d. A, B, C 모두 (a. 신뢰도, b. 지연, c. 대역폭)\u003c/p\u003e\n\u003col start=\"2\"\u003e\n\u003cli\u003e다음 중 서비스 품질을 구현하는데 사용되는 방법은 무엇인가?\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; d. A, B, C 모두 (a. 스케줄링, b. 자원 예약, c. 트래픽 성형 및 감시)\u003c/p\u003e\n\u003col start=\"3\"\u003e\n\u003cli\u003e다음 방법 중 스케줄링 기술은 무엇인가?\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; d. A, B, C 모두 (a. FIFO 큐잉, b. 우선순위 큐잉, c. 가중치공정 큐잉)\u003c/p\u003e","title":"데이터 통신과 네트워킹 Chapter 30 서비스 품질 연습 문제 정답"},{"content":"Chapter 29 대등-대-대등 패러다임 연습 문제 풀이(답)\n중앙집중형 P2P 네트워크에서 디렉터리 시스템은 _______ 패러다임을 사용하고, 파일의 저장과 다운로드는 _______ 패러다임을 사용하여 이루어진다. -\u0026gt; c. 클라이언트-서버; 대등-대-대등\n냅스터(Napster)는 _______ 대등-대-대등 네트워크의 한 예이다. -\u0026gt; a. 중앙집중형\n그누텔라(Gnutella)는 _______ 대등-대-대등 네트워크의 한 예이다. -\u0026gt; c. 비구조적-분산형\n비트토런트(BitTorrent)는 _______ 대등-대-대등 네트워크의 한 예이다. -\u0026gt; b. 구조적-분산형\n구조적-분산형 P2P 네트워크에서 _______ . -\u0026gt; c. 사전에 정의된 규칙들이 노드들을 연결하는데 사용되어 질의는 효과적이고 효율적으로 해결될 수 있다.\nDHT-기반 네트워크에서 각 구성원은 _______ . -\u0026gt; a. 전체 네트워크에 대한 부분지식을 가진다.\n핑거 테이블은 _______ 에서 사용되는 라우팅 테이블이다. -\u0026gt; d. 정답 없음 ( 코드 Chord ) (a. 그누텔라, b. 패스트리, c. 카뎀리아)\n다음 중 어는 것이 코드(chord)의 인터페이스가 아닌가? -\u0026gt; b. 픽스 노드(fix node)\n_______ 에서 키는 숫자상으로 가장 가까운 식별자를 가진 노드에 저장된다. -\u0026gt; b. 패스트리\n질의를 해결하기 위해 _______ 는 라우팅 테이블과 리프 셋(leaf set)이라는 두 개체를 사용한다. -\u0026gt; b. 패스트리\n카뎀리아에서 두 식별자(노드들 또는 키들) 사이의 거리는 비트-단위 _______ 로써 계산된다. -\u0026gt; d. 정답 없음 (XOR) (a. AND, b. NOR, c. OR)\n_______ 에서 노드들과 데이터 항목들은 m비트 식별자이며 식별자는 이진트리의 리프(leaf)들에 분산된 2m개의 점들로 구성된 식별자 공간을 생성한다. -\u0026gt; c. Kademlia\n카뎀리아에서 네트워크의 각 노드는 이진트리를 _______ m개의 서브트리로 분할한다. -\u0026gt; b. 노드 자체를 포함하지 않는\n트래커가 없는 비트토런트는 추적작업을 하기 위해 _______ DHT를 사용한다. -\u0026gt; c. 카뎀리아\n핑거 테이블은 _______ 가 사용한다. -\u0026gt; a. 코드\n모든 답은 \u0026lsquo;데이터 통신과 네트워킹 5판(Data Communications and Networking Fifth Edition, Behrouz A. Forouzan 저)\u0026rsquo; 책을 공부하며 작성 하였습니다.\n혹시 틀린 답이 있다면 댓글로 알려주세요.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 변경금지 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 네트워크 \u0026amp; 통신\u0026rsquo; 카테고리의 다른 글 데이터 통신과 네트워킹 Chapter 31 암호화와 네트워크 보안 연습 문제 정답 (0) 2020.07.01 데이터 통신과 네트워킹 Chapter 30 서비스 품질 연습 문제 정답 (0) 2020.07.01 데이터 통신과 네트워킹 Chapter 28 멀티미디어 연습 문제 정답 (0) 2020.07.01 데이터 통신과 네트워킹 Chapter 27 네트워크 관리 연습 문제 정답 (0) 2020.06.30 데이터 통신과 네트워킹 Chapter 26 표준 클라이언트-서버 프로토콜 연습 문제 정답 (0) 2020.06.30 ","permalink":"https://blog.sobamemil.com/posts/173-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%86%B5%EC%8B%A0%EA%B3%BC-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9-chapter-29-%EB%8C%80%EB%93%B1-%EB%8C%80-%EB%8C%80%EB%93%B1-%ED%8C%A8%EB%9F%AC%EB%8B%A4%EC%9E%84-%EC%97%B0%EC%8A%B5-%EB%AC%B8%EC%A0%9C-%EC%A0%95%EB%8B%B5/","summary":"\u003cp\u003e\u003cstrong\u003eChapter 29 대등-대-대등 패러다임 연습 문제 풀이(답)\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e중앙집중형 P2P 네트워크에서 디렉터리 시스템은 _______ 패러다임을 사용하고, 파일의 저장과 다운로드는 _______ 패러다임을 사용하여 이루어진다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. 클라이언트-서버; 대등-대-대등\u003c/p\u003e\n\u003col start=\"2\"\u003e\n\u003cli\u003e냅스터(Napster)는 _______ 대등-대-대등 네트워크의 한 예이다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; a. 중앙집중형\u003c/p\u003e\n\u003col start=\"3\"\u003e\n\u003cli\u003e그누텔라(Gnutella)는 _______ 대등-대-대등 네트워크의 한 예이다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. 비구조적-분산형\u003c/p\u003e\n\u003col start=\"4\"\u003e\n\u003cli\u003e비트토런트(BitTorrent)는 _______ 대등-대-대등 네트워크의 한 예이다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. 구조적-분산형\u003c/p\u003e\n\u003col start=\"5\"\u003e\n\u003cli\u003e구조적-분산형 P2P 네트워크에서 _______ .\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. 사전에 정의된 규칙들이 노드들을 연결하는데 사용되어 질의는 효과적이고 효율적으로 해결될 수 있다.\u003c/p\u003e","title":"데이터 통신과 네트워킹 Chapter 29 대등-대-대등 패러다임 연습 문제 정답"},{"content":"Chapter 28 멀티미디어 연습 문제 풀이(답)\n_______ 압축에서 데이터의 무결성은 압축과 해제 알고리즘은 정확히 역의 관계이기 때문에 _______ . -\u0026gt; a. 무손실, 보존한다.\n다음 압축 방법 중 무손실 압축이 아닌 것은? -\u0026gt; d. 예측 부호화\nLempel Ziv Welch(LZW) 방법은 _______ 의 예제이다. -\u0026gt; b. 사전 부호화\n_______ 은 좀 더 자주 발생하는 심벌에 더 짧은 코드를 할당하고 적게 발생하는 심벌에 짧은 코드를 할당한다. -\u0026gt; d. 허프만 부호화\n산술 부호화에서 전체 메시지는 _______ 구간의 실제 숫자로 매핑된다. -\u0026gt; c. [0, 1)\n다음 압축 방법 중 예측 부호화로 간주되는 것은 무엇인가? -\u0026gt; d. A, B, C 모두 (a. DM, b. DPCM, c. LPC)\n각 샘플을 분히라는 양자화 대신에 _______ 에서 차이점은 양자화되어 있다. -\u0026gt; a. 예측 부호화\n적응형 델타변조는 델타 변호에서 _______ 의 문제를 풀기 위해서 사용된다. -\u0026gt; c. 과부하 왜곡 혹은 입상 잡음\n_______ 은 높은 수준의 압축을 달성하고, 일반적으로 연설의 압축을 위해서 군대에서 사용한다. 합성된 연설은 스피커를 식별할 수 있는 품질과 자연스러움이 이해하기 부족하다. (해석 이상) -\u0026gt; a. LCP\n_______ 부호화는 사람이 어떻게 소리를 감지하는지를 연구하는 음향 심리학을 기반으로 한다. -\u0026gt; b. 지각\n멀티미디어에서 사용되는 변환 부호화의 단계 중 손실 방법은 무엇인가? -\u0026gt; b. 양자화 단계\n사각 행렬로 표현되는 DCT 계수값은 역과 전치가 같은 _______ 행렬이다. -\u0026gt; c. 직교\n_______ 은 이미지 압축을 위해서 사용된다. -\u0026gt; b. JPEG\nJPEG 압축 과정의 첫 번째 단계는 _______ 이다. -\u0026gt; a. DCT 변환\nJPEG 압축 과정의 두 번째 단계는 _______ 이다. -\u0026gt; b. 양자화\nJPEG 의 세 번째 단계는 _______ 이다. -\u0026gt; c. 무손실 압축 부호화\n_______ 은 비디오 압축에 사용되어진다. -\u0026gt; a. MPEG\nMPEG 방법에서 각 프레임의 _______ 압축은 JPEG과 함께 수행된다. -\u0026gt; b. 공간적, 일시적\n_______ AV는 압축된 AV파일을 위해 주문형 요청을 나타낸다. -\u0026gt; b. 저장된 스트리밍\n_______ AV는 인터넷을 통해서 라디오와 TV 프로그램의 방송을 나타낸다. -\u0026gt; a. 라이브 스트리밍\n_______ AV는 양방향 AV 응용을 위해 인터넷을 사용하는 것을 나타낸다. -\u0026gt; c. 양방향\n_______ 버퍼는 실시간 트래픽을 위해 요구된다. -\u0026gt; a. 재생\n패킷의 시간 관계성과 순서를 설립하기 위해서 실시간 트래픽은 각 패킷에 _______ 필요하다. -\u0026gt; c. 타임스탬프와 순서 번호 둘 다\n_______ 은 페이로드의 부호화를 수신 네트워크의 대역폭을 맞추기 위해 낮은 품질로 변화시키는 것을 의미한다. -\u0026gt; a. 변형 (변환)\n_______ 은 트래픽의 여러 스트림을 하나의 스트림으로 결합하는 것을 의미한다. -\u0026gt; b. 혼합\n손실 및 손상된 패킷을 만들어 내기 위해, 일반적으로 실시간 트래픽은 _______ . -\u0026gt; b. 전방향 오류 수정(FEC)방법을 사용한다.\n실시간 비디오 성능은 10분 정도 소요된다. 시스템에 지터가 있는 경우, 뷰어는 성능을 보이기 위해서 _______ 소비한다. -\u0026gt; b. 10분보다 더 많이\n_______ 은 패킷이 첫 번째 혹은 전의 패킷과 관련되어 생성되는 시간을 보여준다. -\u0026gt; a. 타임스탬프\n_______ 는 실시간 전송의 패킷 번호를 사용한다. -\u0026gt; c. 순서 번호\n_______ 는 다른 소스들로 부터 단일 합성 신호를 생성하기 위해서 신호를 추가한다. -\u0026gt; c. 혼합기\n_______ 는 높은 대역폭 비디오의 포맷을 낮은 품질의 협대역 신호로 변화시킨다. -\u0026gt; c. 번역기 (변환기)\n_______ 는 멀티미디어 세션을 달성하고, 관리하고 종료하는 응용층 프로토콜이다. -\u0026gt; a. SIP\n_______ 는 공중전화 네트워크의 전화가 인터넷에 연결된 컴퓨터와 대화하기 위해 ITU로 설계된 표준이다. -\u0026gt; b. H.323\n_______ 는 패킷의 재전송을 허락하지 않기 때문에 양방향 멀티미디어 트래픽에 적당하지 않다. ( _______ 는 대화형 멀티미디어 트래픽에 적합하지 않다. 왜냐하면 대화형 멀티미디어는 패킷의 재전송을 허용하지 않기 때문이다. )\n-\u0026gt; a. TCP\n_______ 는 인터넷상의 실시간 트래픽을 다루기 위해서 설계된 프로토콜이다. -\u0026gt; c. RTP\n_______ 는 RTP에 관련하여 흐름과 데이터의 품질을 제어하기 위한 프로토콜이다. -\u0026gt; b. RTCP\nRTP 패킷은 _______ 에서 캡슐화된다. -\u0026gt; a. UDP 사용자 데이터그램\n모든 답은 \u0026lsquo;데이터 통신과 네트워킹 5판(Data Communications and Networking Fifth Edition, Behrouz A. Forouzan 저)\u0026rsquo; 책을 공부하며 작성 하였습니다.\n혹시 틀린 답이 있다면 댓글로 알려주세요.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 변경금지 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 네트워크 \u0026amp; 통신\u0026rsquo; 카테고리의 다른 글 데이터 통신과 네트워킹 Chapter 30 서비스 품질 연습 문제 정답 (0) 2020.07.01 데이터 통신과 네트워킹 Chapter 29 대등-대-대등 패러다임 연습 문제 정답 (0) 2020.07.01 데이터 통신과 네트워킹 Chapter 27 네트워크 관리 연습 문제 정답 (0) 2020.06.30 데이터 통신과 네트워킹 Chapter 26 표준 클라이언트-서버 프로토콜 연습 문제 정답 (0) 2020.06.30 데이터 통신과 네트워킹 Chapter 25 응용층 소개 연습 문제 정답 (0) 2020.06.30 ","permalink":"https://blog.sobamemil.com/posts/172-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%86%B5%EC%8B%A0%EA%B3%BC-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9-chapter-28-%EB%A9%80%ED%8B%B0%EB%AF%B8%EB%94%94%EC%96%B4-%EC%97%B0%EC%8A%B5-%EB%AC%B8%EC%A0%9C-%EC%A0%95%EB%8B%B5/","summary":"\u003cp\u003e\u003cstrong\u003eChapter 28 멀티미디어 연습 문제 풀이(답)\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e_______ 압축에서 데이터의 무결성은 압축과 해제 알고리즘은 정확히 역의 관계이기 때문에 _______ .\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; a. 무손실, 보존한다.\u003c/p\u003e\n\u003col start=\"2\"\u003e\n\u003cli\u003e다음 압축 방법 중 무손실 압축이 아닌 것은?\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; d. 예측 부호화\u003c/p\u003e\n\u003col start=\"3\"\u003e\n\u003cli\u003eLempel Ziv Welch(LZW) 방법은 _______ 의 예제이다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. 사전 부호화\u003c/p\u003e\n\u003col start=\"4\"\u003e\n\u003cli\u003e_______ 은 좀 더 자주 발생하는 심벌에 더 짧은 코드를 할당하고 적게 발생하는 심벌에 짧은 코드를 할당한다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; d. 허프만 부호화\u003c/p\u003e\n\u003col start=\"5\"\u003e\n\u003cli\u003e산술 부호화에서 전체 메시지는 _______ 구간의 실제 숫자로 매핑된다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. [0, 1)\u003c/p\u003e","title":"데이터 통신과 네트워킹 Chapter 28 멀티미디어 연습 문제 정답"},{"content":"Chapter 27 네트워크 관리 연습 문제 풀이(답)\n네트워크 관리는 한 기관에 의해 정의된 일련의 요구사항을 만족하기 위해 네트워크 구성요소들을 _______ 하는 것으로 정의할 수 있다. -\u0026gt; d. 위의 모든 선택이 맞음 (a. 감시(monitoring), b. 구성(configuring), c. 시험과 고장수리(testing and trouble shooting))\n_______ 관리 시스템은 항상 각 개체의 상태와 개체간의 관계를 반드시 알아야 한다. -\u0026gt; a. 구성 (configuration)\n_______ 관리 시스템은 네트워크가 가능한 효율적으로 실행되는 것을 보장하기 위해 네트워크를 감시하고 제어한다. -\u0026gt; d. 성능(performance)\n_______ 관리 시스템은 사전에 정의된 정책에 기반을 두어 네트워크 접근을 제어하는 책임을 진다. -\u0026gt; c. 보안(secutiry)\n_______ 관리에서는 개인사용자, 부서, 상위부서, 또는 프로젝트까지도 네트워크로부터 받고 서비스에 대해 비용을 부여받는다. -\u0026gt; b. 계정(accounting)\n몇몇 관리자 지국이 일련의 에이전트를 제어하는 SNMP는 _______ 프로토콜이다. -\u0026gt; a. 응용 수준(application-level)\n_______ 라 불리는 지국은 SNMP 클라이언트 프로그램을 실행하는 호스트이다. -\u0026gt; a. 관리자(manager)\n_______ 라 불리는 장치는 SNMP 서버 프로그램을 실행하는 라우터(또는 호스트)이다. -\u0026gt; b. 에이전트(agent)\nSNMP는 관리자(manager)와 에이전트 사이에 교환되는 패킷의 _______ 를 정의한다. -\u0026gt; a. 규격(format)\n관리자(manager)는 SNMP _______ 프로세스를 수행하는 호스트이다. -\u0026gt; a. 클라이언트(client)\n에이전트(agent)는 SNMP _______ 프로세스를 실행하는 호스트 또는 라우터이다. -\u0026gt; b. 서버(server)\nSNMP는 두 가지 다른 프로토콜, 즉 _______ 와 _______ 라는 프로토콜을 사용한다. -\u0026gt; b. SMI; MIB\n_______ 는 객체의 이름을 부여하고 객체형식을 정의하고 객체와 값을 인코딩하는 방법을 보여주기 위한 일반적인 규칙을 정의한다. -\u0026gt; c. SMI\n_______ 는 한 무리의 이름이 만들어진 객체, 그 객체들의 유형, 관리되어야 하는 한 개체 내에서 객체들 간의 관계를 생성한다. -\u0026gt; a. MIB\n_______ 는 한 무리의 이름이 만들어진 객체, 그 객체들의 유형, 관리되어야 하는 한 개체 내에서 객체들 간의 관계를 형성한다. -\u0026gt; b. MIB\n우리는 네트워크 관리 작업과 프로그램 작성 작업을 비교할 수 있다. 두 일은 모두 변수 정의와 선언이 필요하다. 네트워크 관리에서 이것은 _______ 로 처리된다. -\u0026gt; c. SMI\n우리는 네트워크 관리 작업과 프로그램 작성 작업을 비교할 수 있다. 두 작업도 모두 명령문으로 수행되는 행동을 갖는다. 네트워크 관리에서 이것을 _______ 로 다루어진다. -\u0026gt; b. MIB\nSMI는 객체를 다루기 위해 세 가지의 속성, 즉 _______ , _______ , _______ 을 중시한다. -\u0026gt; c. 이름; 데이터 유형; 인코딩 방법\n객체에 범용적인 이름을 부여하기 위해 SMI는 _______ 구조에 기반을 두는 계층식별자인 객체 식별자를 사용한다. -\u0026gt; b. 트리(tree)\nSNMP가 관리하는 모든 객체는 객체 식별자가 주어진다. 객체 식별자는 항상 _______ 로 시작한다. -\u0026gt; a. 1.3.6.1.2.1\n데이터 유형을 정의하기 위해 SMI는 _______ 에 있는 기본 정의를 사용하고 일부 새로운 정의를 추가한다. -\u0026gt; b. AMS.2\nSMI는 _______ 와 _______ 라는 두 가지 데이터 유형의 넓은 분류를 갖는다. -\u0026gt; b. 단순; 구조화(simple; structured)\n_______ 데이터 유형은 원시적 데이터 형식이다. -\u0026gt; b. 단순(simple)\nSMI는 _______ 와 _______ 라는 두 가지의 데이터 구조의 유형을 정의한다. -\u0026gt; b. sequence; a sequence of\nSMI는 네트워크를 통해 전송되는 데이터를 부호화하기 위하여 또 하나의 표준인 _______ 을 사용한다. -\u0026gt; c. BER\nBER은 세 가지 _______ 를 사용하여 인코딩되는 데이터의 부분들을 세분화 정의한다. -\u0026gt; a. 유형, 값, 이름\nBER에서 태그(tag)는 데이터 유형을 정의하는 _______ 필드이다; 길이(length)는 _______ 필드이다. -\u0026gt; d. 정답 없음 (1바이트; 1 또는 그 이상의 바이트)\nGetRequest PDU는 하나 또는 일련의 변수값을 얻기 위하여 _______ 에서 _______ 로 보내진다. -\u0026gt; a. 클라이언트; 서버\nResponse PDU는 _______ 에서 _______ 로 보내진다. -\u0026gt; a. 서버; 클라이언트\nTrapPDU는 이벤트 보고를 위해 _______ 에서 _______ 로 보내진다. -\u0026gt; a. 서버; 클라이언트\nSNMP는 두 가지 잘 알려진 포트인 _______ 과 _______ 번의 UDP 서비스를 이용한다. -\u0026gt; a. 161; 162\n_______ 은 SNMP 클라이언트 프로그램을 실행한다; _______ 은 SNMP 서버 프로그램을 실행한다. -\u0026gt; c. 관리자; 에이전트\n다음 중 MIB 객체 식별자로 적절한 것은? -\u0026gt; a. 1.3.6.1.2.1.1\n1바이트 길이 필드에서 데이터의 길이의 최댓값은 얼마인가? -\u0026gt; a. 127\nSNMP 에이전트는 _______ 메시지를 보낼 수 있다. -\u0026gt; c. Trap\n모든 답은 \u0026lsquo;데이터 통신과 네트워킹 5판(Data Communications and Networking Fifth Edition, Behrouz A. Forouzan 저)\u0026rsquo; 책을 공부하며 작성 하였습니다.\n혹시 틀린 답이 있다면 댓글로 알려주세요.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 변경금지 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 네트워크 \u0026amp; 통신\u0026rsquo; 카테고리의 다른 글 데이터 통신과 네트워킹 Chapter 29 대등-대-대등 패러다임 연습 문제 정답 (0) 2020.07.01 데이터 통신과 네트워킹 Chapter 28 멀티미디어 연습 문제 정답 (0) 2020.07.01 데이터 통신과 네트워킹 Chapter 26 표준 클라이언트-서버 프로토콜 연습 문제 정답 (0) 2020.06.30 데이터 통신과 네트워킹 Chapter 25 응용층 소개 연습 문제 정답 (0) 2020.06.30 데이터 통신과 네트워킹 Chapter 24 전송층 프로토콜 연습 문제 정답 (0) 2020.06.29 ","permalink":"https://blog.sobamemil.com/posts/171-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%86%B5%EC%8B%A0%EA%B3%BC-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9-chapter-27-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EA%B4%80%EB%A6%AC-%EC%97%B0%EC%8A%B5-%EB%AC%B8%EC%A0%9C-%EC%A0%95%EB%8B%B5/","summary":"\u003cp\u003e\u003cstrong\u003eChapter 27 네트워크 관리 연습 문제 풀이(답)\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e네트워크 관리는 한 기관에 의해 정의된 일련의 요구사항을 만족하기 위해 네트워크 구성요소들을 _______ 하는 것으로 정의할 수 있다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; d. 위의 모든 선택이 맞음 (a. 감시(monitoring), b. 구성(configuring), c. 시험과 고장수리(testing and trouble shooting))\u003c/p\u003e\n\u003col start=\"2\"\u003e\n\u003cli\u003e_______ 관리 시스템은 항상 각 개체의 상태와 개체간의 관계를 반드시 알아야 한다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; a. 구성 (configuration)\u003c/p\u003e\n\u003col start=\"3\"\u003e\n\u003cli\u003e_______ 관리 시스템은 네트워크가 가능한 효율적으로 실행되는 것을 보장하기 위해 네트워크를 감시하고 제어한다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; d. 성능(performance)\u003c/p\u003e","title":"데이터 통신과 네트워킹 Chapter 27 네트워크 관리 연습 문제 정답"},{"content":"Chapter 26 표준 클라이언트-서버 프로토콜 연습 문제 풀이(답)\nHTTP는 _______ 의 서비스를 사용한다. -\u0026gt; c. TCP\nHTTP에서 요청 메시지의 첫 번째 라인은 _______ 라인이며, 응답 메시지의 첫 번째 라인은 _______ 라인이다. -\u0026gt; d. 정답이 없음 (요청; 상태) (a. 요청; 응답, b. 상태; 응답, c. 상태; 상태)\n_______ 접속에서 하나의 TCP 연결은 각각 요청/응답으로 구성되어 있다. -\u0026gt; b. 비영구적\n_______ 연결에서 서버는 응답을 전송한 후 더 많은 요청을 위해 연결을 열어놓은 채 접속을 남겨둔다. -\u0026gt; a. 영구적\nHTTP에서 _______ 서버는 최근 요청에 대한 응답 사본을 가지고 있는 컴퓨터이다. -\u0026gt; b. 프록시(proxy)\n메시지를 요청하는 HTTP는 항상 _______ 를 가진다. -\u0026gt; b. 요청 라인과 헤더 라인\n아래 중 HTTP의 요청 라인과 상태 라인 양쪽에 존재하는 것은 무엇인가? -\u0026gt; a. 버전 번호(version number)\nFTP는 _______ 의 서비스를 사용한다. -\u0026gt; c. TCP\nFTP는 _______ 의 잘 알려진 포트를 사용한다. -\u0026gt; b. 2개\nFTP 세션이 유지되는 동안 제어 연결은 _______ 열려진다. -\u0026gt; a. 한 번 FTP 세션이 유지되는 동안 데이터 연결은 _______ 열려진다. -\u0026gt; c. 필요한 만큼 많이\nFTP에서 파일은 레코드, 페이지 또는 바이트의 흐름으로 조직될 수 있다. -\u0026gt; b. 데이터 구조\nFTP에서 스트림, 블록, 압축된 세 가지 형식의 _______ 이 있다. -\u0026gt; c. 전송 모드\nFTP, ASCII, EBCDIC와 이미지는 _______ 라 불리는 속성을 정의한다. -\u0026gt; a. 파일 형식\nFTP에서 _______ 할 때, 파일은 클라이언트로부터 서버로 복사된다. -\u0026gt; b. 파일을 저장\n일반적인 시나리오에서 전자우편 시스템은 _______ 를 필요로 한다. -\u0026gt; c. 2개의 UA, 2짝의 MTA, 1짝의 MAA\n_______ 는 사용자에게 메시지를 쉽게 송신하거나 수신하는 과정을 만드는 서비스를 제공한다. -\u0026gt; c. UA\n이메일 메시지는 _______ 와 _______ 로 구성된다. -\u0026gt; d. 정답 없음 (봉투; 메시지) (a. 헤더; 봉투(header; envelop), b. 헤더; 바디(header; body), c. 봉투; 바디(envelop; body))\n인터넷에서 이메일 주소는 두 부분, _______ 와 _______ 로 구성된다. -\u0026gt; a. 로컬 부분; 도메인 부분(local part; domain name)\n이메일을 통해 전송된 ASCII가 아닌 데이터를 허용하는 보충 프로토콜은 _______ 이다. -\u0026gt; c. MIME\n인터넷에서 MTA 클라이언트와 서버를 규정하는 정규 프로토콜은 _______ 이다. -\u0026gt; a. SMTP\nSMTP는 _______ 프로토콜이다. -\u0026gt; b. push\n메시지 접근 프로토콜은 _______ 프로토콜이다. -\u0026gt; a. pull\n_______ 부호화 방법에서, 각 24비트들은 4개의 6비트 덩어리가 되고 결국 32비트로 전송된다. -\u0026gt; c. base64\n_______ 부호화 방법에서, non-ASCII 문자는 3개의 문자로 보내진다. -\u0026gt; c. quoted-printable\nTELNET은 _______ 를 위한 약어이다. -\u0026gt; a. 터미널 네트워크\n사용자가 로컬 시분할 시스템에 로그인할 때를 _______ 로그인이라 부른다. -\u0026gt; a. 로컬(local)\n사용자가 원격 기계에 있는 애플리케이션 프로그램이나 유틸리티에 접근을 원할 때, 사용자는 _______ 로그인을 수행한다. -\u0026gt; b. 원격(remote)\n네트워크 가상 터미널 (NVT)는 _______ 를 위해 하나, _______ 를 위한 또 하나의 2개의 문자 집합을 사용한다. -\u0026gt; c. 데이터; 제어(data; control)\n데이터를 위해 NVT는 최상위 비트가 _______ 로 설정된 US 아스키 문자를 사용한다. -\u0026gt; b. 0\n제어를 위해 NVT는 최상위 비트가 _______ 로 설정된 US 아스키 문자를 사용한다. -\u0026gt; a. 1\n_______ 는 로컬 문자를 NVT 문자로 해석한다. -\u0026gt; b. 텔넷 클라이언트(TELNET client)\n_______ 는 원격 운영 시스템에 의해 받아들일 수 있는 형태로 NVT 문자를 해석한다. -\u0026gt; c. 텔넷 서버(TELNET server)\nSSH에 있는 _______ 구성요소는 기밀성, 무결성, 인증, 압축을 제공한다. -\u0026gt; d. SSH-TRAN\n포트 포워딩은 _______ 이다. -\u0026gt; c. 보안 서비스를 제공하지 않는 애플리케이션 프로그램을 위한 안전한 채널을 만드는 SSH에 의해 제공된 서비스\n_______ 이름 공간에서, 이름은 구조 없는 문자의 순서이다. -\u0026gt; b. 단층적(flat)\n_______ 이름 공간에서, 각 이름은 여러 부분으로 구성되어 있다. -\u0026gt; c. 계층적(hierarchical)\nDNS에서 이름은 _______ 구조로 규정된다. -\u0026gt; b. 반전된 트리(inverted-tree)\nDNS 트리의 루트는 _______ 이다. -\u0026gt; d. 빈 스트링(empty string)\n도메인 이름 공간에서 전체 도메인 이름은 _______ 에 의해 구분된 레이블의 순서이다. -\u0026gt; c. 점(dot)\n도메인 이름 공간에서 레이블이 빈 문자로 종료되는 경우 _______ 라 한다. -\u0026gt; d. 정답 없음 (FQDN) (a. PQDN, b. CQDN, c. SQDN)\n도메인 이름 공간에서 레이블이 빈 문자로 종료되지 않는 경우를 _______ 라 한다. -\u0026gt; b. PQDN\n도메인 이름 공간에서 _______ 는 도메인 이름 공간의 하위 트리이다. -\u0026gt; c. 도메인(domain)\n도메인 이름 공간에서 책임이 있거나 권한을 가진 서버를 _______ 라 부른다. -\u0026gt; c. 영역(zone)\n_______ 서버는 전체 트리를 구성하는 영역 시스템을 가진 컴퓨터이다. -\u0026gt; c. 루트(root)\n_______ 서버는 권한을 가진 영역에 대한 파일을 저장하는 컴퓨터이다. -\u0026gt; a. 일차(primary)\n_______ 서버는 다른 서버의 영역에 대한 정확한 정보를 전송하는 컴퓨터이다. -\u0026gt; b. 이차(secondary)\n인터넷에서 국가 도메인 영역은 _______ 국가 약어를 사용한다. -\u0026gt; a. 두 글자\n_______ 해결에서 해결자는 마지막 응답을 제공하는 서버를 기대한다. -\u0026gt; b. 재귀(recursive)\n_______ 해결에서 서버는 질의를 해결할 수 있다고 생각하는 서버의 IP 주소를 반환한다. -\u0026gt; a. 반복(iterative)\nDNS는 _______ 의 서비스를 사용할 수 있다. -\u0026gt; c. UDP 또는 TCP\n모든 답은 \u0026lsquo;데이터 통신과 네트워킹 5판(Data Communications and Networking Fifth Edition, Behrouz A. Forouzan 저)\u0026rsquo; 책을 공부하며 작성 하였습니다.\n혹시 틀린 답이 있다면 댓글로 알려주세요.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 네트워크 \u0026amp; 통신\u0026rsquo; 카테고리의 다른 글 데이터 통신과 네트워킹 Chapter 28 멀티미디어 연습 문제 정답 (0) 2020.07.01 데이터 통신과 네트워킹 Chapter 27 네트워크 관리 연습 문제 정답 (0) 2020.06.30 데이터 통신과 네트워킹 Chapter 25 응용층 소개 연습 문제 정답 (0) 2020.06.30 데이터 통신과 네트워킹 Chapter 24 전송층 프로토콜 연습 문제 정답 (0) 2020.06.29 데이터 통신과 네트워킹 Chapter 23 전송층의 개요 연습 문제 정답 (0) 2020.06.29 ","permalink":"https://blog.sobamemil.com/posts/170-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%86%B5%EC%8B%A0%EA%B3%BC-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9-chapter-26-%ED%91%9C%EC%A4%80-%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8-%EC%84%9C%EB%B2%84-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C-%EC%97%B0%EC%8A%B5-%EB%AC%B8%EC%A0%9C-%EC%A0%95%EB%8B%B5/","summary":"\u003cp\u003e\u003cstrong\u003eChapter 26 표준 클라이언트-서버 프로토콜 연습 문제 풀이(답)\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eHTTP는 _______ 의 서비스를 사용한다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. TCP\u003c/p\u003e\n\u003col start=\"2\"\u003e\n\u003cli\u003eHTTP에서 요청 메시지의 첫 번째 라인은 _______ 라인이며, 응답 메시지의 첫 번째 라인은 _______ 라인이다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; d. 정답이 없음 (요청; 상태) (a. 요청; 응답, b. 상태; 응답, c. 상태; 상태)\u003c/p\u003e\n\u003col start=\"3\"\u003e\n\u003cli\u003e_______ 접속에서 하나의 TCP 연결은 각각 요청/응답으로 구성되어 있다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. 비영구적\u003c/p\u003e\n\u003col start=\"4\"\u003e\n\u003cli\u003e_______ 연결에서 서버는 응답을 전송한 후 더 많은 요청을 위해 연결을 열어놓은 채 접속을 남겨둔다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; a. 영구적\u003c/p\u003e","title":"데이터 통신과 네트워킹 Chapter 26 표준 클라이언트-서버 프로토콜 연습 문제 정답"},{"content":"Chapter 25 응용층 소개 연습 문제 풀이(답)\n클라이언트-서버 패러다임에서 _______ 프로그램은 (다른) _______ 프로그램에게 서비스를 제공한다. -\u0026gt; c. 서버; 클라이언트\n클라이언트-서버 패러다임에서 _______ . -\u0026gt; c. 서버는 항상 실행되어야 하지만 클라이언트는 필요할 때만 실행된다.\n네트워크 프로그래밍은 어떤 언어이든 반드시 _______ 와 _______ 를 다룰 필요가 있다. -\u0026gt; c. IP주소; 포트번호\n자바에서 IP주소는 _______ 클래스의 한 인스턴스인 객체로서 정의된다. -\u0026gt; a. InetAddress\n자바에서 다음 어느 문장이 옳은가? -\u0026gt; c. IPv4와 IPv6 주소들을 만들려면 InetAddress 클래스를 사용할 수 있다.\n자바에서 포트번호는 _______ 정수로 정의된다. -\u0026gt; b. 24비트 정수\n자바 네트워크 프로그래밍에서 소켓 주소를 위해 사용되는 클래스는 _______ 클래스이다. -\u0026gt; c. Inet소켓Address\n클라이언트-서버 패러다임에서 서버는 _______ 서버 또는 _______ 서버로서 설계될 수 있다. -\u0026gt; b. 반복; 병행\n병행서버는 _______ 에게 서비스를 제공할 수 있다. -\u0026gt; c. 동시에 여러 클라이언트\n반복서버는 _______ 를 처리한다. -\u0026gt; a. 한 번에 한 클라이언트\nUDP의 자바 구현은 _______ 을 사용한다. -\u0026gt; a. 단 한 종류의 소켓 객체들\n데이터그램소켓 클래스는 _______ 에서 소켓들을 생성하는데 사용된다. -\u0026gt; c. UDP 클라이언트와 UDP 서버 둘 다 _______ 클래스는 데이터그램패킷을 만드는데 사용된다. -\u0026gt; c. 데이터그램소켓 또는 데이터그램패킷\nTCP의 자바 구현은 _______ 의 소켓 객체들을 사용한다. -\u0026gt; b. 단 두 종류\nTCP의 자바 구현에서 클라이언트는 _______ 를 사용하고 서버는 _______ 를 사용한다. -\u0026gt; c. 소켓 객체; 서버소켓 객체와 소켓 객체\n서버소켓은 때로 _______ 소켓 또는 _______ 소켓이라고 부른다. -\u0026gt; a. 수동(passive); 청취(listen)\n_______ 는 연결을 설정하는 책임이 있다. -\u0026gt; c. 클라이언트소켓\n자바에서 getOutputStream과 getInputStream의 두 메소드는 _______ 클래스에서 제공된다. -\u0026gt; b. 소켓\n모든 답은 \u0026lsquo;데이터 통신과 네트워킹 5판(Data Communications and Networking Fifth Edition, Behrouz A. Forouzan 저)\u0026rsquo; 책을 공부하여 작성하였습니다.\n혹시 틀린 답이 있다면 댓글로 알려주세요.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 변경금지 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 네트워크 \u0026amp; 통신\u0026rsquo; 카테고리의 다른 글 데이터 통신과 네트워킹 Chapter 27 네트워크 관리 연습 문제 정답 (0) 2020.06.30 데이터 통신과 네트워킹 Chapter 26 표준 클라이언트-서버 프로토콜 연습 문제 정답 (0) 2020.06.30 데이터 통신과 네트워킹 Chapter 24 전송층 프로토콜 연습 문제 정답 (0) 2020.06.29 데이터 통신과 네트워킹 Chapter 23 전송층의 개요 연습 문제 정답 (0) 2020.06.29 데이터 통신과 네트워킹 Chapter 22 차세대 IP 연습 문제 정답 (1) 2020.06.29 ","permalink":"https://blog.sobamemil.com/posts/169-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%86%B5%EC%8B%A0%EA%B3%BC-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9-chapter-25-%EC%9D%91%EC%9A%A9%EC%B8%B5-%EC%86%8C%EA%B0%9C-%EC%97%B0%EC%8A%B5-%EB%AC%B8%EC%A0%9C-%EC%A0%95%EB%8B%B5/","summary":"\u003cp\u003e\u003cstrong\u003eChapter 25 응용층 소개 연습 문제 풀이(답)\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e클라이언트-서버 패러다임에서 _______ 프로그램은 (다른) _______ 프로그램에게 서비스를 제공한다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. 서버; 클라이언트\u003c/p\u003e\n\u003col start=\"2\"\u003e\n\u003cli\u003e클라이언트-서버 패러다임에서 _______ .\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. 서버는 항상 실행되어야 하지만 클라이언트는 필요할 때만 실행된다.\u003c/p\u003e\n\u003col start=\"3\"\u003e\n\u003cli\u003e네트워크 프로그래밍은 어떤 언어이든 반드시 _______ 와 _______ 를 다룰 필요가 있다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. IP주소; 포트번호\u003c/p\u003e\n\u003col start=\"4\"\u003e\n\u003cli\u003e자바에서 IP주소는 _______ 클래스의 한 인스턴스인 객체로서 정의된다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; a. InetAddress\u003c/p\u003e\n\u003col start=\"5\"\u003e\n\u003cli\u003e자바에서 다음 어느 문장이 옳은가?\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. IPv4와 IPv6 주소들을 만들려면 InetAddress 클래스를 사용할 수 있다.\u003c/p\u003e","title":"데이터 통신과 네트워킹 Chapter 25 응용층 소개 연습 문제 정답"},{"content":"Chapter 24 전송층 프로토콜 연습 문제 풀이(답)\nUDP와 TCP는 _______ 계층 프로토콜이다. -\u0026gt; c. 전송\n포트 번호는 _______ 비트 길이다. -\u0026gt; b. 16\n다음 중 UDP가 제공하는 기능은? -\u0026gt; d. 정답 없음 (a. 흐름 제어, b. 연결 지향 배달, c. 오류 제어)\nUDP 사용자 데이터그램 헤더의 근원지 포트 주소는 _______ 를 나타낸다. -\u0026gt; c. 송신 컴퓨터에서 구동되는 프로세스\nUDP 서비스를 이용하기 위해서 _______ 개의 소켓 주소가 필요하다. -\u0026gt; b. 2\nUDP 패킷을 _______ 라고 한다. -\u0026gt; a. 사용자 데이터그램\nUDP 패킷은 _______ 바이트의 고정 크기를 헤더를 갖는다. -\u0026gt; b. 8\nTCP는 _______ 프로토콜이다. -\u0026gt; a. 바이트 중심\nTCP는 _______ 라고 하는 패킷으로 바이트 열을 그룹화한다. -\u0026gt; b. 세그먼트\nTCP는 _______ 프로토콜이다. -\u0026gt; a. 연결 중심\nTCP는 _______ 전송 프로토콜이다. -\u0026gt; c. 신뢰성\nTCP는 데이터가 오류 없이 안전하게 도착했는지를 검사하기 위하여 _______ 를 이용한다. -\u0026gt; a. 확인응답 메커니즘\n각 연결에서 전송되는 데이터 바이트들은 TCP에 의해서 번호가 매겨진다. 번호는 _______ 부터 시작된다. -\u0026gt; c. 임의로 발생한 번호\nTCP에서 각 세그먼트의 순서번호는 그 세그먼트로 전달되는 _______ 바이트의 번호이다. -\u0026gt; a. 첫 번째\nTCP 통신은 _______ 이다. -\u0026gt; c. 전이중\nTCP에서 세그먼트의 확인응답 필드의 값은 수신측에서 수신하기를 기대하는 _______ 바이트와 관련된 순서번호를 나타낸다. -\u0026gt; a. 첫 번째\nTCP 세그먼트에서 검사합의 포함은 _______ 이다. -\u0026gt; b. 필수\nTCP에서 SYN 세그먼트는 _______ 개의 순서번호를 소비한다. -\u0026gt; b. 1\nTCP에서 SYN 1 ACK 세그먼트는 _______ 개의 순서번호를 소비한다. -\u0026gt; d. 1\nTCP에서 ACK 세그먼트는 데이터를 전달하지 않을 때에는 _______ 개의 순서번호를 소비한다. -\u0026gt; a. 0\nTCP의 연결 설정 절차는 _______ 공격이라고 하는 심각한 보안 문제에 노출되어 있다. -\u0026gt; c. SYN 플러딩\nSYN 플러딩 공격은 _______ 공격이라고 하는 집단의 보안 공격에 속한다. -\u0026gt; a. 서비스 거부\nFIN 세그먼트는 데이터를 전달하지 않으면 _______ 개의 순서번호를 소비한다. -\u0026gt; d. 1\nTCP에서, FIN + ACK 세그먼트는 데이터를 전달하지 않으면 _______ 개의 순서번호를 소비한다. -\u0026gt; c. 1\nTCP에서 한쪽 끝은 데이터를 수신하면서 데이터 전송을 종료할 수 있다. 이것을 _______ 라고 한다. -\u0026gt; a. 절반 폐쇄(half-close)\nTCP의 슬라이딩 윈도는 _______ 기반이다. -\u0026gt; c. 바이트\nTCP에서 윈도 크기는 rwnd와 cwnd의 _______ 이다. -\u0026gt; c. 최소값\nTCP에서 (수신측)윈도는 _______ 될 수 없다. -\u0026gt; c. 축소\nTCP에서 수신측은 일시적으로 윈도를 폐쇄할 수 있다. 그렇지만 윈도가 폐쇄된 이후에 송신자는 _______ 바이트를 포함하는 세그먼트를 항상 보낼 수 있다. -\u0026gt; c. 1\n송신 응용 프로그램에서 데이터를 천천히 발생하거나 수신 응용 프로그램에서 데이터를 천천히 소비하는 경우에 슬라이딩 윈도 동작에 심각한 문제가 발생할 수 있다. 이러한 문제를 _______ 라고 한다. -\u0026gt; a. 어리석은 윈도 신드롬\n네이글 알고리즘은 _______ 에서 발생하는 어리석은 윈도신드롬을 해결할 수 있다. -\u0026gt; a. 송신측\n클라크 해결방법은 _______ 에서 발생하는 어리석은 윈도신드롬을 해결할 수 있다. -\u0026gt; b. 수신측\n지연 확인응답은 _______ 에서 발생하는 어리석은 윈도신드롬을 해결할 수 있다. -\u0026gt; b. 수신측\nTCP에서 데이터를 가지고 있지 않은 ACK 세그먼트는 _______ 개의 순서번호를 소비한다. -\u0026gt; a. 0\n요새 구현된 TCP에서는 재전송 타이머가 만료되거나 _______ 개의 중복 ACK 세그먼트가 도착하면 재전송이 일어난다. -\u0026gt; c. 3\nTCP에서는 ACK 세그먼트를 위하여 _______ 재전송 타이머가 설정된다. -\u0026gt; c. 0개의 TCP에서는 어느 한순간에는 _______ 의 RTT 측정이 이루어질 수 있다. -\u0026gt; b. 단지 1개\nTCP 헤더의 바이트의 총수를 구하기 위하여 헤더 길이 필드에 _______ 를 곱한다. -\u0026gt; b. 4\nTCP에서 긴급 데이터는 긴급 포인터 필드뿐만 아니라 _______ 내의 URG 비트도 필요로 한다. -\u0026gt; a. 제어(필드)\nTCP에서 ACK 값이 200이라면, 바이트 _______ 이 성공적으로 수신되었다. -\u0026gt; d. 정답 없음 (a. 199, b. 200, c. 201)\n_______ 제어는 용량 아래의 부하를 유지하기 위한 메커니즘과 기술을 말한다. -\u0026gt; c. 혼잡\nTCP의 _______ 알고리즘에서 혼잡 윈도 크기는 임계치에 도달하기 전까지는 기하급수로 증가한다. -\u0026gt; c. 느린 시작\nTCP의 _______ 알고리즘에서 혼잡이 감지되기 전까지는 혼잡 윈도 크기는 가산적으로 증가한다. -\u0026gt; a. 혼잡 회피 (번역본에서는 혼잡 회의로 잘못 나와있음)\n_______ 는 동일한 방식으로 혼잡 탐지, 시간 초과와 3개의 중복 ACK의 두 신호를 취급한다. -\u0026gt; a. Taho TCP\n_______ 에서 연결이 설정되면, TCP는 느린 시작 알고리즘을 시작하고 ssthresh 변수를 사전 합의 값 (일반적으로 64 또는 128 킬로바이트)으로 cwnd 변수를 1MSS로 설정한다. -\u0026gt; a. Taho TCP\n_______ 는 빠른 회복 상태라고 불리는 새로운 상태를 혼잡 제어 FSM에 추가하였다. -\u0026gt; b. Reno TCP\n_______ 는 혼잡, 시간 초과와 3개의 중복 ACK 도착의 두 신호를 다르게 취급한다. -\u0026gt; b. Reno TCP\nReno TCP의 _______ 는 느린 시작과 혼잡 회피 상태 사이의 상태이다. -\u0026gt; d. 정답 없음 (빠른 회복) (a. 혼잡 회피, b. 혼잡 감지, c. 느린 시작)\nReno TCP에서 TCP가 빠른 회복에 들어갈 때, 중복 ACK가 계속해서 도착한다면, TCP는 -\u0026gt; b. 계속 같은 상태로 머물고, cwnd는 지수적으로 증가한다.\nReno TCP에서 TCP가 빠른 회복에 들어갈 때, 시간 초과가 발생하면, TCP는 -\u0026gt; c. 느린 시작 상태가 된다.\nReno TCP에서 TCP가 빠른 회복에 들어갈 때, 새로운(중복 아님) ACK가 도착하면, TCP는 -\u0026gt; d. 혼잡 회피 상태가 되고, cwnd를 ssthresh 값으로 줄인다.\nTCP의 최근 버전인 _______ TCP는 _______ TCP 상에 또 다른 최적화를 마련했다. -\u0026gt; a. New Reno; Reno\n느린 시작 알고리즘에서 혼잡 윈도 크기는 _______ 으로 _______ 때까지 증가한다. -\u0026gt; a. 지수적; 임계치에 도달할\n혼잡 회피 알고리즘에서 혼잡 윈도 크기는 _______ 으로 _______ 때까지 증가한다. -\u0026gt; d. 가산적; 혼잡이 탐지될\n초기 느린 시작 상태를 끝낸 후, 혼잡 윈도 크기는 _______ 의 톱니 모양을 따른다. -\u0026gt; d. 가산적 증가, 승산적 증가\n스트림 제어 전송 프로토콜 (SCTP)은 새로운 _______ 프로토콜이다. -\u0026gt; b. 신뢰성 있는, 메시지 위주 (번역본에서는 신뢰성 있는, 문자 위주로 잘못 나와있음)\nSCTP는 각 결합에서 _______ 서비스를 허용한다. -\u0026gt; b. 다중 스트림\nSCTP에서 데이터 청크는 _______ 를 이용하여 번호화된다. -\u0026gt; a. TSN\n다른 스트림을 구별하기 위하여, SCTP는 _______ 를 이용한다. -\u0026gt; b. SI\nSCTP에서 제어정보는 _______ 로 운반된다. -\u0026gt; b. 제어 청크\n모든 답은 \u0026lsquo;데이터 통신과 네트워킹 5판(Data Communications and Networking Fifth Edition, Behrouz A. Forouzan 저)\u0026rsquo; 책을 공부하여 작성하였습니다.\n혹시 틀린 답이 있다면 댓글로 알려주세요.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 변경금지 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 네트워크 \u0026amp; 통신\u0026rsquo; 카테고리의 다른 글 데이터 통신과 네트워킹 Chapter 26 표준 클라이언트-서버 프로토콜 연습 문제 정답 (0) 2020.06.30 데이터 통신과 네트워킹 Chapter 25 응용층 소개 연습 문제 정답 (0) 2020.06.30 데이터 통신과 네트워킹 Chapter 23 전송층의 개요 연습 문제 정답 (0) 2020.06.29 데이터 통신과 네트워킹 Chapter 22 차세대 IP 연습 문제 정답 (1) 2020.06.29 데이터 통신과 네트워킹 Chapter 21 멀티캐스트 라우팅 연습 문제 정답 (0) 2020.06.29 ","permalink":"https://blog.sobamemil.com/posts/168-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%86%B5%EC%8B%A0%EA%B3%BC-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9-chapter-24-%EC%A0%84%EC%86%A1%EC%B8%B5-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C-%EC%97%B0%EC%8A%B5-%EB%AC%B8%EC%A0%9C-%EC%A0%95%EB%8B%B5/","summary":"\u003cp\u003e\u003cstrong\u003eChapter 24 전송층 프로토콜 연습 문제 풀이(답)\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eUDP와 TCP는 _______ 계층 프로토콜이다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. 전송\u003c/p\u003e\n\u003col start=\"2\"\u003e\n\u003cli\u003e포트 번호는 _______ 비트 길이다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. 16\u003c/p\u003e\n\u003col start=\"3\"\u003e\n\u003cli\u003e다음 중 UDP가 제공하는 기능은?\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; d. 정답 없음 (a. 흐름 제어, b. 연결 지향 배달, c. 오류 제어)\u003c/p\u003e\n\u003col start=\"4\"\u003e\n\u003cli\u003eUDP 사용자 데이터그램 헤더의 근원지 포트 주소는 _______ 를 나타낸다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. 송신 컴퓨터에서 구동되는 프로세스\u003c/p\u003e\n\u003col start=\"5\"\u003e\n\u003cli\u003eUDP 서비스를 이용하기 위해서 _______ 개의 소켓 주소가 필요하다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. 2\u003c/p\u003e\n\u003col start=\"6\"\u003e\n\u003cli\u003eUDP 패킷을 _______ 라고 한다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; a. 사용자 데이터그램\u003c/p\u003e","title":"데이터 통신과 네트워킹 Chapter 24 전송층 프로토콜 연습 문제 정답"},{"content":"Chapter 23 전송층의 개요 연습 문제 풀이(답)\n전송층의 주요 임무 중의 하나는 _______ 통신이다. -\u0026gt; c. 프로세스-대-프로세스\n일반적으로 클라이언트 프로그램은 _______ 포트 번호를 이용한다. 일반적으로 서버 프로그램은 _______ 포트 번호를 이용한다. -\u0026gt; b. 임시; 잘 알려진\n소켓 주소는 _______ 이 결합된 것이다. -\u0026gt; d. 정답 없음 (IP 주소 + Port 번호) (a. MAC 주소와 논리 주소, b. MAC 주소와 포트 번호, c. 사용자-지정 주소와 논리 주소)\n_______ 는 하나 이상의 근원지로부터 정보를 수신하는 것을 의미한다. _______ 는 하나 이상의 근원지로 정보를 전달하는 것을 의미한다. -\u0026gt; b. 다중화; 역다중화\n_______ 는 생산자가 생산한 정보를 전달하는 것을 의미한다. _______ 는 소비자가 받을 준비가 된 경우에 정보를 수신하는 것이다. -\u0026gt; b. 밀기; 끌기\n정지-대기 프로토콜에서 송신 윈도의 최대 크기는 _______ 이고, 수신 윈도의 최대 크기는 _______ 이다. 여기에서 m은 순서 번호에 사용되는 비트의 수이다. -\u0026gt; a. 1; 1\nGo-Back-N 프로토콜에서 송신 윈도의 최대 크기는 _______ 이고, 수신 윈도의 최대 크기는 _______ 이다. 여기에서 m은 순서 번호에 사용되는 비트의 수이다. -\u0026gt; c. 2^m-1(2의 m제곱 - 1); 1\n선택적 반복 프로토콜에서 송신 윈도의 최대 크기는 _______ 이고, 수신 윈도의 최대 크기는 _______ 이다. 여기에서 m은 순서 번호에 사용되는 비트의 수이다. -\u0026gt; d. 2^m-1; 2^m-1 (둘 다 2의 m-1 제곱)\nUDP는 _______ 전송 프로토콜이라고 한다. -\u0026gt; c. 비연결형, 비신뢰성의\nUDP는 _______ 의 약자이다. -\u0026gt; c. User Datagram Protocol\n전송층에서 프로세스를 정의하기 위해 _______ 라 불리는 2개의 식별자가 필요하다. -\u0026gt; c. 포트주소\n0에서 1,023까지의 범위를 갖는 포트는 _______ 포트라 불린다. 1,024에서 49,151 사이의 범위를 갖는 포트를 _______ 포트라 한다. 49,152에서 65,535 사이의 범위를 갖는 포트는 _______ 포트라 불린다. -\u0026gt; a. 잘 알려진; 등록된; 동적 또는 개인\nUDP와 TCP는 _______ 계층 프로토콜이다. -\u0026gt; c. 전송\n포트 번호는 _______ 비트 길이다. -\u0026gt; b. 16\n전송층에서 통신은 _______ 이다. -\u0026gt; b. 종단간\nGo-Back-N에서 값 Sf = 3 그리고 Sn = 7일 때, ackNo = 6인 패킷을 수신하고 난 후, Sf의 값은 _______ . -\u0026gt; a. 6\nGo-Back-N에서 값 Sf = 3 그리고 Sn = 7일 때, ackNo = 6인 패킷을 수신하고 난 후, Sn의 값은 _______ . (번역본에는 Sn이 Sf로 잘못 나와있음) -\u0026gt; b. 7\nGo-Back-N, 값 Sf = 3 그리고 Sn = 7일 때, ackNo = 5인 패킷을 수신하고 난 후, 윈도는 _______ . -\u0026gt; a. 두 슬롯을 민다.\n선택 재전송에서 값 Sf = 3 그리고 Sn = 7일 때, ackNo = 5를 가진 패킷을 수신하고 난 후, 윈도는 _______ . -\u0026gt; d. 밀지 않는다.\n선택 재전송에서 타임아웃이 발생하면, 타이머는 _______ . -\u0026gt; c. 재설정된다 (정지 및 시작된다)\n모든 답은 \u0026lsquo;데이터 통신과 네트워킹 5판(Data Communications and Networking Fifth Edition, Behrouz A. Forouzan 저)\u0026rsquo; 책을 공부하여 작성하였습니다.\n혹시 틀린 답이 있다면 댓글로 알려주세요.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 변경금지 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 네트워크 \u0026amp; 통신\u0026rsquo; 카테고리의 다른 글 데이터 통신과 네트워킹 Chapter 25 응용층 소개 연습 문제 정답 (0) 2020.06.30 데이터 통신과 네트워킹 Chapter 24 전송층 프로토콜 연습 문제 정답 (0) 2020.06.29 데이터 통신과 네트워킹 Chapter 22 차세대 IP 연습 문제 정답 (1) 2020.06.29 데이터 통신과 네트워킹 Chapter 21 멀티캐스트 라우팅 연습 문제 정답 (0) 2020.06.29 데이터 통신과 네트워킹 Chapter 20 유니캐스트 라우팅 연습 문제 정답 (0) 2020.06.29 ","permalink":"https://blog.sobamemil.com/posts/167-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%86%B5%EC%8B%A0%EA%B3%BC-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9-chapter-23-%EC%A0%84%EC%86%A1%EC%B8%B5%EC%9D%98-%EA%B0%9C%EC%9A%94-%EC%97%B0%EC%8A%B5-%EB%AC%B8%EC%A0%9C-%EC%A0%95%EB%8B%B5/","summary":"\u003cp\u003e\u003cstrong\u003eChapter 23 전송층의 개요 연습 문제 풀이(답)\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e전송층의 주요 임무 중의 하나는 _______ 통신이다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. 프로세스-대-프로세스\u003c/p\u003e\n\u003col start=\"2\"\u003e\n\u003cli\u003e일반적으로 클라이언트 프로그램은 _______ 포트 번호를 이용한다. 일반적으로 서버 프로그램은 _______ 포트 번호를 이용한다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. 임시; 잘 알려진\u003c/p\u003e\n\u003col start=\"3\"\u003e\n\u003cli\u003e소켓 주소는 _______ 이 결합된 것이다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; d. 정답 없음 (IP 주소 + Port 번호) (a. MAC 주소와 논리 주소, b. MAC 주소와 포트 번호, c. 사용자-지정 주소와 논리 주소)\u003c/p\u003e\n\u003col start=\"4\"\u003e\n\u003cli\u003e_______ 는 하나 이상의 근원지로부터 정보를 수신하는 것을 의미한다. _______ 는 하나 이상의 근원지로 정보를 전달하는 것을 의미한다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. 다중화; 역다중화\u003c/p\u003e","title":"데이터 통신과 네트워킹 Chapter 23 전송층의 개요 연습 문제 정답"},{"content":"Chapter 22 차세대 IP 연습 문제 풀이(답)\nIPv6 주소는 _______ 비트 길이다. -\u0026gt; c. 128\nIPv6 주소는 _______ 바이트로 구성되어 있다. -\u0026gt; c. 16\n16진수 콜론 표기법에서 128비트 주소는 _______ 부분으로 분류되며, 각 _______ 개의 16진수 숫자를 가진다. -\u0026gt; c. 8, 4\nIPv6 주소는 최대 _______ 개의 16진수 숫자를 가질 수 있다. -\u0026gt; b. 32\nIPv6에서 기본 헤더의 _______ 필드는 데이터그램의 수명을 제한한다. -\u0026gt; c. 홉 제한\nIPv6의 _______ 은(는) 특정 데이터의 흐름을 특별히 다루기 위해 설계되었다. -\u0026gt; a. 흐름 레이블\n두 IPv6를 사용하는 컴퓨터가 통신을 할 때 패킷이 IPv4 지역을 반드시 통과해야 한다면 어떤 번역 기법을 사용할 수 있는지 설명하시오. -\u0026gt; a. 터널링\n대부분의 인터넷이 IPv6로 이동하고 일부가 IPv4를 사용할 때 어떤 번역 기법을 사용할 수 있는지 설명하시오. -\u0026gt; b. 헤더 변환\n버전 4의 _______ 프로토콜은 하나의 ICMPv6 프로토콜로 통합되었다. -\u0026gt; c. ICMP, ARP와 IGMP\nIPv6에서 글로벌 유니캐스트 주소를 위한 블록 접두사는 _______ . -\u0026gt; d. (001)2\nIPv6에서 글로벌 접두사는 _______ 비트 길이다. -\u0026gt; c. 48\nIPv6 서브넷 식별자는 _______ 비트 길이다. -\u0026gt; a. 16\nIPv6에서 인터페이스 식별자는 _______ 비트 길이다. -\u0026gt; d. 64\nEUI 링크 계층(물리) 주소는 _______ 비트 길이다. -\u0026gt; d. 64\n이더넷에서 MAC 주소는 _______ 비트 길이다. -\u0026gt; c. 48\nIPv6 프로토콜에서 주 헤더는 _______ 바이트이다. -\u0026gt; b. 40\n모든 답은 \u0026lsquo;데이터 통신과 네트워킹 5판(Data Communications and Networking Fifth Edition, Behrouz A. Forouzan 저)\u0026rsquo; 책을 공부하여 작성하였습니다.\n혹시 틀린 답이 있다면 댓글로 알려주세요.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 변경금지 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 네트워크 \u0026amp; 통신\u0026rsquo; 카테고리의 다른 글 데이터 통신과 네트워킹 Chapter 24 전송층 프로토콜 연습 문제 정답 (0) 2020.06.29 데이터 통신과 네트워킹 Chapter 23 전송층의 개요 연습 문제 정답 (0) 2020.06.29 데이터 통신과 네트워킹 Chapter 21 멀티캐스트 라우팅 연습 문제 정답 (0) 2020.06.29 데이터 통신과 네트워킹 Chapter 20 유니캐스트 라우팅 연습 문제 정답 (0) 2020.06.29 데이터 통신과 네트워킹 Chapter 19 네트워크층 프로토콜 연습 문제 정답 (6) 2020.06.29 ","permalink":"https://blog.sobamemil.com/posts/166-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%86%B5%EC%8B%A0%EA%B3%BC-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9-chapter-22-%EC%B0%A8%EC%84%B8%EB%8C%80-ip-%EC%97%B0%EC%8A%B5-%EB%AC%B8%EC%A0%9C-%EC%A0%95%EB%8B%B5/","summary":"\u003cp\u003e\u003cstrong\u003eChapter 22 차세대 IP 연습 문제 풀이(답)\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eIPv6 주소는 _______ 비트 길이다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. 128\u003c/p\u003e\n\u003col start=\"2\"\u003e\n\u003cli\u003eIPv6 주소는 _______ 바이트로 구성되어 있다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. 16\u003c/p\u003e\n\u003col start=\"3\"\u003e\n\u003cli\u003e16진수 콜론 표기법에서 128비트 주소는 _______ 부분으로 분류되며, 각 _______ 개의 16진수 숫자를 가진다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. 8, 4\u003c/p\u003e\n\u003col start=\"4\"\u003e\n\u003cli\u003eIPv6 주소는 최대 _______ 개의 16진수 숫자를 가질 수 있다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. 32\u003c/p\u003e\n\u003col start=\"5\"\u003e\n\u003cli\u003eIPv6에서 기본 헤더의 _______ 필드는 데이터그램의 수명을 제한한다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. 홉 제한\u003c/p\u003e\n\u003col start=\"6\"\u003e\n\u003cli\u003eIPv6의 _______ 은(는) 특정 데이터의 흐름을 특별히 다루기 위해 설계되었다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; a. 흐름 레이블\u003c/p\u003e","title":"데이터 통신과 네트워킹 Chapter 22 차세대 IP 연습 문제 정답"},{"content":"Chapter 21 멀티캐스트 라우팅 연습 문제 풀이(답)\n하나의 근원지와 네트워크의 모든 호스트 간의 통신인 일-대-모두 통신은 _______ 통신으로 분류된다. -\u0026gt; c. 브로드캐스트\n하나의 근원지와 네트워크 상의 특정 호스트 그룹 간의 일-대-다 통신은 _______ 통신으로 분류된다. -\u0026gt; b. 멀티캐스트\n하나의 근원지와 하나의 목적지 간의 일-대-일 통신은 _______ 통신으로 분류된다. -\u0026gt; a. 유니캐스트\n_______ 에서 라우터는 수신한 패킷을 자신의 인터페이스 중 하나로 전달한다. -\u0026gt; a. 유니캐스팅\n멀티캐스트 라우팅에서 각 라우터는 각 그룹별로 _______ 경로 트리를 생성해야 한다. -\u0026gt; c. 최단 거리\n_______ 트리기법의 멀티캐스트에서 각 라우터는 각 근원지 그룹별로 구분된 트리를 생성해야 한다. -\u0026gt; b. 근원지 기반\n멀티캐스트 개방 최단경로 우선(MOSPF) 라우팅은 _______ 트리 기법을 사용한다. -\u0026gt; a. 근원지 기반\n멀티캐스트 개방 최단경로 우선(MOSPF) 프로토콜은 근원지 기반의 트리를 생성하기 위해 멀티캐스트 라우팅을 사용하는 OSPF 프로토콜의 확장 버전이다. 프로토콜은 _______ 라우팅을 기반으로 한다. -\u0026gt; b. 링크 상태\nRPF에서 라우터는 근원지에서 라우터로 _______ 경로를 통해 전달된 것의 복사본을 전달한다. -\u0026gt; a. 최단 거리\nRPF는 플러딩 과정에서 _______ 을 제거하였다.. -\u0026gt; d. 정답 없음 (a. 포워딩, b. 백워딩, c. 플러딩)\nRPB는 근원지에서 각 목적지로의 최단경로 _______ 트리를 생성한다. -\u0026gt; c. 브로드캐스트\nRPB는 못적지가 패킷의 _______ 을 수신하도록 해준다. -\u0026gt; a. 하나의 사본\n_______ 에서 멀티캐스트 패킷은 특정 그룹에 활성화된 멤버가 있는 네트워크로만 전달된다. -\u0026gt; c. RPM\n_______ 은 _______ 에 노드 추가(pruning)와 노드 제거(grafting)를 가능하게 하여 동적인 멤버십 변경을 위한 멀티캐스트 최단경로 트리를 생성할 수 있게 하였다. -\u0026gt; a. RPM, RPB\n_______ 은 멀티캐스트 거리 벡터 라우팅의 구현이다. RIP 기반의 근원지 기반 라우팅 프로토콜이다. -\u0026gt; b. DVMRP\nDVMRP는 RIP에 기반한 _______ 라우팅 프로토콜이다. -\u0026gt; a. 근원지 기반\n노드 제거(pruning)와 노드 추가(grafting)는 _______ 에서 사용되는 방법이다. -\u0026gt; c. RPM\nPIM-DM은 속한 멤버가 있는 라우터의 수가 인터넷의 라우터에 비해 비교적 _______ 사용된다. -\u0026gt; a. 많을 때\nPIM-SM은 속한 멤버가 있는 라우터의 수가 인터넷의 라우터에 비해 비교적 _______ 사용된다. -\u0026gt; b. 적을 때\n모든 답은 \u0026lsquo;데이터 통신과 네트워킹 5판(Data Communications and Networking Fifth Edition, Behrouz A. Forouzan 저)\u0026rsquo; 책을 공부하여 작성하였습니다.\n혹시 틀린 답이 있다면 댓글로 알려주세요.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 변경금지 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 네트워크 \u0026amp; 통신\u0026rsquo; 카테고리의 다른 글 데이터 통신과 네트워킹 Chapter 23 전송층의 개요 연습 문제 정답 (0) 2020.06.29 데이터 통신과 네트워킹 Chapter 22 차세대 IP 연습 문제 정답 (1) 2020.06.29 데이터 통신과 네트워킹 Chapter 20 유니캐스트 라우팅 연습 문제 정답 (0) 2020.06.29 데이터 통신과 네트워킹 Chapter 19 네트워크층 프로토콜 연습 문제 정답 (6) 2020.06.29 데이터 통신과 네트워킹 Chapter 18 네트워크층의 소개 연습 문제 정답 (13) 2020.06.29 ","permalink":"https://blog.sobamemil.com/posts/165-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%86%B5%EC%8B%A0%EA%B3%BC-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9-chapter-21-%EB%A9%80%ED%8B%B0%EC%BA%90%EC%8A%A4%ED%8A%B8-%EB%9D%BC%EC%9A%B0%ED%8C%85-%EC%97%B0%EC%8A%B5-%EB%AC%B8%EC%A0%9C-%EC%A0%95%EB%8B%B5/","summary":"\u003cp\u003e\u003cstrong\u003eChapter 21 멀티캐스트 라우팅 연습 문제 풀이(답)\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e하나의 근원지와 네트워크의 모든 호스트 간의 통신인 일-대-모두 통신은 _______ 통신으로 분류된다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. 브로드캐스트\u003c/p\u003e\n\u003col start=\"2\"\u003e\n\u003cli\u003e하나의 근원지와 네트워크 상의 특정 호스트 그룹 간의 일-대-다 통신은 _______ 통신으로 분류된다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. 멀티캐스트\u003c/p\u003e\n\u003col start=\"3\"\u003e\n\u003cli\u003e하나의 근원지와 하나의 목적지 간의 일-대-일 통신은 _______ 통신으로 분류된다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; a. 유니캐스트\u003c/p\u003e\n\u003col start=\"4\"\u003e\n\u003cli\u003e_______ 에서 라우터는 수신한 패킷을 자신의 인터페이스 중 하나로 전달한다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; a. 유니캐스팅\u003c/p\u003e\n\u003col start=\"5\"\u003e\n\u003cli\u003e멀티캐스트 라우팅에서 각 라우터는 각 그룹별로 _______ 경로 트리를 생성해야 한다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. 최단 거리\u003c/p\u003e","title":"데이터 통신과 네트워킹 Chapter 21 멀티캐스트 라우팅 연습 문제 정답"},{"content":"Chapter 20 유니캐스트 라우팅 연습 문제 풀이(답)\n자율 시스템 안에서의 라우팅은 _______ 라우팅이라 한다. (번역본에서는 문제가 잘못 나와있음) -\u0026gt; b. 인트라도메인\n자율 시스템 간의 라우팅은 _______ 라우팅이라 한다. -\u0026gt; a. 인터도메인\n_______ 라우팅에서, 두 노드 간 최소비용 경로는 최소 거리를 가진 경로이다. -\u0026gt; b. 거리 벡터\n_______ 에서 각 노드는 모든 노드로의 최소 거리 정보의 벡터(테이블)를 유지한다. -\u0026gt; b. 거리 벡터\n거리 벡터 라우팅에서 각 노드는 _______ 과 변화가 있을 때마다 주기적으로 라우팅 테이블을 공유한다. -\u0026gt; b. 모든 이웃 노드\n라우팅 정보 프로토콜(RIP)은 _______ 라우팅에 기반한 도메인 내부 라우팅이다. -\u0026gt; a. 거리 벡터\n_______ 에서 사용하는 측정단위는 홉 카운트이다. -\u0026gt; b. RIP\nRIP에서 _______ 타이머는 정규 갱신 메시지를 보내는 것을 제어한다. -\u0026gt; c. 정규\nRIP에서 _______ 타이머는 테이블에서 비정상적인 경로를 제거하기 위해 사용된다. -\u0026gt; a. 가비지 콜렉션(garbage collection)\nRIP에서 _______ 타이머는 경로의 유효성을 제어한다. -\u0026gt; b. 만료\nRIP는 _______ 서비스를 사용한다. -\u0026gt; b. UDP\n_______ 라우팅은 다이크스트라 알고리즘을 사용하여 라우팅 테이블을 생성한다. -\u0026gt; b. 링크 상태\n개방 최단 경로 우선 프로토콜은(OSPF) _______ 라우팅에 기반한 인트라도메인 라우팅 프로토콜이다. -\u0026gt; b. 링크 상태\n_______ 프로토콜은 관리자가 각 경로의 메트릭으로 알려진 비용을 할당하도록 해준다. -\u0026gt; a. OSPF\nOSPF에서 _______ 링크는 둘 사이에 다른 호스트나 라우터 없이 두 라우터를 연결한다. -\u0026gt; a. 점-대-점\nOSPF에서 _______ 링크는 다수의 라우터가 연결된 네트워크이다. -\u0026gt; b. 일시적인\nOSPF에서 _______ 링크는 하나의 라우터에만 연결된 네트워크이다. -\u0026gt; c. 스터브\nOSPF에서 _______ 는 네트워크의 링크를 정의한다. -\u0026gt; a. 네트워크 링크\n_______ 는 경로 벡터 라우팅을 사용하는 인터도메인 라우팅 프로토콜이다. -\u0026gt; a. BGP\n모든 답은 \u0026lsquo;데이터 통신과 네트워킹 5판(Data Communications and Networking Fifth Edition, Behrouz A. Forouzan 저)\u0026rsquo; 책을 공부하여 작성하였습니다.\n혹시 틀린 답이 있다면 댓글로 알려주세요.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 변경금지 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 네트워크 \u0026amp; 통신\u0026rsquo; 카테고리의 다른 글 데이터 통신과 네트워킹 Chapter 22 차세대 IP 연습 문제 정답 (1) 2020.06.29 데이터 통신과 네트워킹 Chapter 21 멀티캐스트 라우팅 연습 문제 정답 (0) 2020.06.29 데이터 통신과 네트워킹 Chapter 19 네트워크층 프로토콜 연습 문제 정답 (6) 2020.06.29 데이터 통신과 네트워킹 Chapter 18 네트워크층의 소개 연습 문제 정답 (13) 2020.06.29 데이터 통신과 네트워킹 Chapter 17 연결 장치와 가상 LAN 연습 문제 정답 (1) 2020.06.29 ","permalink":"https://blog.sobamemil.com/posts/164-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%86%B5%EC%8B%A0%EA%B3%BC-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9-chapter-20-%EC%9C%A0%EB%8B%88%EC%BA%90%EC%8A%A4%ED%8A%B8-%EB%9D%BC%EC%9A%B0%ED%8C%85-%EC%97%B0%EC%8A%B5-%EB%AC%B8%EC%A0%9C-%EC%A0%95%EB%8B%B5/","summary":"\u003cp\u003e\u003cstrong\u003eChapter 20 유니캐스트 라우팅 연습 문제 풀이(답)\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e자율 시스템 안에서의 라우팅은 _______ 라우팅이라 한다. (번역본에서는 문제가 잘못 나와있음)\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. 인트라도메인\u003c/p\u003e\n\u003col start=\"2\"\u003e\n\u003cli\u003e자율 시스템 간의 라우팅은 _______ 라우팅이라 한다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; a. 인터도메인\u003c/p\u003e\n\u003col start=\"3\"\u003e\n\u003cli\u003e_______ 라우팅에서, 두 노드 간 최소비용 경로는 최소 거리를 가진 경로이다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. 거리 벡터\u003c/p\u003e\n\u003col start=\"4\"\u003e\n\u003cli\u003e_______ 에서 각 노드는 모든 노드로의 최소 거리 정보의 벡터(테이블)를 유지한다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. 거리 벡터\u003c/p\u003e\n\u003col start=\"5\"\u003e\n\u003cli\u003e거리 벡터 라우팅에서 각 노드는 _______ 과 변화가 있을 때마다 주기적으로 라우팅 테이블을 공유한다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. 모든 이웃 노드\u003c/p\u003e","title":"데이터 통신과 네트워킹 Chapter 20 유니캐스트 라우팅 연습 문제 정답"},{"content":"Chapter 19 네트워크층 프로토콜 연습 문제 풀이(답)\nIP는 _______ 프로토콜이다. -\u0026gt; c. 비연결의 신뢰성 없는\nHLEN 값의 십진수 10은 _______ 을 뜻한다. -\u0026gt; d. 40 바이트 크기의 헤더\n단편의 오프셋 값이 100이라면, 이것은 _______ 을 뜻한다. -\u0026gt; c. 데이터그램의 첫 번째 바이트는 800임\n단편의 마지막 바이트를 결정하기 위해 무엇이 필요한가? -\u0026gt; c. 오프셋 숫자와 전체 길이 둘 다\nIP 헤더의 크기는 _______ 바이트이다. -\u0026gt; a. 20에서 60\nIP 계층의 패킷을 _______ 이라 한다. -\u0026gt; b. 데이터그램\n전체 길이 필드는 _______ 데이터그램의 전체 길이를 나타낸다. -\u0026gt; a. 헤더를 포함한\n데이터그램이 프레임으로 캡슐화될 때 데이터그램의 전채 크기는 _______ 보다 작아야 한다. -\u0026gt; c. MTU\nICMP는 _______ 계층 프로토콜이다. -\u0026gt; c. 네트워크층 프로토콜\n다음 중 ICMP 메시지의 설명 중 바른 것은? -\u0026gt; d. 정답 없음 (a. ICMP 오류 메시지는 ICMP 오류 메시지를 위해 생성된다., b. ICMP 오류 메시지는 단편화된 데이터그램을 위해 생성된다., c. ICMP 오류 메시지는 멀티캐스트 데이터그램을 위해 생성된다.)\n호스트가 새로운 네트워크로 이동할 때, 자신의 원래 주소는 _______ 로 참조된다. -\u0026gt; a. 홈(home)\n다음 주소 중 어떤 것이 이동 IP의 영구 주소인가? -\u0026gt; a. 홈(home)\n원격 호스트와 통신하기 위해 컴퓨터는 _______ 단계(들)을 거치는 것이 필요한다. -\u0026gt; c. 세\n이동 IP 통신에서 첫 번째 단계는 _______ 라 부른다. -\u0026gt; a. 에이전트 발견\n이동 IP 통신에서 두 번째 단계는 _______ 라 부른다. -\u0026gt; b. 등록\n이동 IP 통신에서 세 번째 단계는 _______ 라 부른다. -\u0026gt; c. 데이터 전달\n이동 IP 통신에서 삼각형 라우팅에서 비효율성은 _______ 더블 크로싱의 하나이다. -\u0026gt; b. 덜 심각한\n모든 답은 \u0026lsquo;데이터 통신과 네트워킹 5판(Data Communications and Networking Fifth Edition, Behrouz A. Forouzan 저)\u0026rsquo; 책을 공부하여 작성하였습니다.\n혹시 틀린 답이 있다면 댓글로 알려주세요.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 변경금지 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 네트워크 \u0026amp; 통신\u0026rsquo; 카테고리의 다른 글 데이터 통신과 네트워킹 Chapter 21 멀티캐스트 라우팅 연습 문제 정답 (0) 2020.06.29 데이터 통신과 네트워킹 Chapter 20 유니캐스트 라우팅 연습 문제 정답 (0) 2020.06.29 데이터 통신과 네트워킹 Chapter 18 네트워크층의 소개 연습 문제 정답 (13) 2020.06.29 데이터 통신과 네트워킹 Chapter 17 연결 장치와 가상 LAN 연습 문제 정답 (1) 2020.06.29 데이터 통신과 네트워킹 Chapter 16 기타 무선망 연습 문제 정답 (0) 2020.06.29 ","permalink":"https://blog.sobamemil.com/posts/163-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%86%B5%EC%8B%A0%EA%B3%BC-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9-chapter-19-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%EC%B8%B5-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C-%EC%97%B0%EC%8A%B5-%EB%AC%B8%EC%A0%9C-%EC%A0%95%EB%8B%B5/","summary":"\u003cp\u003e\u003cstrong\u003eChapter 19 네트워크층 프로토콜 연습 문제 풀이(답)\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eIP는 _______ 프로토콜이다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. 비연결의 신뢰성 없는\u003c/p\u003e\n\u003col start=\"2\"\u003e\n\u003cli\u003eHLEN 값의 십진수 10은 _______ 을 뜻한다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; d. 40 바이트 크기의 헤더\u003c/p\u003e\n\u003col start=\"3\"\u003e\n\u003cli\u003e단편의 오프셋 값이 100이라면, 이것은 _______ 을 뜻한다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. 데이터그램의 첫 번째 바이트는 800임\u003c/p\u003e\n\u003col start=\"4\"\u003e\n\u003cli\u003e단편의 마지막 바이트를 결정하기 위해 무엇이 필요한가?\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. 오프셋 숫자와 전체 길이 둘 다\u003c/p\u003e\n\u003col start=\"5\"\u003e\n\u003cli\u003eIP 헤더의 크기는 _______ 바이트이다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; a. 20에서 60\u003c/p\u003e\n\u003col start=\"6\"\u003e\n\u003cli\u003eIP 계층의 패킷을 _______ 이라 한다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. 데이터그램\u003c/p\u003e","title":"데이터 통신과 네트워킹 Chapter 19 네트워크층 프로토콜 연습 문제 정답"},{"content":"Chapter 18 네트워크층의 소개 연습 문제 풀이(답)\n네트워크층에서 패킷화의 내용으로 올바른 것은? -\u0026gt; d. 모두 정답 (a. 근원지에서 페이로드의 캡슐화, b. 근원지와 목적지 정보가 포함된 헤더 추가, c. 목적지에서 페이로드 역캡슐화)\n경로상의 라우터는 _______ 을(를) 할 수 없다. -\u0026gt; c. 근원지나 목적지 주소 변경\n인터넷의 네트워크층은 _______ 을(를) 제공한다. -\u0026gt; b. 흐름 제어를 제외한 제한적인 오류 제어\n가상 회선 방식에서 포워딩의 결정은 패킷 헤더의 _______ 의 값에 기반을 두어 정해진다. -\u0026gt; c. 레이블\n데이터그램 방식에서 포워딩의 결정은 패킷 헤더의 _______ 의 값에 의해 정해진다. -\u0026gt; b. 목적지 주소\n네트워크의 성능은 _______ 으로 측정할 수 있다. -\u0026gt; d. 모두 정답 (a. 지연, b. 처리량, c. 패킷 손실)\n전송 지연(시간)은 _______ 의 비율이다. -\u0026gt; c. 전송률과 패킷 길이\n전파 지연(시간)은 _______ 의 비율이다. -\u0026gt; d. 거리와 전파 속도\n네트워크의 부하가 네트워크 용량에 도달하면, 패킷 지연은 _______ 하고 네트워크 처리량은 _______ 된다. -\u0026gt; . 급격히 증가, 최소화\n개-루프 혼잡 제어에서 정책은 _______ 을 위해 적용된다. -\u0026gt; a. 혼잡이 발생하기 전 방지하기 위해\n_______ 은 개-루프 혼잡 제어 기술 중 하나이다. -\u0026gt; d. 정답 없음 (a. 역압, b. 초크 패킷, c. 암묵적인 신호)\n_______ 은 폐-루프 혼잡 제어 기술 중 하나이다. -\u0026gt; b. 초크 패킷\nIPv4 주소는 일반적으로 _______ 진수 기반의 점 10진(dotted-decimal) 표기법으로 표현된다. -\u0026gt; c. 10\n클래스형 주소지정에서 IPv4 주소 공간은 _______ 개의 클래스로 분류된다. -\u0026gt; c. 5\n비클래스형 주소지정에서 기관에 할당될 수 있는 주소는 _______ . -\u0026gt; c. 반드시 2의 지수여야 한다.\n비클래스형 주소지정에서 기관에 할당되는 첫 번째 주소는 _______ . -\u0026gt; a. 기관에 할당된 주소의 숫자로 나누어질 수 있어야 한다.\n서브네팅에서 각 서브넷의 주소의 수는 _______ . -\u0026gt; a. 2의 제곱승이다.\nCIDR 표기법으로 A 클래스의 기본 접두사 길이는 얼마인가? -\u0026gt; b. 8 (bits)\nCIDR 표기법으로 B 클래스의 기본 접두사 길이는 얼마인가? -\u0026gt; c. 16 (bits)\nCIDR 표기법으로 C 클래스의 기본 접두사 길이는 얼마인가? -\u0026gt; a. 24 (bits)\nDHCP는 _______ 계층 프로토콜이다. -\u0026gt; a. 응용\nDHCP에서 클라이언트는 _______ 포트를 사용하고 서버는 _______ 포트를 사용한다. -\u0026gt; b. 잘 알려진, 잘 알려진\nDHCP는 _______ 서비스를 사용한다. -\u0026gt; a. UDP\n_______ 은 내부 통신에는 사설 주소를 사용하고 외부와의 통신에는 범용의 인터넷 주소를 사용할 수 있게 해준다. -\u0026gt; b. NAT\n주소 집합의 개념은 _______ 주소지정을 사용할 때 라우팅 테이블의 항목이 증가하는 것을 완화시키기 위해 설계되었다. -\u0026gt; b. 클래스 없는\n라우팅 테이블에서 계층의 사용은 라우팅 테이블의 크기를 _______ . -\u0026gt; a. 줄여준다. 모든 답은 \u0026lsquo;데이터 통신과 네트워킹 5판(Data Communications and Networking Fifth Edition, Behrouz A. Forouzan 저)\u0026rsquo; 책을 공부하여 작성하였습니다.\n혹시 틀린 답이 있다면 댓글로 알려주세요.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 변경금지 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 네트워크 \u0026amp; 통신\u0026rsquo; 카테고리의 다른 글 데이터 통신과 네트워킹 Chapter 20 유니캐스트 라우팅 연습 문제 정답 (0) 2020.06.29 데이터 통신과 네트워킹 Chapter 19 네트워크층 프로토콜 연습 문제 정답 (6) 2020.06.29 데이터 통신과 네트워킹 Chapter 17 연결 장치와 가상 LAN 연습 문제 정답 (1) 2020.06.29 데이터 통신과 네트워킹 Chapter 16 기타 무선망 연습 문제 정답 (0) 2020.06.29 데이터 통신과 네트워킹 Chapter 15 무선 LAN 연습 문제 정답 (1) 2020.06.25 ","permalink":"https://blog.sobamemil.com/posts/162-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%86%B5%EC%8B%A0%EA%B3%BC-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9-chapter-18-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%EC%B8%B5%EC%9D%98-%EC%86%8C%EA%B0%9C-%EC%97%B0%EC%8A%B5-%EB%AC%B8%EC%A0%9C-%EC%A0%95%EB%8B%B5/","summary":"\u003cp\u003e\u003cstrong\u003eChapter 18 네트워크층의 소개 연습 문제 풀이(답)\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e네트워크층에서 패킷화의 내용으로 올바른 것은?\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; d. 모두 정답 (a. 근원지에서 페이로드의 캡슐화, b. 근원지와 목적지 정보가 포함된 헤더 추가, c. 목적지에서 페이로드 역캡슐화)\u003c/p\u003e\n\u003col start=\"2\"\u003e\n\u003cli\u003e경로상의 라우터는 _______ 을(를) 할 수 없다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. 근원지나 목적지 주소 변경\u003c/p\u003e\n\u003col start=\"3\"\u003e\n\u003cli\u003e인터넷의 네트워크층은 _______ 을(를) 제공한다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. 흐름 제어를 제외한 제한적인 오류 제어\u003c/p\u003e\n\u003col start=\"4\"\u003e\n\u003cli\u003e가상 회선 방식에서 포워딩의 결정은 패킷 헤더의 _______ 의 값에 기반을 두어 정해진다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. 레이블\u003c/p\u003e","title":"데이터 통신과 네트워킹 Chapter 18 네트워크층의 소개 연습 문제 정답"},{"content":"Chapter 17 연결 장치와 가상 LAN 연습 문제 풀이(답)\nVLAN은 _______ 으로 구성된 근거리 네트워크이다. -\u0026gt; a. 소프트웨어\n증폭기는 _______ 계층에서 동작하는 연결 장치이다. -\u0026gt; a. 물리\n링크 계층 교환기는 _______ 계층에서 동작하는 연결 장치이다. -\u0026gt; b. 물리와 데이터링크\n라우터는 _______ 계층에서 동작하는 연결 장치이다. -\u0026gt; d. 물리, 데이터링크와 네트워크\n_______ 은 필터링 기능이 없다. -\u0026gt; a. 증폭기\n3 계층 교환기는 _______ 이다. -\u0026gt; c. 라우터\n라우터는 _______ 의 목적지 주소에 따라 패킷을 구분한다. -\u0026gt; b. 네트워크층\n링크 계층 교환기는 _______ 의 목적지 주소에 따라 패킷을 구분한다. -\u0026gt; a. 데이터 링크\n여러 교환기에서 루프 문제는 _______ 알고리즘을 사용하여 제거할 수 있다. -\u0026gt; b. 스패닝 트리\nVLAN의 멤버십은 _______ 을 기반으로 할 수 있다. -\u0026gt; d. 모두 정답 (a. 인터페이스 번호(포트 번호), b. MAC 주소, c. IP 주소)\n모든 답은 \u0026lsquo;데이터 통신과 네트워킹 5판(Data Communications and Networking Fifth Edition, Behrouz A. Forouzan 저)\u0026rsquo; 책을 공부하여 작성하였습니다.\n혹시 틀린 답이 있다면 댓글로 알려주세요.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 변경금지 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 네트워크 \u0026amp; 통신\u0026rsquo; 카테고리의 다른 글 데이터 통신과 네트워킹 Chapter 19 네트워크층 프로토콜 연습 문제 정답 (6) 2020.06.29 데이터 통신과 네트워킹 Chapter 18 네트워크층의 소개 연습 문제 정답 (13) 2020.06.29 데이터 통신과 네트워킹 Chapter 16 기타 무선망 연습 문제 정답 (0) 2020.06.29 데이터 통신과 네트워킹 Chapter 15 무선 LAN 연습 문제 정답 (1) 2020.06.25 데이터 통신과 네트워킹 Chapter 14 다른 유선 네트워크들 연습 문제 정답 (0) 2020.06.25 ","permalink":"https://blog.sobamemil.com/posts/161-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%86%B5%EC%8B%A0%EA%B3%BC-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9-chapter-17-%EC%97%B0%EA%B2%B0-%EC%9E%A5%EC%B9%98%EC%99%80-%EA%B0%80%EC%83%81-lan-%EC%97%B0%EC%8A%B5-%EB%AC%B8%EC%A0%9C-%EC%A0%95%EB%8B%B5/","summary":"\u003cp\u003e\u003cstrong\u003eChapter 17 연결 장치와 가상 LAN 연습 문제 풀이(답)\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eVLAN은 _______ 으로 구성된 근거리 네트워크이다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; a. 소프트웨어\u003c/p\u003e\n\u003col start=\"2\"\u003e\n\u003cli\u003e증폭기는 _______ 계층에서 동작하는 연결 장치이다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; a. 물리\u003c/p\u003e\n\u003col start=\"3\"\u003e\n\u003cli\u003e링크 계층 교환기는 _______ 계층에서 동작하는 연결 장치이다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. 물리와 데이터링크\u003c/p\u003e\n\u003col start=\"4\"\u003e\n\u003cli\u003e라우터는 _______ 계층에서 동작하는 연결 장치이다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; d. 물리, 데이터링크와 네트워크\u003c/p\u003e\n\u003col start=\"5\"\u003e\n\u003cli\u003e_______ 은 필터링 기능이 없다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; a. 증폭기\u003c/p\u003e\n\u003col start=\"6\"\u003e\n\u003cli\u003e3 계층 교환기는 _______ 이다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. 라우터\u003c/p\u003e\n\u003col start=\"7\"\u003e\n\u003cli\u003e라우터는 _______ 의 목적지 주소에 따라 패킷을 구분한다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. 네트워크층\u003c/p\u003e","title":"데이터 통신과 네트워킹 Chapter 17 연결 장치와 가상 LAN 연습 문제 정답"},{"content":"Chapter 16 기타 무선망 연습 문제 풀이(답)\n_______ 은 1세대 셀룰러 전화 시스템이다. -\u0026gt; a. AMPS\n_______ 은 2세대 셀룰러 전화 시스템이다. -\u0026gt; b. D-AMPS\n_______ 은 AMPS의 디지털 버전이다. -\u0026gt; b. D-AMPS\n_______ 은 유럽에서 사용된 2세대 셀룰러 전화 시스템이다. -\u0026gt; a. GSM\n_______ 은 CDMA와 DSSS 기반의 2세대 셀룰러 전화 시스템이다. -\u0026gt; c. IS-95\n_______ 셀룰러 전화 시스템은 대중적인 개인 통신을 가능하게 하였다. -\u0026gt; c. 3세대\n_______ 핸드오프에서 이동국은 오직 하나의 기지국과 통신한다. -\u0026gt; a. 하드\n_______ 핸드오프에서 이동국은 동시에 2개의 기지국과 통신할 수 있다. -\u0026gt; b. 소프트\nAMPS에서 각 대역은 _______ 개의 채널로 나누어진다. -\u0026gt; d. 정답 없음 (a. 800, b. 900, c. 1000)\nAMPS는 _______ 주파수 재사용 인자를 가진다. -\u0026gt; d. 7\nAMPS는 각 25MHz 대역을 채널로 나누기 위해 _______ 을사용한다. -\u0026gt; a. FDMA\nGSM은 _______ 의 재사용 인자를 허용한다. -\u0026gt; b. 3\nIS-95는 ISM _______ 대역을 사용한다. -\u0026gt; d. 800MHz 이나 1900MHz 중 하나\nIS-95는 동기화를 위해 _______ 위성 시스템을 사용한다. -\u0026gt; a. GPS\nIS-95 시스템에서, 주파수 재사용 인자는 보통 _______ 이다. -\u0026gt; a. 1\n3세대 셀룰러 전화에서 _______ 은 W-CDMA를 사용한다. -\u0026gt; a. IMT-DS\n3세대 셀룰러 전화에서 _______ 은 W-CDMA와 TDMA의 조합을 사용한다. -\u0026gt; c. IMT-TC\n3세대 셀룰러 전화에서 _______ 은 오직 TDMA만을 사용한다. -\u0026gt; d. IMT-SC\n효율과 용량, 그리고 확장성을 증가시키기 위해서 _______ 와 같은 새로운 접근 기법이 4G 셀룰러 전화에서 고려되고 있다. -\u0026gt; d. 모두 정답 (a. OFDMA, b. IFDMA, c. MC-CMDA)\n4세대 셀룰러 전화는 _______ 을 사용한다. -\u0026gt; b. 소프트웨어로 정의한 전파\n4세대 셀룰러 전화는 _______ 안테나를 사용한다. -\u0026gt; c. MIMO와 MU-MIMO\nWiMax는 _______ 무선 시스템을 위한 IEEE의 표준이다. -\u0026gt; c. 고정과 이동\nWiMax는 _______ 을 목표로 한다. -\u0026gt; c. 케이블과 DSL을 대체하여 \u0026ldquo;라스트 마일\u0026rdquo; 광대역 무선 연결을 제공\n위성이 지구를 한 바퀴 돌기 위한 시간인 위성의 주기는 _______ 의 법칙에 의해 결정된다. -\u0026gt; a. 케플러\n위성으로부터 온 신호는 보통 _______ 으로 불리는 특정 지역을 목표로 한다. -\u0026gt; c. 영향예상지역\nGEO 위성을 위한 _______ 개의 궤도가 있다. -\u0026gt; a. 1\n_______ 은 삼변측량법의 원리에 기반을 둔다. -\u0026gt; a. GPS\n저지구궤도(LEO) 위성은 _______ 궤도를 가진다. -\u0026gt; b. 극(polar)\nGEO는 _______ 궤도를 가지며 지구와 같은 속도로 움직인다. -\u0026gt; a. 적도\nGPS 위성은 _______ 위성이다. -\u0026gt; b. MEO\n_______ 위성은 차량과 선박에 시간과 위치 정보를 제공한다. -\u0026gt; a. GPS\n모든 답은 \u0026lsquo;데이터 통신과 네트워킹 5판(Data Communications and Networking Fifth Edition, Behrouz A. Forouzan 저)\u0026rsquo; 책을 공부하여 작성하였습니다.\n혹시 틀린 답이 있다면 댓글로 알려주세요.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 변경금지 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 네트워크 \u0026amp; 통신\u0026rsquo; 카테고리의 다른 글 데이터 통신과 네트워킹 Chapter 18 네트워크층의 소개 연습 문제 정답 (13) 2020.06.29 데이터 통신과 네트워킹 Chapter 17 연결 장치와 가상 LAN 연습 문제 정답 (1) 2020.06.29 데이터 통신과 네트워킹 Chapter 15 무선 LAN 연습 문제 정답 (1) 2020.06.25 데이터 통신과 네트워킹 Chapter 14 다른 유선 네트워크들 연습 문제 정답 (0) 2020.06.25 데이터 통신과 네트워킹 Chapter 13 유선 LAN: 이더넷(Ethernet) 연습 문제 정답 (0) 2020.06.21 ","permalink":"https://blog.sobamemil.com/posts/160-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%86%B5%EC%8B%A0%EA%B3%BC-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9-chapter-16-%EA%B8%B0%ED%83%80-%EB%AC%B4%EC%84%A0%EB%A7%9D-%EC%97%B0%EC%8A%B5-%EB%AC%B8%EC%A0%9C-%EC%A0%95%EB%8B%B5/","summary":"\u003cp\u003e\u003cstrong\u003eChapter 16 기타 무선망 연습 문제 풀이(답)\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e_______ 은 1세대 셀룰러 전화 시스템이다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; a. AMPS\u003c/p\u003e\n\u003col start=\"2\"\u003e\n\u003cli\u003e_______ 은 2세대 셀룰러 전화 시스템이다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. D-AMPS\u003c/p\u003e\n\u003col start=\"3\"\u003e\n\u003cli\u003e_______ 은 AMPS의 디지털 버전이다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. D-AMPS\u003c/p\u003e\n\u003col start=\"4\"\u003e\n\u003cli\u003e_______ 은 유럽에서 사용된 2세대 셀룰러 전화 시스템이다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; a. GSM\u003c/p\u003e\n\u003col start=\"5\"\u003e\n\u003cli\u003e_______ 은 CDMA와 DSSS 기반의 2세대 셀룰러 전화 시스템이다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. IS-95\u003c/p\u003e\n\u003col start=\"6\"\u003e\n\u003cli\u003e_______ 셀룰러 전화 시스템은 대중적인 개인 통신을 가능하게 하였다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. 3세대\u003c/p\u003e\n\u003col start=\"7\"\u003e\n\u003cli\u003e_______ 핸드오프에서 이동국은 오직 하나의 기지국과 통신한다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; a. 하드\u003c/p\u003e","title":"데이터 통신과 네트워킹 Chapter 16 기타 무선망 연습 문제 정답"},{"content":"Chapter 15 무선 LAN 연습 문제 풀이(답)\n다음 유선과 무선 LAN의 설명 중 옳은 것은? -\u0026gt; a. 둘 다 TCP/IP 프로토콜 슈트의 하위 두 계층에서 동작한다. (물리층, 데이터링크층)\nIEEE는 _______ 으로 불리는 물리층과 데이터링크층을 포함하는 무선 LAN의 세부사항을 정의하였다. -\u0026gt; c. IEEE 802.11\nCSMA/CD 알고리즘은 무선 LAN에서 사용되지 않는데 그 이유는? -\u0026gt; d. 모두 정답 (a. 무선 호스트가 이중 모드(duplex mode)로 작동하기 위한 충분한 전력을 가지고 있지 않아서, b. 숨겨진 지국 문제 때문에, c. 신호 감쇠로 한 지국이 반대편에서 발생한 충돌을 감지할 수 없어서)\nIEEE 802.11에서 _______ 은 정지한 혹은 이동 무선국과 선택적으로 접근점(AP)으로 알려진 중앙 기지국을 포함한다. -\u0026gt; b. BSS\nIEEE 802.11 에서 AP를 제외한 BSS를 _______ (이)라고 한다. -\u0026gt; a. 애드 혹 구조 (an ad hoc architecture)\nIEEE 802.11에서 AP를 포함한 BSS를 종종 _______ 으로 나타낸다. -\u0026gt; b. 기반 네트워크 (an infrastructure network)\nIEEE 802.11에서 2개의 다른 BSS의 두 지국 간의 통신은 종종 2개의 _______ 을 통해 이루어진다. -\u0026gt; c. APs\nIEEE 802.11에서 _______ 이동이 가능한 지국은 정적(움직이지 않음)이거나 BSS 내에서만 이동한다. -\u0026gt; a. 무전이\nIEEE 802.11에서 _______ 이동이 가능한 지국은 하나의 BSS에서 다른 곳으로 이동이 가능하지만 이동은 하나의 ESS 내로만 제한된다. -\u0026gt; b. BSS 전이\nIEEE 802.11에서 _______ 이동이 가능한 지국은 ESS간의 이동이 가능하다. -\u0026gt; c. ESS 전이\nIEEE 802.11에서 분산 조정 함수(DCF)는 접속 기법으로 _______ 을 사용한다. -\u0026gt; a. CSMA/CA\nIEEE 802.11에서 한 BSS의 지국에서 다른 BSS의 지국으로 프레임이 전달될 때 주소 플래그는 _______ 이다. -\u0026gt; 00\nIEEE 802.11에서 AP에서 지국으로 향하는 프레임의 주소 플래그는 _______ 이다. -\u0026gt; b. 01\nIEEE 802.11에서 지국에서 AP로 향하는 프레임의 주소 플래그는 _______ 이다. -\u0026gt; c. 10\nIEEE 802.11에서 프레임이 무선 분산 시스템의 한 AP에서 다른 AP로 이동할 때 주소 플래그는 _______ 이다. -\u0026gt; d. 11\nIEEE 802.11에서 PCF 부계층에서 사용하는 접속 기법은 _______ 이다. -\u0026gt; c. 폴링\nIEEE 802.11에서 _______ 은 충돌 회피에 사용되는 시간이다. -\u0026gt; a. NAV\nIEEE 802.11에서 주소 기법은 최대 _______ 개의 주소를 포함할 수 있다. -\u0026gt; a. 4\n본래의 IEEE 802.11은 _______ (을)를 사용한다. -\u0026gt; d. FHSS나 DSSS\nIEEE 802.11a는 _______ (을)를 사용한다. -\u0026gt; c. OFDM\nIEEE 802.11b는 _______ (을)를 사용한다. -\u0026gt; b. DSSS\nIEEE 802.11g는 _______ (을)를 사용한다. -\u0026gt; c. OFDM\nIEEE 802.11 FSSS는 _______ 변조를 사용한다. -\u0026gt; b. FSK\nIEEE 802.11나 IEEE 802.11b DSSS는 _______ 변조를 사용한다. -\u0026gt; c. PSK\nIEEE 802.11a, IEEE 802.11g, 혹은 IEEE 802.11n OFDM은 _______ 변조를 사용한다. -\u0026gt; d. 정답 없음 (a. ASK, b. FSK, c. PSK)\n블루투스는 작은 지역에서 기기(가드겟이라 불리는)를 연결하기 위한 _______ 기술이다. -\u0026gt; d. 정답 없음 (정답 : PAN) (a. 유선 LAN, b. 무선 LAN, c. VLAN) 블루투스에서 다중 _______ 은 _______ 으로 불리는 네트워크를 형성한다. -\u0026gt; b. 피코넷, 스캐터넷\n블루투스 네트워크는 **_______**개의 주국과 최대 _______ 개의 종국으로 구성된다. -\u0026gt; d. 1, 7\n블루투스에서 현재 데이터율은 _______ Mbps이다. -\u0026gt; d. 정답 없음 (a. 2, b. 5, c. 11)\n블루투스의 접속 기법은 _______ 이다. -\u0026gt; b. TDD-TDMA\n블루투스에서 _______ 링크는 지연을 줄이는 것보다 데이터의 무결성이 더 중요할 때 사용된다. -\u0026gt; b. ACL\n블루투스는 다른 장치나 다른 네트워크로부터 간섭을 회피하기 위해 물리층에서 _______ 을 사용한다. -\u0026gt; b. FHSS\n모든 답은 \u0026lsquo;데이터 통신과 네트워킹 5판(Data Communications and Networking Fifth Edition, Behrouz A. Forouzan 저)\u0026rsquo; 책을 공부하여 작성하였습니다.\n혹시 틀린 답이 있다면 댓글로 알려주세요.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 변경금지 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 네트워크 \u0026amp; 통신\u0026rsquo; 카테고리의 다른 글 데이터 통신과 네트워킹 Chapter 17 연결 장치와 가상 LAN 연습 문제 정답 (1) 2020.06.29 데이터 통신과 네트워킹 Chapter 16 기타 무선망 연습 문제 정답 (0) 2020.06.29 데이터 통신과 네트워킹 Chapter 14 다른 유선 네트워크들 연습 문제 정답 (0) 2020.06.25 데이터 통신과 네트워킹 Chapter 13 유선 LAN: 이더넷(Ethernet) 연습 문제 정답 (0) 2020.06.21 데이터 통신과 네트워킹 Chapter 12 매체 접근 제어(MAC) 연습 문제 정답 (2) 2020.06.21 ","permalink":"https://blog.sobamemil.com/posts/159-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%86%B5%EC%8B%A0%EA%B3%BC-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9-chapter-15-%EB%AC%B4%EC%84%A0-lan-%EC%97%B0%EC%8A%B5-%EB%AC%B8%EC%A0%9C-%EC%A0%95%EB%8B%B5/","summary":"\u003cp\u003e\u003cstrong\u003eChapter 15 무선 LAN 연습 문제 풀이(답)\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e다음 유선과 무선 LAN의 설명 중 옳은 것은?\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; a. 둘 다 TCP/IP 프로토콜 슈트의 하위 두 계층에서 동작한다. (물리층, 데이터링크층)\u003c/p\u003e\n\u003col start=\"2\"\u003e\n\u003cli\u003eIEEE는 _______ 으로 불리는 물리층과 데이터링크층을 포함하는 무선 LAN의 세부사항을 정의하였다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. IEEE 802.11\u003c/p\u003e\n\u003col start=\"3\"\u003e\n\u003cli\u003eCSMA/CD 알고리즘은 무선 LAN에서 사용되지 않는데 그 이유는?\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; d. 모두 정답 (a. 무선 호스트가 이중 모드(duplex mode)로 작동하기 위한 충분한 전력을 가지고 있지 않아서, b. 숨겨진 지국 문제 때문에, c. 신호 감쇠로 한 지국이 반대편에서 발생한 충돌을 감지할 수 없어서)\u003c/p\u003e","title":"데이터 통신과 네트워킹 Chapter 15 무선 LAN 연습 문제 정답"},{"content":"Chapter 14 다른 유선 네트워크들 연습 문제 풀이(답)\nADSL에서 대역폭의 많은 부분은 _______ 을 전송하는 것이다. -\u0026gt; c. 하향 데이터\n케이블 TV 사무실의 다른 이름은 _______ 이다. -\u0026gt; d. 꼭지 끝(head end)\n전통적인 케이블 TV네트워크에서 신호는 _______ 로 전송된다. -\u0026gt; b. 하향\n전화 시스템을 의미하는 original 전화 네트워크는 _______ 시스템이다. -\u0026gt; b. 아날로그\n전통적인 케이블 TV 시스템은 종단-대-종단을 연결하기 위해 _______ 케이블을 사용한다. -\u0026gt; b. 동축\n2세대 케이블 네트워크는 _______ 네트워크라 불린다. -\u0026gt; a. HFC\nHFC 네트워크는 _______ 케이블을 사용한다. -\u0026gt; d. 광섬유와 동축 케이블의 조합\n데이터 전송에서 케이블 네트워크를 사용하기 위해, _______ 와 _______ 의 중요 장치가 필요하다. -\u0026gt; c. CM; CMTS\n_______ 신호는 전기 신호 세기 STS-n의 광학 신호를 나타낸다. -\u0026gt; a. OC-n\nSONET은 _______ TDM 다중화를 사용한다. -\u0026gt; b. 동기\nSONET 시스템은 _______ 을 사용한다. -\u0026gt; d. 모든 선택지가 정답이다. (a. STS 다중화기, b. 재생기, c. 추가/삭제 다중화기)\nSONET은 초당 _______ 프레임을 전송한다. -\u0026gt; d. 8000\nSONET에서 _______ 는 신호의 삽입과 추가를 가능하게 한다. -\u0026gt; b. ADMs\nSONET에서 각 바이트에 대해 비트는 _______ 전송된다. -\u0026gt; b. 최상위에서 최하위까지\n_______ 는 포럼에 의해 디자인되고 ITU-T에 의해 채택된 셀 중계 프로토콜이다. -\u0026gt; c. ATM\nATM 표준은 _______ 계층을 정의한다. -\u0026gt; b. 3\nATM 데이터 유닛은 _______ 바이트로 압축된 셀이다. -\u0026gt; d. 53\nATM에서 _______ 는 사용자와 ATM 교환기 사이의 인터페이스이다. -\u0026gt; a. UNI\nATM에서 _______ 는 두 ATM 교환기 사이의 인터페이스이다. -\u0026gt; b. NNI\nATM에서 _______ 계층은 상위 계층 서비스로의 전송을 허용하고, 셀에 매핑한다. -\u0026gt; c. AAL\nATM에서 _______ 계층은 라우팅, 트래픽 관리, 교환과 다중화 서비스를 제공한다. -\u0026gt; b. ATM\nSONET에서 _______ 는 중계기이다. -\u0026gt; a. 재생기\n모든 답은 \u0026lsquo;데이터 통신과 네트워킹 5판(Data Communications and Networking Fifth Edition, Behrouz A. Forouzan 저)\u0026rsquo; 책을 공부하여 작성하였습니다.\n혹시 틀린 답이 있다면 댓글로 알려주세요.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 변경금지 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 네트워크 \u0026amp; 통신\u0026rsquo; 카테고리의 다른 글 데이터 통신과 네트워킹 Chapter 16 기타 무선망 연습 문제 정답 (0) 2020.06.29 데이터 통신과 네트워킹 Chapter 15 무선 LAN 연습 문제 정답 (1) 2020.06.25 데이터 통신과 네트워킹 Chapter 13 유선 LAN: 이더넷(Ethernet) 연습 문제 정답 (0) 2020.06.21 데이터 통신과 네트워킹 Chapter 12 매체 접근 제어(MAC) 연습 문제 정답 (2) 2020.06.21 데이터 통신과 네트워킹 Chapter 11 데이터링크 제어(DLC) 연습 문제 정답 (0) 2020.06.21 ","permalink":"https://blog.sobamemil.com/posts/158-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%86%B5%EC%8B%A0%EA%B3%BC-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9-chapter-14-%EB%8B%A4%EB%A5%B8-%EC%9C%A0%EC%84%A0-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%EB%93%A4-%EC%97%B0%EC%8A%B5-%EB%AC%B8%EC%A0%9C-%EC%A0%95%EB%8B%B5/","summary":"\u003cp\u003e\u003cstrong\u003eChapter 14 다른 유선 네트워크들 연습 문제 풀이(답)\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eADSL에서 대역폭의 많은 부분은 _______ 을 전송하는 것이다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. 하향 데이터\u003c/p\u003e\n\u003col start=\"2\"\u003e\n\u003cli\u003e케이블 TV 사무실의 다른 이름은 _______ 이다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; d. 꼭지 끝(head end)\u003c/p\u003e\n\u003col start=\"3\"\u003e\n\u003cli\u003e전통적인 케이블 TV네트워크에서 신호는 _______ 로 전송된다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. 하향\u003c/p\u003e\n\u003col start=\"4\"\u003e\n\u003cli\u003e전화 시스템을 의미하는 original 전화 네트워크는 _______ 시스템이다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. 아날로그\u003c/p\u003e\n\u003col start=\"5\"\u003e\n\u003cli\u003e전통적인 케이블 TV 시스템은 종단-대-종단을 연결하기 위해 _______ 케이블을 사용한다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. 동축\u003c/p\u003e\n\u003col start=\"6\"\u003e\n\u003cli\u003e2세대 케이블 네트워크는 _______ 네트워크라 불린다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; a. HFC\u003c/p\u003e","title":"데이터 통신과 네트워킹 Chapter 14 다른 유선 네트워크들 연습 문제 정답"},{"content":"Chapter 13 유선 LAN: 이더넷(Ethernet) 연습 문제 풀이(답)\n이더넷 주소가 2진수로 01011010 00010001 01010101 00011000 10101010 00001111 이면, 이 주소는 16진수로 무엇인가? -\u0026gt; d. 5A:11:55:18:AA:0F\n만약 이더넷 목적지 주소가 07:01:02:03:04:05이면, 이것은 _______ 주소이다. -\u0026gt; b. 멀티캐스트\n만약 이더넷 목적지 주소가 08:07:06:05:44:33이면, 이것은 _______ 주소이다. -\u0026gt; a. 유니캐스트\n아래의 선택지들 중에서 어떤 것이 이더넷의 멀티캐스트 목적지 주소로 사용될 수 있는가? -\u0026gt; a. 43:7B:6C:DE:10:00\n아래의 선택지들 중에서 어떤 것이 이더넷의 유니캐스트 목적지 주소로 사용될 수 있는가? -\u0026gt; c. 7C:56:21:1A:DE:F4\n이더넷의 _______ 계층은 LLC 부계층과 MAC 부계층으로 구성되어 있다. -\u0026gt; a. 데이터 링크\n_______ 부계층은 CSMA/CD 접근 방식과 프레임 짜기의 동작을 담당하고 있다. -\u0026gt; c. MAC\n이더넷 네트워크에 있는 각 지국은 NIC에 각인된 고유한 _______ 주소를 가진다. -\u0026gt; d. 정답 없음\n이더넷의 최소 프레임 길이는 _______ 이다. -\u0026gt; d. 정답 없음\n빠른 이더넷은 _______ Mbps의 데이터율을 가진다. -\u0026gt; b. 100\n_______ 에서 자동협상은 두 장치가 동작 모드 또는 데이터율을 협상하도록 허용한다. -\u0026gt; b. 빠른 이더넷\n기가비트 이더넷은 Mbps의 데이터율을 가진다. -\u0026gt; c. 1000\n이더넷 주소에서, 만약 첫 번째 바이트의 최하위 비트가 0이면 이 주소는 _______ 이다. -\u0026gt; a. 유니캐스트\n이더넷 주소에서, 만약 첫 번째 바이트의 최하위 비트가 1이면 이 주소는 _______ 이다. -\u0026gt; b. 멀티캐스트\n이더넷 주소에서, 만약 모든 비트가 1이면, 이 주소는 _______ 이다. -\u0026gt; c. 브로드캐스트\n이더넷에서, _______ 필드는 실질적으로 물리층에 추가되고 이것은 프레임의 한 부분이 아니다. -\u0026gt; b. preamble\n이더넷 프레임에서, _______ 필드는 오류 검출 정보를 포함한다. -\u0026gt; a. CRC\n모든 답은 \u0026lsquo;데이터 통신과 네트워킹 5판(Data Communications and Networking Fifth Edition, Behrouz A. Forouzan 저)\u0026rsquo; 책을 공부하여 작성하였습니다.\n혹시 틀린 답이 있다면 댓글로 알려주세요.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 네트워크 \u0026amp; 통신\u0026rsquo; 카테고리의 다른 글 데이터 통신과 네트워킹 Chapter 15 무선 LAN 연습 문제 정답 (1) 2020.06.25 데이터 통신과 네트워킹 Chapter 14 다른 유선 네트워크들 연습 문제 정답 (0) 2020.06.25 데이터 통신과 네트워킹 Chapter 12 매체 접근 제어(MAC) 연습 문제 정답 (2) 2020.06.21 데이터 통신과 네트워킹 Chapter 11 데이터링크 제어(DLC) 연습 문제 정답 (0) 2020.06.21 데이터 통신과 네트워킹 Chapter 10 오류 검출과 오류 정정 연습 문제 정답 (0) 2020.06.21 ","permalink":"https://blog.sobamemil.com/posts/157-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%86%B5%EC%8B%A0%EA%B3%BC-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9-chapter-13-%EC%9C%A0%EC%84%A0-lan-%EC%9D%B4%EB%8D%94%EB%84%B7ethernet-%EC%97%B0%EC%8A%B5-%EB%AC%B8%EC%A0%9C-%EC%A0%95/","summary":"\u003cp\u003e\u003cstrong\u003eChapter 13 유선 LAN: 이더넷(Ethernet) 연습 문제 풀이(답)\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e이더넷 주소가 2진수로 01011010 00010001 01010101 00011000 10101010 00001111 이면, 이 주소는 16진수로 무엇인가?\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; d. 5A:11:55:18:AA:0F\u003c/p\u003e\n\u003col start=\"2\"\u003e\n\u003cli\u003e만약 이더넷 목적지 주소가 07:01:02:03:04:05이면, 이것은 _______ 주소이다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. 멀티캐스트\u003c/p\u003e\n\u003col start=\"3\"\u003e\n\u003cli\u003e만약 이더넷 목적지 주소가 08:07:06:05:44:33이면, 이것은 _______ 주소이다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; a. 유니캐스트\u003c/p\u003e\n\u003col start=\"4\"\u003e\n\u003cli\u003e아래의 선택지들 중에서 어떤 것이 이더넷의 멀티캐스트 목적지 주소로 사용될 수 있는가?\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; a. 43:7B:6C:DE:10:00\u003c/p\u003e\n\u003col start=\"5\"\u003e\n\u003cli\u003e아래의 선택지들 중에서 어떤 것이 이더넷의 유니캐스트 목적지 주소로 사용될 수 있는가?\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. 7C:56:21:1A:DE:F4\u003c/p\u003e","title":"데이터 통신과 네트워킹 Chapter 13 유선 LAN: 이더넷(Ethernet) 연습 문제 정답"},{"content":"Chapter 12 매체 접근 제어(MAC) 연습 문제 풀이(답)\n_______ 임의 접근 방식은 충돌을 회피한다. -\u0026gt; b. CSMA/CA\n1-지속 방식에서, 지국이 유휴 상태이면, 그것은 _______ . -\u0026gt; a. 즉시 전송한다.\n_______ 은 하나의 주국과 하나 또는 그 이상의 종국을 요구한다. -\u0026gt; c. 폴링\nP-지속 방식에서 지국은 유휴상태를 감지하면 그것은 _______ . -\u0026gt; d. P의 확률로 전송한다.\n1-지속 방법은 _______ 와 동일한 p를 사용하는 P-지속 방법의 특별한 경우이다. -\u0026gt; a. 1.0\n예약 접근 방법에서 만약 10개의 지국이 네트워크에 있다면, 예약 프레임에는 _______ 개의 예약 미니 슬롯이 있다. -\u0026gt; a. 10\n_______ 는 제어 접근 프로토콜이다. -\u0026gt; d. 예약\n_______ 는 채널화 프로토콜이다. -\u0026gt; d. 모든 선택지가 정답이다.\n_______ 임의 접근 방법에서 지국은 매체를 감지하지 않는다. -\u0026gt; b. ALOHA\n아래의 선택지들 중에 어떤 것이 임의 접근 프로토콜의 예제인가? -\u0026gt; d. 정답 없음\n아래의 선택지들 중 어떤 것이 제어 접근 프로토콜의 예제인가? -\u0026gt; c. 토큰 통과\n순수 ALOHA의 취약시간은 슬롯 ALOHA의 취약시간보다 _______ . -\u0026gt; b. 더 크다.\nCSMA의 취약 시간은 _______ 이다. -\u0026gt; Tp\nRTS와 CTS 패킷은 _______ 프로토콜에서 필요하다. -\u0026gt; a. CSMA/CA\nFDMA에서 채널화를 위해 서로 다른 _______ 를 사용한다. -\u0026gt; a. 주파수 범위\nCDMA에서 채널화를 위해 서로 다른 _______ 를 사용한다. -\u0026gt; c. 코드\nTDMA에서 채널화를 위해 서로 다른 _______ 를 사용한다. -\u0026gt; b. 시간 슬롯\n월시 테이블은 _______ 에서 사용된다. -\u0026gt; c. CDMA\n모든 답은 \u0026lsquo;데이터 통신과 네트워킹 5판(Data Communications and Networking Fifth Edition, Behrouz A. Forouzan 저)\u0026rsquo; 책을 공부하여 작성하였습니다.\n혹시 틀린 답이 있다면 댓글로 알려주세요.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 네트워크 \u0026amp; 통신\u0026rsquo; 카테고리의 다른 글 데이터 통신과 네트워킹 Chapter 14 다른 유선 네트워크들 연습 문제 정답 (0) 2020.06.25 데이터 통신과 네트워킹 Chapter 13 유선 LAN: 이더넷(Ethernet) 연습 문제 정답 (0) 2020.06.21 데이터 통신과 네트워킹 Chapter 11 데이터링크 제어(DLC) 연습 문제 정답 (0) 2020.06.21 데이터 통신과 네트워킹 Chapter 10 오류 검출과 오류 정정 연습 문제 정답 (0) 2020.06.21 데이터 통신과 네트워킹 Chapter 9 데이터링크층 소개 연습 문제 정답 (0) 2020.06.21 ","permalink":"https://blog.sobamemil.com/posts/156-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%86%B5%EC%8B%A0%EA%B3%BC-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9-chapter-12-%EB%A7%A4%EC%B2%B4-%EC%A0%91%EA%B7%BC-%EC%A0%9C%EC%96%B4mac-%EC%97%B0%EC%8A%B5-%EB%AC%B8%EC%A0%9C-%EC%A0%95%EB%8B%B5/","summary":"\u003cp\u003e\u003cstrong\u003eChapter 12 매체 접근 제어(MAC) 연습 문제 풀이(답)\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e_______ 임의 접근 방식은 충돌을 회피한다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. CSMA/CA\u003c/p\u003e\n\u003col start=\"2\"\u003e\n\u003cli\u003e1-지속 방식에서, 지국이 유휴 상태이면, 그것은 _______ .\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; a. 즉시 전송한다.\u003c/p\u003e\n\u003col start=\"3\"\u003e\n\u003cli\u003e_______ 은 하나의 주국과 하나 또는 그 이상의 종국을 요구한다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. 폴링\u003c/p\u003e\n\u003col start=\"4\"\u003e\n\u003cli\u003eP-지속 방식에서 지국은 유휴상태를 감지하면 그것은 _______ .\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; d. P의 확률로 전송한다.\u003c/p\u003e\n\u003col start=\"5\"\u003e\n\u003cli\u003e1-지속 방법은 _______ 와 동일한 p를 사용하는 P-지속 방법의 특별한 경우이다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; a. 1.0\u003c/p\u003e\n\u003col start=\"6\"\u003e\n\u003cli\u003e예약 접근 방법에서 만약 10개의 지국이 네트워크에 있다면, 예약 프레임에는 _______ 개의 예약 미니 슬롯이 있다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; a. 10\u003c/p\u003e","title":"데이터 통신과 네트워킹 Chapter 12 매체 접근 제어(MAC) 연습 문제 정답"},{"content":"Chapter 11 데이터링크 제어(DLC) 연습 문제 풀이(답)\nHDLC는 _______ 의 줄임말이다. -\u0026gt; c. High-Level Data Link Control\nHDLC 프로토콜에서 가장 짧은 프레임은 항상 _______ 프레임이다. -\u0026gt; c. 감시\nHDLC에서 프레임의 주소 필드는 _______ 지국의 주소를 포함한다. -\u0026gt; b. 두 번째\nHDLC _______ 필드는 프레임의 처음과 끝을 정의한다. -\u0026gt; b. 플래그\n다음 중 모든 HDLC 제어 필드에 있는 것은 무엇인가? -\u0026gt; d. P/F 비트\nPPP 천이단계 다이어그램에 따르면, 옵션들은 _______ 상태에서 협상된다. -\u0026gt; c. 설정\nPPP 천이단계 다이어그램에 따르면, 사용자 식별자 확인은 _______ 상태에서 발생한다. -\u0026gt; d. 인증\nPPP 프레임에서 _______ 필드는 데이터 필드의 콘텐츠를 정의한다. -\u0026gt; d. 프로토콜\nPPP 프레임에서 _______ 필드는 HDLC에서 U-프레임의 것과 유사하다. -\u0026gt; d. 제어\nPPP 프레임에서 _______ 필드는 HLC의 브로드캐스트 주소를 나타내기 위해 11111111의 값을 가진다. -\u0026gt; b. 주소\nPPP에서 LCP 패킷의 목적은 무엇인가? -\u0026gt; d. 모든 선택지가 정답이다.\nPPP 프레임에서 _______ 필드는 오류 제어를 담당한다. -\u0026gt; a. FCS\nCHAP 인증에서 사용자는 시스템으로 전송하는 결과를 만들기 위해, 시스템의 _______ 와 그것의 고유한 _______ 을 가진다. -\u0026gt; c. 챌린지 값, 패스워드\n바이트 채우기에서, 때때로 페이로드에 _______ 를 추가할 필요가 있다. -\u0026gt; b. ESC 바이트\n비트 스터핑에서 때때로 페이로드에 추가적인 _______ 비트를 추가할 필요가 있다. -\u0026gt; a. 0의\nHDLC는 _______ 지향 프로토콜이다. -\u0026gt; b. 비트\nPPP는 _______ 지향 프로토콜이다. -\u0026gt; a. 바이트\nPPP에서 주소 필드는 패킷의 _______ 를 정의한다. -\u0026gt; d. 정답 없음\nPPP에서 _______ 필드는 프레임에 캡슐화된 페이로드의 종류를 정의한다. -\u0026gt; c. 프로토콜\nPPP에서 CHAP 프로토콜은 통신에서 패리티를 인증하기 위해 _______ 단계를 사용한다. -\u0026gt; c. 3개의\n모든 답은 \u0026lsquo;데이터 통신과 네트워킹 5판(Data Communications and Networking Fifth Edition, Behrouz A. Forouzan 저)\u0026rsquo; 책을 공부하여 작성하였습니다.\n혹시 틀린 답이 있다면 댓글로 알려주세요.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 네트워크 \u0026amp; 통신\u0026rsquo; 카테고리의 다른 글 데이터 통신과 네트워킹 Chapter 13 유선 LAN: 이더넷(Ethernet) 연습 문제 정답 (0) 2020.06.21 데이터 통신과 네트워킹 Chapter 12 매체 접근 제어(MAC) 연습 문제 정답 (2) 2020.06.21 데이터 통신과 네트워킹 Chapter 10 오류 검출과 오류 정정 연습 문제 정답 (0) 2020.06.21 데이터 통신과 네트워킹 Chapter 9 데이터링크층 소개 연습 문제 정답 (0) 2020.06.21 데이터 통신과 네트워킹 Chapter 8 교환 연습 문제 정답 (1) 2020.06.21 ","permalink":"https://blog.sobamemil.com/posts/155-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%86%B5%EC%8B%A0%EA%B3%BC-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9-chapter-11-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A7%81%ED%81%AC-%EC%A0%9C%EC%96%B4dlc-%EC%97%B0%EC%8A%B5-%EB%AC%B8%EC%A0%9C-%EC%A0%95%EB%8B%B5/","summary":"\u003cp\u003e\u003cstrong\u003eChapter 11 데이터링크 제어(DLC) 연습 문제 풀이(답)\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eHDLC는 _______ 의 줄임말이다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. High-Level Data Link Control\u003c/p\u003e\n\u003col start=\"2\"\u003e\n\u003cli\u003eHDLC 프로토콜에서 가장 짧은 프레임은 항상 _______ 프레임이다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. 감시\u003c/p\u003e\n\u003col start=\"3\"\u003e\n\u003cli\u003eHDLC에서 프레임의 주소 필드는 _______ 지국의 주소를 포함한다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. 두 번째\u003c/p\u003e\n\u003col start=\"4\"\u003e\n\u003cli\u003eHDLC _______ 필드는 프레임의 처음과 끝을 정의한다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. 플래그\u003c/p\u003e\n\u003col start=\"5\"\u003e\n\u003cli\u003e다음 중 모든 HDLC 제어 필드에 있는 것은 무엇인가?\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; d. P/F 비트\u003c/p\u003e\n\u003col start=\"6\"\u003e\n\u003cli\u003ePPP 천이단계 다이어그램에 따르면, 옵션들은 _______ 상태에서 협상된다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. 설정\u003c/p\u003e","title":"데이터 통신과 네트워킹 Chapter 11 데이터링크 제어(DLC) 연습 문제 정답"},{"content":"Chapter 10 오류 검출과 오류 정정 연습 문제 풀이(답)\n아래의 선택지 중에서 어떤 것이 단일 비트 오류에 대해 가장 잘 설명하였는가? -\u0026gt; d. 모든 선택지가 정답이다.\n어떤 오류 검출 방법이 1의 보수 연산을 사용하는가? -\u0026gt; b. 검사합\n어떤 오류 검출 방법이 데이터 유닛마다 하나의 중복 비트로 구성되는가? -\u0026gt; c. 단순 패리티 검사\n어떤 오류 검출 방법이 다항식을 포함하는가? -\u0026gt; a. CRC\n만약 ASCII 문자 G가 전송되고, 문자 D를 전달받으면, 이러한 것을 어떤 오류라 부르는가? -\u0026gt; c. 폭주 오류\n만약 ASCII 문자 H를 전송하고, 문자 L을 전달받는다면, 이것은 어떤 종류의 오류인가? -\u0026gt; ?\n순환 중복 검사에서 어떤 검사 비트를 형성하는가? -\u0026gt; a. 나머지\nCRC에서 만약 데이터워드가 111111, 제수가 1010이고 나머지가 110이라면, 수신자에서의 코드워드는 무엇인가? -\u0026gt; c. 111111110\nCRC에서 만약 데이터워드가 111111이고 제수가 1010이면, 발신자에서 피제수는 무엇인가? -\u0026gt; b. 111111000\nCRC 생성기에서, 코드워드를 생성하기 위해 나눗셈 절차 후에 데이터워드에 _______ 를 추가한다. -\u0026gt; c. 나머지\n만약 오류가 검출되지 않았다면, 검사합의 합과 수신자의 데이터는 _______ 이다. -\u0026gt; a. -0\nCRC에서 송신자의 몫은 _______. -\u0026gt; d. 폐기된다.\nCRC 검사기에서 _______ 는 데이터워드가 손상되었다는 것을 의미한다. -\u0026gt; b. 0이 아닌 나머지\n10비트 코드워드는 단지 4개의 0을 가지고 있다. 이 코드의 다항식 표현은 얼마나 많은가? -\u0026gt; b. 6\nCRC에서 만약 나머지가 단지 세 비트라면, 제수는 _______ 비트이다. -\u0026gt; c. 4\n만약 CRC-8을 사용한다면, 제수는 얼마나 많은 비트로 이루어져 있는가? -\u0026gt; a. 9\n검사합은 _______ 덧셈을 사용한다. -\u0026gt; a. 1의 보수\n5개의 오류를 검출하기 위해, 코드워드 사이의 해밍 거리는 적어도 _______ 이 되어야 한다. -\u0026gt; b. 6\n5개의 오류를 정정하기 위해, 각 코드워드 사이의 해밍 거리는 적어도 _______ 이 되어야 한다. -\u0026gt; c. 11\n검사합은 오류를 _______. -\u0026gt; a. 단지 검출할 수 있다.\n모든 답은 \u0026lsquo;데이터 통신과 네트워킹 5판(Data Communications and Networking Fifth Edition, Behrouz A. Forouzan 저)\u0026rsquo; 책을 공부하여 작성하였습니다.\n혹시 틀린 답이 있다면 댓글로 알려주세요.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 네트워크 \u0026amp; 통신\u0026rsquo; 카테고리의 다른 글 데이터 통신과 네트워킹 Chapter 12 매체 접근 제어(MAC) 연습 문제 정답 (2) 2020.06.21 데이터 통신과 네트워킹 Chapter 11 데이터링크 제어(DLC) 연습 문제 정답 (0) 2020.06.21 데이터 통신과 네트워킹 Chapter 9 데이터링크층 소개 연습 문제 정답 (0) 2020.06.21 데이터 통신과 네트워킹 Chapter 8 교환 연습 문제 정답 (1) 2020.06.21 데이터 통신과 네트워킹 Chapter 7 전송 매체 연습 문제 정답 (0) 2020.06.21 ","permalink":"https://blog.sobamemil.com/posts/154-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%86%B5%EC%8B%A0%EA%B3%BC-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9-chapter-10-%EC%98%A4%EB%A5%98-%EA%B2%80%EC%B6%9C%EA%B3%BC-%EC%98%A4%EB%A5%98-%EC%A0%95%EC%A0%95-%EC%97%B0%EC%8A%B5-%EB%AC%B8%EC%A0%9C-%EC%A0%95%EB%8B%B5/","summary":"\u003cp\u003e\u003cstrong\u003eChapter 10 오류 검출과 오류 정정 연습 문제 풀이(답)\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e아래의 선택지 중에서 어떤 것이 단일 비트 오류에 대해 가장 잘 설명하였는가?\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; d. 모든 선택지가 정답이다.\u003c/p\u003e\n\u003col start=\"2\"\u003e\n\u003cli\u003e어떤 오류 검출 방법이 1의 보수 연산을 사용하는가?\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. 검사합\u003c/p\u003e\n\u003col start=\"3\"\u003e\n\u003cli\u003e어떤 오류 검출 방법이 데이터 유닛마다 하나의 중복 비트로 구성되는가?\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. 단순 패리티 검사\u003c/p\u003e\n\u003col start=\"4\"\u003e\n\u003cli\u003e어떤 오류 검출 방법이 다항식을 포함하는가?\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; a. CRC\u003c/p\u003e\n\u003col start=\"5\"\u003e\n\u003cli\u003e만약 ASCII 문자 G가 전송되고, 문자 D를 전달받으면, 이러한 것을 어떤 오류라 부르는가?\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. 폭주 오류\u003c/p\u003e","title":"데이터 통신과 네트워킹 Chapter 10 오류 검출과 오류 정정 연습 문제 정답"},{"content":"Chapter 9 데이터링크층 소개 전송 연습 문제 풀이(답)\n데이터링크층에서 통신은 _______ 이다. -\u0026gt; b. 노드-대-노드\n_______ 는 지역주소이다. 그 범위는 지역 네트워크를 넘어서지 않는다. -\u0026gt; a. 링크계층 주소\n만약 송신자가 호스트이고, 같은 네트워크에 있는 다른 호스트로 패킷을 전송하고자 하면, 물리 주소와 매핑되는 논리적 주소는 _______ 이다. -\u0026gt; a. 데이터그램 헤더 안에 있는 목적지 IP 주소\n만약 송신자가 호스트이고 다른 네트워크에 있는 다른 호스트로 패킷을 전송하고자 할 때, 물리 주소와 매핑되는 논리적 주소는 _______ 이다. -\u0026gt; b. 라우팅 테이블에서 찾을 수 있는 라우터의 IP 주소\n발신자는 다른 네트워크에 있는 호스트로 향하는 데이터그램을 수신한 라우터이다. 물리 주소와 매핑되는 논리적 주소는 _______ 이다. -\u0026gt; b. 라우팅 테이블에서 찾을 수 있는 라우터의 IP 주소\n발신자는 동일한 네트워크에 있는 호스트로 향하는 데이터그램을 수신한 라우터이다. 물리 주소와 매핑되는 논리적 주소는 _______ 이다. -\u0026gt; a. 데이터그램 헤더 안에 있는 목적지 IP 주소\nARP 응답은 일반적으로 _______ 이다. -\u0026gt; c. 유니캐스트\nARP 요청은 일반적으로 _______ 이다. -\u0026gt; a. 브로드캐스트\n데이터링크층에서 패킷은 일반적으로 _______ 라 부른다. -\u0026gt; c. 프레임\n_______ 링크에서 링크는 장치들 사이에서 공유되지 않는다. -\u0026gt; b. 점-대-점\n_______ 링크에서 링크는 장치 사이에서 공유된다. -\u0026gt; a. 브로드캐스트\n브로드캐스트 링크의 데이터링크층은 _______ 의 부계층을 갖는다. -\u0026gt; b. 2개\n점-대-점 링크의 데이터링크층은 _______ 의 부계층을 갖는다. -\u0026gt; a. 1개\n미디어 접속 제어는 오직 _______ 링크에서 나타난다. -\u0026gt; d. 정답 없음\n모든 답은 \u0026lsquo;데이터 통신과 네트워킹 5판(Data Communications and Networking Fifth Edition, Behrouz A. Forouzan 저)\u0026rsquo; 책을 공부하여 작성 하였습니다.\n혹시 틀린 답이 있다면 댓글로 알려주세요.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 네트워크 \u0026amp; 통신\u0026rsquo; 카테고리의 다른 글 데이터 통신과 네트워킹 Chapter 11 데이터링크 제어(DLC) 연습 문제 정답 (0) 2020.06.21 데이터 통신과 네트워킹 Chapter 10 오류 검출과 오류 정정 연습 문제 정답 (0) 2020.06.21 데이터 통신과 네트워킹 Chapter 8 교환 연습 문제 정답 (1) 2020.06.21 데이터 통신과 네트워킹 Chapter 7 전송 매체 연습 문제 정답 (0) 2020.06.21 데이터 통신과 네트워킹 Chapter 6 대역폭 활용: 다중화와 스펙트럼 확장 연습 문제 정답 (0) 2020.04.29 ","permalink":"https://blog.sobamemil.com/posts/153-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%86%B5%EC%8B%A0%EA%B3%BC-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9-chapter-9-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A7%81%ED%81%AC%EC%B8%B5-%EC%86%8C%EA%B0%9C-%EC%97%B0%EC%8A%B5-%EB%AC%B8%EC%A0%9C-%EC%A0%95%EB%8B%B5/","summary":"\u003cp\u003e\u003cstrong\u003e\u003cstrong\u003eChapter 9 데이터링크층 소개 전송 \u003cstrong\u003e연습 문제 풀이(답)\u003c/strong\u003e\u003c/strong\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e데이터링크층에서 통신은 _______ 이다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. 노드-대-노드\u003c/p\u003e\n\u003col start=\"2\"\u003e\n\u003cli\u003e_______ 는 지역주소이다. 그 범위는 지역 네트워크를 넘어서지 않는다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; a. 링크계층 주소\u003c/p\u003e\n\u003col start=\"3\"\u003e\n\u003cli\u003e만약 송신자가 호스트이고, 같은 네트워크에 있는 다른 호스트로 패킷을 전송하고자 하면, 물리 주소와 매핑되는 논리적 주소는 _______ 이다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; a. 데이터그램 헤더 안에 있는 목적지 IP 주소\u003c/p\u003e\n\u003col start=\"4\"\u003e\n\u003cli\u003e만약 송신자가 호스트이고 다른 네트워크에 있는 다른 호스트로 패킷을 전송하고자 할 때, 물리 주소와 매핑되는 논리적 주소는 _______ 이다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. 라우팅 테이블에서 찾을 수 있는 라우터의 IP 주소\u003c/p\u003e","title":"데이터 통신과 네트워킹 Chapter 9 데이터링크층 소개 연습 문제 정답"},{"content":"Chapter 8 교환 연습 문제 풀이(답)\n회선 교환은 _______ 개의 범주로 나눌 수 있다. -\u0026gt; d. 정답 없음\n패킷 교환은 _______ 개의 범주로 나눌 수 있다. -\u0026gt; a. 2\n회선 교환은 _______ 계층에서 일어난다. -\u0026gt; b. 물리\n패킷 교환은 보통 _______ 계층에서 일어난다. -\u0026gt; b. 데이터 링크와 네트워크\n메시지 교환은 보통 _______ 계층에서 이용된다. -\u0026gt; d. 응용\n회선 교환 망에서는 _______ 단계가 필요하다. -\u0026gt; c. 3\n데이터그램 망에서는 _______ 단계가 필요하다. -\u0026gt; a. 1\n가상-회선 망에서는 _______ 단계가 필요하다. -\u0026gt; c. 3\n_______ 망에서는 각 패킷은 다른 패킷들과 독립적으로 취급된다. -\u0026gt; c. 데이터그램\n데이터그램 망에서 라우팅 테이블은 패킷에 있는 _______ 을 기반으로 한다. -\u0026gt; b. 목적지 주소\n가상 회선 망에서 라우팅 테이블은 패킷에 있는 _______ 을 기반으로 한다. -\u0026gt; c. VCI\n데이터그램 망에서 목적지 주소는 _______ . -\u0026gt; a. 발신지에서 목적지까지 같은 주소로 남아 있다.\n데이터그램 망에서 _______ 단계가 필요하다. -\u0026gt; d. 정답 없음\n가상 회선 망에서 _______ 단계가 필요하다. -\u0026gt; c. 설정과 해제\n_______ 망에서 메시지에 속하는 모든 패킷은 같은 경로를 따른다. -\u0026gt; b. 가상-회선\n_______ 망에서 메시지에 속하는 각 패킷은 서로 다른 경로를 따를 수 있다. -\u0026gt; a. 데이터그램\n모든 답은 \u0026lsquo;데이터 통신과 네트워킹 5판(Data Communications and Networking Fifth Edition, Behrouz A. Forouzan 저)\u0026rsquo; 책을 공부하여 작성 하였습니다.\n혹시 틀린 답이 있다면 댓글로 알려주세요.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 변경금지 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 네트워크 \u0026amp; 통신\u0026rsquo; 카테고리의 다른 글 데이터 통신과 네트워킹 Chapter 10 오류 검출과 오류 정정 연습 문제 정답 (0) 2020.06.21 데이터 통신과 네트워킹 Chapter 9 데이터링크층 소개 연습 문제 정답 (0) 2020.06.21 데이터 통신과 네트워킹 Chapter 7 전송 매체 연습 문제 정답 (0) 2020.06.21 데이터 통신과 네트워킹 Chapter 6 대역폭 활용: 다중화와 스펙트럼 확장 연습 문제 정답 (0) 2020.04.29 데이터 통신과 네트워킹 Chapter 5 아날로그 전송 연습 문제 정답 (0) 2020.04.23 ","permalink":"https://blog.sobamemil.com/posts/152-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%86%B5%EC%8B%A0%EA%B3%BC-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9-chapter-8-%EA%B5%90%ED%99%98-%EC%97%B0%EC%8A%B5-%EB%AC%B8%EC%A0%9C-%EC%A0%95%EB%8B%B5/","summary":"\u003cp\u003e\u003cstrong\u003eChapter 8 교환 연습 문제 풀이(답)\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e회선 교환은 _______ 개의 범주로 나눌 수 있다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; d. 정답 없음\u003c/p\u003e\n\u003col start=\"2\"\u003e\n\u003cli\u003e패킷 교환은 _______ 개의 범주로 나눌 수 있다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; a. 2\u003c/p\u003e\n\u003col start=\"3\"\u003e\n\u003cli\u003e회선 교환은 _______ 계층에서 일어난다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. 물리\u003c/p\u003e\n\u003col start=\"4\"\u003e\n\u003cli\u003e패킷 교환은 보통 _______ 계층에서 일어난다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. 데이터 링크와 네트워크\u003c/p\u003e\n\u003col start=\"5\"\u003e\n\u003cli\u003e메시지 교환은 보통 _______ 계층에서 이용된다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; d. 응용\u003c/p\u003e\n\u003col start=\"6\"\u003e\n\u003cli\u003e회선 교환 망에서는 _______ 단계가 필요하다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. 3\u003c/p\u003e\n\u003col start=\"7\"\u003e\n\u003cli\u003e데이터그램 망에서는 _______ 단계가 필요하다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; a. 1\u003c/p\u003e","title":"데이터 통신과 네트워킹 Chapter 8 교환 연습 문제 정답"},{"content":"Chapter 7 전송 매체 전송 연습 문제 풀이(답)\n전송 매체는 흔히 _______ 의 범주로 구분된다. -\u0026gt; b. 유도 및 비유도\n전송 매체는 _______ 계층 아래에 위치한다. -\u0026gt; a. 물리\n_______ 케이블은 내부 구리 중심부와 외피 차단부로 되어 있다. -\u0026gt; b. 동축\n광섬유에서 신호는 _______ 파 이다. -\u0026gt; a. 빛\n다음 중 유도 매체가 아닌 것은? -\u0026gt; d. 공기\n다음 중 비유도 매체가 아닌 것은? -\u0026gt; d. 정답 없음\n꼬임쌍선에서 꼬임은 _______ 을 줄이는 데 도움이 된다. -\u0026gt; c. 잡음\n동축 케이블에서 잡음은 _______ 에 의해서 감소된다. -\u0026gt; b. 외부 도체\nUTP와 STP는 _______ 케이블의 서로 다른 구현이다. -\u0026gt; a. 꼬임쌍선\nRJ-45는 _______ 케이블링에서 사용되는 연결기의 유형이다. -\u0026gt; a. 꼬임쌍선\nRG 등급은 _______ 케이블에서 사용된다. -\u0026gt; b. 동축\nSC와 TP는 _______ 케이블링에서 사용되는 연결기의 두 가지 유형이다. -\u0026gt; c. 광섬유\n적외선파는 파이크로파 _______ 주파수들을 갖는다. -\u0026gt; b. 위의\nBNC는 _______ 케이블링에서 사용되는 연결기 유형이다. -\u0026gt; b. 동축\n모든 답은 \u0026lsquo;데이터 통신과 네트워킹 5판(Data Communications and Networking Fifth Edition, Behrouz A. Forouzan 저)\u0026rsquo; 책을 공부하여 작성 하였습니다.\n혹시 틀린 답이 있다면 댓글로 알려주세요.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 변경금지 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 네트워크 \u0026amp; 통신\u0026rsquo; 카테고리의 다른 글 데이터 통신과 네트워킹 Chapter 9 데이터링크층 소개 연습 문제 정답 (0) 2020.06.21 데이터 통신과 네트워킹 Chapter 8 교환 연습 문제 정답 (1) 2020.06.21 데이터 통신과 네트워킹 Chapter 6 대역폭 활용: 다중화와 스펙트럼 확장 연습 문제 정답 (0) 2020.04.29 데이터 통신과 네트워킹 Chapter 5 아날로그 전송 연습 문제 정답 (0) 2020.04.23 데이터 통신과 네트워킹 Chapter 4 디지털 전송 연습 문제 정답 (1) 2020.04.23 ","permalink":"https://blog.sobamemil.com/posts/151-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%86%B5%EC%8B%A0%EA%B3%BC-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9-chapter-7-%EC%A0%84%EC%86%A1-%EB%A7%A4%EC%B2%B4-%EC%97%B0%EC%8A%B5-%EB%AC%B8%EC%A0%9C-%EC%A0%95%EB%8B%B5/","summary":"\u003cp\u003e\u003cstrong\u003e\u003cstrong\u003eChapter 7 전송 매체 전송 \u003cstrong\u003e연습 문제 풀이(답)\u003c/strong\u003e\u003c/strong\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e전송 매체는 흔히 _______ 의 범주로 구분된다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. 유도 및 비유도\u003c/p\u003e\n\u003col start=\"2\"\u003e\n\u003cli\u003e전송 매체는 _______ 계층 아래에 위치한다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; a. 물리\u003c/p\u003e\n\u003col start=\"3\"\u003e\n\u003cli\u003e_______ 케이블은 내부 구리 중심부와 외피 차단부로 되어 있다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. 동축\u003c/p\u003e\n\u003col start=\"4\"\u003e\n\u003cli\u003e광섬유에서 신호는 _______ 파 이다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; a. 빛\u003c/p\u003e\n\u003col start=\"5\"\u003e\n\u003cli\u003e다음 중 유도 매체가 아닌 것은?\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; d. 공기\u003c/p\u003e\n\u003col start=\"6\"\u003e\n\u003cli\u003e다음 중 비유도 매체가 아닌 것은?\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; d. 정답 없음\u003c/p\u003e\n\u003col start=\"7\"\u003e\n\u003cli\u003e꼬임쌍선에서 꼬임은 _______ 을 줄이는 데 도움이 된다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. 잡음\u003c/p\u003e","title":"데이터 통신과 네트워킹 Chapter 7  전송 매체 연습 문제 정답"},{"content":"Chapter 6 아날로그대역폭 활용: 다중화와 스펙트럼 확장 전송 연습 문제 풀이(답)\n아날로그 신호를 전송하는 다중화 기술은? -\u0026gt; a. FDM\n디지털 신호를 전송하는 다중화 기술은? -\u0026gt; b. TDM\n다음 중 각 신호를 서로 다른 반송파로 전달하는 다중화 기술은? -\u0026gt; a. FDM\n광선 빔으로 구성된 신호를 사용하는 다중화 기술은? -\u0026gt; c. WDM\n_______ 은 단일 회선을 사용하여 여러 신호를 동시에 전송하는 것을 허용하는 기술들이다. -\u0026gt; b. 다중화\n_______ 은 광섬유의 높은 대역폭을 이용하기 위해 설계되었다. -\u0026gt; c. WDM\n_______ 은 광신호를 결합하는 아날로그 다중화 기술이다. -\u0026gt; c. WDM\n_______ 은 링크의 높은 대역폭을 공유하기 위해 여러 연결을 허용하는 디지털 처리 절차이다. -\u0026gt; b. TDM\n_______ 을 동기식 및 통계적 기법으로 나눌 수 있다. -\u0026gt; b. TDM\n_______ TDM에서는 각 입력 연결은 데이터를 전송하지 않는 경우에도 출력을 할당받고 있다. -\u0026gt; a. 동기식\n_______ TDM에서는 대역폭 효율을 높이기 위해 슬롯이 동적으로 할당된다. -\u0026gt; b. 통계적\n_______ 기술은 원시 신호에 의해 변조된 M개의 서로 다른 반송 주파수를 사용한다. 한 순간에는 신호는 어떤 반송파를 변조하고 다음 순간에는 다른 반송파를 변조한다. -\u0026gt; c. FHSS\n_______ 기술은 확장 코드를 이용하여 각 데이터 비트를 n개의 비트로 대체하여 신호의 대역폭을 확장한다. -\u0026gt; b. DSSS\n그룹, 슈퍼그룹, 주 그룹, 점보 그룹은 _______ 에서 사용하는 용어이다. -\u0026gt; a. FDM\n다중레벨 다중화는 _______ 에서 사용하는 전략이다. -\u0026gt; d. TDM\n다중 슬록 할당은 _______ 에서 사용하는 기술이다. -\u0026gt; d. TDM\n펄스 채워넣기는 _______ 에서 사용하는 전략이다. -\u0026gt; d. TDM\n프레임 동기화는 _______ 에서 사용하는 전략이다. -\u0026gt; d. TDM\nT-1 회선은 _______ 프레임을 사용한다. -\u0026gt; b. 8000\n_______ TDM에서는 주소지정 메커니즘이 필요하다. -\u0026gt; b. 통계적\n모든 답은 \u0026lsquo;데이터 통신과 네트워킹 5판(Data Communications and Networking Fifth Edition, Behrouz A. Forouzan 저)\u0026rsquo; 책을 공부하며 작성 하였습니다.\n혹시 틀린 답이 있다면 댓글로 알려주세요.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 네트워크 \u0026amp; 통신\u0026rsquo; 카테고리의 다른 글 데이터 통신과 네트워킹 Chapter 8 교환 연습 문제 정답 (1) 2020.06.21 데이터 통신과 네트워킹 Chapter 7 전송 매체 연습 문제 정답 (0) 2020.06.21 데이터 통신과 네트워킹 Chapter 5 아날로그 전송 연습 문제 정답 (0) 2020.04.23 데이터 통신과 네트워킹 Chapter 4 디지털 전송 연습 문제 정답 (1) 2020.04.23 데이터 통신과 네트워킹 Chapter 3 물리층 개요 연습 문제 정답 (0) 2020.04.20 ","permalink":"https://blog.sobamemil.com/posts/149-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%86%B5%EC%8B%A0%EA%B3%BC-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9-chapter-6-%EB%8C%80%EC%97%AD%ED%8F%AD-%ED%99%9C%EC%9A%A9-%EB%8B%A4%EC%A4%91%ED%99%94%EC%99%80-%EC%8A%A4%ED%8E%99%ED%8A%B8%EB%9F%BC-%ED%99%95%EC%9E%A5-%EC%97%B0%EC%8A%B5-%EB%AC%B8%EC%A0%9C-%EC%A0%95/","summary":"\u003cp\u003e\u003cstrong\u003e\u003cstrong\u003eChapter 6 아날로그대역폭 활용: 다중화와 스펙트럼 확장 전송 \u003cstrong\u003e연습 문제 풀이(답)\u003c/strong\u003e\u003c/strong\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e아날로그 신호를 전송하는 다중화 기술은?\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; a. FDM\u003c/p\u003e\n\u003col start=\"2\"\u003e\n\u003cli\u003e디지털 신호를 전송하는 다중화 기술은?\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. TDM\u003c/p\u003e\n\u003col start=\"3\"\u003e\n\u003cli\u003e다음 중 각 신호를 서로 다른 반송파로 전달하는 다중화 기술은?\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; a. FDM\u003c/p\u003e\n\u003col start=\"4\"\u003e\n\u003cli\u003e광선 빔으로 구성된 신호를 사용하는 다중화 기술은?\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. WDM\u003c/p\u003e\n\u003col start=\"5\"\u003e\n\u003cli\u003e_______ 은 단일 회선을 사용하여 여러 신호를 동시에 전송하는 것을 허용하는 기술들이다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. 다중화\u003c/p\u003e\n\u003col start=\"6\"\u003e\n\u003cli\u003e_______ 은 광섬유의 높은 대역폭을 이용하기 위해 설계되었다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. WDM\u003c/p\u003e","title":"데이터 통신과 네트워킹 Chapter 6 대역폭 활용: 다중화와 스펙트럼 확장 연습 문제 정답"},{"content":"Chapter 5 아날로그 전송 연습 문제 풀이(답)\nASK, FSK 및 QAM은 _______ 변환의 예이다. -\u0026gt; b. 디지털-대-아날로그\nAM과 FM은 _______ 변환의 예이다. -\u0026gt; c. 아날로그-대-아날로그\nQAM에서는 반송파의 _______ 이 바뀐다. -\u0026gt; c. 진폭과 위상\n_______ 에서는 신호 요소를 만들어 내기 위해 반송파의 진폭이 바뀐다. 주파수와 위상은 변함이 없다. -\u0026gt; a. ASK\n_______ 에서는 신호 요소를 만들어 내기 위해 반송파의 주파수가 바뀐다. 최대 진폭과 위상은 변함이 없다. -\u0026gt; c. FSK\n_______ 에서는 2개 이상의 서로 다른 신호 요소를 나타내기 위해 반송파의 위상이 바뀐다. 최대 진폭과 주파수는 변함이 없다. -\u0026gt; b. PSK\n구상 진폭 변조(QAM)는 _______ 의 조합이다. -\u0026gt; b. ASK와 PSK _______ 는 두 반송파, 즉 하나의 위상 내 신호와 다른 구상 신호를 사용한다. -\u0026gt; d. QPSK\nBASK에는 몇 개의 반송파가 사용되는가? -\u0026gt; b. 1\nBFSK에는 몇 개의 반송파가 사용되는가? -\u0026gt; a. 2\nBPSK에는 몇 개의 반송파가 사용되는가? -\u0026gt; b. 1\n다음 중 아날로그-대-아날로그 변환이 아닌 것은? -\u0026gt; d. QAM\n_______ 전송에서는 반송파 신호는 변조되어 진폭이 변조 신호의 진폭에 따라 바뀐다. -\u0026gt; a. AM\n디지털 신호의 아날로그 전송에서 보율은 비트율보다 _______ . -\u0026gt; b. 적거나 같다\nASK에서 대역폭은 _______ . -\u0026gt; b. 신호율보다 같거나 크다\n같은 신호율에 대하여, FSK의 대역폭은 보통 ASK의 대역폭 보다 _______ . -\u0026gt; a. 더 크다\nAM 신호의 대역폭은 원래의 아날로그 신호의 대역폭과 _______ . -\u0026gt; b. 두 배이다.\nAM 라디오에서 각 지국에 대해 할당된 대역폭은 _______ kHz이다. -\u0026gt; c. 10\nFM 라디오에서 각 지국에 대해 할당된 대역폭은 _______ kHz이다. -\u0026gt; b. 200\n모든 답은 \u0026lsquo;데이터 통신과 네트워킹 5판(Data Communications and Networking Fifth Edition, Behrouz A. Forouzan 저)\u0026rsquo; 책을 공부하며 작성 하였습니다.\n혹시 틀린 답이 있다면 댓글로 알려주세요.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 변경금지 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 네트워크 \u0026amp; 통신\u0026rsquo; 카테고리의 다른 글 데이터 통신과 네트워킹 Chapter 7 전송 매체 연습 문제 정답 (0) 2020.06.21 데이터 통신과 네트워킹 Chapter 6 대역폭 활용: 다중화와 스펙트럼 확장 연습 문제 정답 (0) 2020.04.29 데이터 통신과 네트워킹 Chapter 4 디지털 전송 연습 문제 정답 (1) 2020.04.23 데이터 통신과 네트워킹 Chapter 3 물리층 개요 연습 문제 정답 (0) 2020.04.20 데이터 통신과 네트워킹 Chapter 2 네트워크 모델 연습 문제 정답 (16) 2020.04.19 ","permalink":"https://blog.sobamemil.com/posts/148-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%86%B5%EC%8B%A0%EA%B3%BC-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9-chapter-5-%EC%95%84%EB%82%A0%EB%A1%9C%EA%B7%B8-%EC%A0%84%EC%86%A1-%EC%97%B0%EC%8A%B5-%EB%AC%B8%EC%A0%9C-%EC%A0%95%EB%8B%B5/","summary":"\u003cp\u003e\u003cstrong\u003e\u003cstrong\u003eChapter 5 아날로그 전송 \u003cstrong\u003e연습 문제 풀이(답)\u003c/strong\u003e\u003c/strong\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eASK, FSK 및 QAM은 _______ 변환의 예이다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. 디지털-대-아날로그\u003c/p\u003e\n\u003col start=\"2\"\u003e\n\u003cli\u003eAM과 FM은 _______ 변환의 예이다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. 아날로그-대-아날로그\u003c/p\u003e\n\u003col start=\"3\"\u003e\n\u003cli\u003eQAM에서는 반송파의 _______ 이 바뀐다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. 진폭과 위상\u003c/p\u003e\n\u003col start=\"4\"\u003e\n\u003cli\u003e_______ 에서는 신호 요소를 만들어 내기 위해 반송파의 진폭이 바뀐다. 주파수와 위상은 변함이 없다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; a. ASK\u003c/p\u003e\n\u003col start=\"5\"\u003e\n\u003cli\u003e_______ 에서는 신호 요소를 만들어 내기 위해 반송파의 주파수가 바뀐다. 최대 진폭과 위상은 변함이 없다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. FSK\u003c/p\u003e\n\u003col start=\"6\"\u003e\n\u003cli\u003e_______ 에서는 2개 이상의 서로 다른 신호 요소를 나타내기 위해 반송파의 위상이 바뀐다. 최대 진폭과 주파수는 변함이 없다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. PSK\u003c/p\u003e","title":"데이터 통신과 네트워킹 Chapter 5 아날로그 전송 연습 문제 정답"},{"content":"Chapter 4 디지털 전송 연습 문제 풀이(답)\n극형과 양극형 부호화는 _______ 부호화의 유형이다. -\u0026gt; a. 회선(line)\n_______ 변환은 회선 부호화, 블록 부호화 및 뒤섞기 기술을 모두 사용한다. -\u0026gt; d. 디지털 대 디지털\n_______ 방식에서는 전압은 음과 양이 된다. 예를 들면 0을 위한 전압은 1을 위한 전압이 음이 되는 경우에는 양이 될 수 없다. -\u0026gt; a. 극형\n_______ 에서는 전압의 준위가 비트의 값을 결정한다. -\u0026gt; b. NRZ-L\n_______ 에서는 전압 준위가 변화하거나 변화하지 않는 것으로 비트의 값을 결정한다. -\u0026gt; a. NRZ-I\nRZ의 아이디어와 NRZ-L의 아이디어를 합한 것이 _______ 이다. -\u0026gt; a. 맨체스터\nRZ의 아이디어와 NRZ-I의 아이디어를 합한 것이 _______ 이다. -\u0026gt; b. 차분 맨체스터\n맨체스터 부호화와 차분 맨체스터 부호화에서 비트의 중간 지점에서의 전이는 _______ 에 사용된다. -\u0026gt; c. 동기화\n_______ 부호화에서는 양, 영 및 음의 세 준위를 사용한다. -\u0026gt; b. 양극형\n_______ 방식은 2비트 데이터 크기를 4준위 신호 중 하나에 속하는 2비트 패턴의 1개 신호 요소로 부호화한다. -\u0026gt; b. 2B1Q\n_______ 부호화는 각 비트의 중간에서 전이를 갖는다. -\u0026gt; d. 모두 정답 (a. RZ, b. 맨체스터, c. 차분 맨체스터)\n_______ 부호화는 각 0 비트가 시작할 때 전이를 갖는다. -\u0026gt; c. 차분 맨체스터\n다음 중 동기화를 제공하지 않는 부호화 방법은? -\u0026gt; a. NRZ-L\n다음 중 1을 나타내기 위해 양과 음의 값을 번갈아 사용하는 부호화 방법은? -\u0026gt; d. AMI\n블록 부호화는 수신자 측에서 _______ 와 _______ 하는 것을 돕는다. -\u0026gt; a. 동기화와 오류 탐지\n_______ 은 디지털 데이터를 디지털 신호로 전환하는 과정이다. -\u0026gt; b. 회선 부호화\n_______ 는 동기화와 오류 탐지를 위해 중복 비트를 제공한다. -\u0026gt; a. 블록 부호화\n_______ 은 보통 mB/nB 부호화로 불리는데 각 m개 비트 그룹을 n개 비트 그룹으로 대체한다. -\u0026gt; a. 블록 부호화\n_______ 은 비트 수를 늘리지 않고 동기화를 제공한다. -\u0026gt; a. 뒤섞기\n두 가지 널리 사용되는 뒤섞기에는 _______ 이 있다. -\u0026gt; c. b8ZS와 HDB3\nPCM은 _______ 변환의 예이다. -\u0026gt; d. 아날로그 대 디지털\n아날로그 신호를 디지털 데이터로 전환하는 가장 흔한 기법은 _______ (이)라고 불린다. -\u0026gt; b. PCM\nPCM의 제1단계는 _______ 이다. -\u0026gt; c. 표본 채집 (= 샘플링, sampling)\n_______ 은 각 표본의 신호 진폭값을 찾으며, _______ 은 직전 표본 값과의 차이를 찾는다. -\u0026gt; b. PCM; DM\n모든 답은 \u0026lsquo;데이터 통신과 네트워킹 5판(Data Communications and Networking Fifth Edition, Behrouz A. Forouzan 저)\u0026rsquo; 책을 공부하며 작성 하였습니다.\n혹시 틀린 답이 있다면 댓글로 알려주세요.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 네트워크 \u0026amp; 통신\u0026rsquo; 카테고리의 다른 글 데이터 통신과 네트워킹 Chapter 6 대역폭 활용: 다중화와 스펙트럼 확장 연습 문제 정답 (0) 2020.04.29 데이터 통신과 네트워킹 Chapter 5 아날로그 전송 연습 문제 정답 (0) 2020.04.23 데이터 통신과 네트워킹 Chapter 3 물리층 개요 연습 문제 정답 (0) 2020.04.20 데이터 통신과 네트워킹 Chapter 2 네트워크 모델 연습 문제 정답 (16) 2020.04.19 데이터 통신과 네트워킹 Chapter 1 개요 연습 문제 정답 (2) 2020.04.12 ","permalink":"https://blog.sobamemil.com/posts/147-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%86%B5%EC%8B%A0%EA%B3%BC-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9-chapter-4-%EB%94%94%EC%A7%80%ED%84%B8-%EC%A0%84%EC%86%A1-%EC%97%B0%EC%8A%B5-%EB%AC%B8%EC%A0%9C-%EC%A0%95%EB%8B%B5/","summary":"\u003cp\u003e\u003cstrong\u003e\u003cstrong\u003eChapter 4 디지털 전송 \u003cstrong\u003e연습 문제 풀이(답)\u003c/strong\u003e\u003c/strong\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e극형과 양극형 부호화는 _______ 부호화의 유형이다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; a. 회선(line)\u003c/p\u003e\n\u003col start=\"2\"\u003e\n\u003cli\u003e_______ 변환은 회선 부호화, 블록 부호화 및 뒤섞기 기술을 모두 사용한다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; d. 디지털 대 디지털\u003c/p\u003e\n\u003col start=\"3\"\u003e\n\u003cli\u003e_______ 방식에서는 전압은 음과 양이 된다. 예를 들면 0을 위한 전압은 1을 위한 전압이 음이 되는 경우에는 양이 될 수 없다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; a. 극형\u003c/p\u003e\n\u003col start=\"4\"\u003e\n\u003cli\u003e_______ 에서는 전압의 준위가 비트의 값을 결정한다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. NRZ-L\u003c/p\u003e\n\u003col start=\"5\"\u003e\n\u003cli\u003e_______ 에서는 전압 준위가 변화하거나 변화하지 않는 것으로 비트의 값을 결정한다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; a. NRZ-I\u003c/p\u003e","title":"데이터 통신과 네트워킹 Chapter 4 디지털 전송 연습 문제 정답"},{"content":"Chapter 3 물리층 연습 문제 풀이(답)\n주파수 영역 그림에서 수평선은 _______ 이다. -\u0026gt; b. 주파수\n시간 영역 그림에서 수평선은 _______ 이다. -\u0026gt; d. 시간\n데이터를 전송하기 전에 데이터를 _______ 로 변환해야 한다. -\u0026gt; b. 전자기 신호\n어떤 주기 신호는 0.001초 만에 한 사이클을 완성한다. 주파수는 얼마인가? -\u0026gt; c. 1KHz\n_______ 데이터는 연속적이고, 연속적인 값을 갖는다. -\u0026gt; a. 아날로그\n_______ 데이터는 이산 상태를 가지며 이산 값을 갖는다. -\u0026gt; b. 디지털\n_______ 신호는 시간 간격에서 무한개수의 값을 가질 수 있다. -\u0026gt; a. 아날로그\n_______ 신호는 시간 간격에서 한정된 수의 값만 가질 수 있다. -\u0026gt; b. 디지털\n주파수와 주기는 _______ . -\u0026gt; a. 서로 역이다\n_______ 은 시간에 대한 변화율이다. -\u0026gt; c. 주파수\n_______ 는 시간 0에 대한 상대적인 파형의 위치를 나타낸다. -\u0026gt; d. 위상\n단순 정현파는 _______ 영역에서는 단 하나의 뾰족점으로 나타낼 수 있다. -\u0026gt; c. 주파수\n주파수가 높아짐에 따라 주기는 _______ . -\u0026gt; a. 감소한다.\n_______ 는 신호가 전송 매체의 저항 때문에 신호의 강도를 잃어버리는 전송 장애의 한 종류이다. -\u0026gt; a. 감쇠\n_______ 은 신호를 구성하는 각 주파수의 전파 속도 차이로 인해 신호의 강도를 잃어버리는 전송 장애의 한 종류이다. -\u0026gt; b. 일그러짐 (= 왜곡)\n_______ 는 교차 잡음과 같이 외부 신호로 인해 생기는 전송 장애의 한 종류이다. -\u0026gt; c. 잡음\n전파 속도를 전파 시간으로 곱하면 _______ 을 얻는다. -\u0026gt; d. 신호 또는 비트가 이동한 거리\n디지털 신호의 기저대역 전송은 _______ 채널을 사용할 때만 가능하다. -\u0026gt; a. 저대역-통과\n이용 가능한 채널이 _______ 채널이면 채널에 직접 디지털 신호를 전송할 수 없다. -\u0026gt; b. 띠대역 통과\n_______ 채널에서는 나이퀴스트 비트 전송률 공식이 최대 비트 전송률을 결정한다. -\u0026gt; b. 무잡음\n_______ 채널에서 최대 비트 전송률을 알기 위해서는 섀넌 용량을 사용해야 한다. -\u0026gt; a. 잡음 있느\n_______ 는 신호를 망가뜨릴 수 있다. -\u0026gt; d. 앞의 것 모두 (a. 감쇠, b. 일그러짐, c. 잡음)\n_______ 곱은 링크를 채울 수 있는 비트 수를 결정한다. -\u0026gt; c. 대역폭-지연\n모든 답은 \u0026lsquo;데이터 통신과 네트워킹 5판(Data Communications and Networking Fifth Edition, Behrouz A. Forouzan 저)\u0026rsquo; 책을 공부하며 작성 하였습니다.\n혹시 틀린 답이 있다면 댓글로 알려주세요.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 네트워크 \u0026amp; 통신\u0026rsquo; 카테고리의 다른 글 데이터 통신과 네트워킹 Chapter 6 대역폭 활용: 다중화와 스펙트럼 확장 연습 문제 정답 (0) 2020.04.29 데이터 통신과 네트워킹 Chapter 5 아날로그 전송 연습 문제 정답 (0) 2020.04.23 데이터 통신과 네트워킹 Chapter 4 디지털 전송 연습 문제 정답 (1) 2020.04.23 데이터 통신과 네트워킹 Chapter 2 네트워크 모델 연습 문제 정답 (16) 2020.04.19 데이터 통신과 네트워킹 Chapter 1 개요 연습 문제 정답 (2) 2020.04.12 ","permalink":"https://blog.sobamemil.com/posts/146-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%86%B5%EC%8B%A0%EA%B3%BC-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9-chapter-3-%EB%AC%BC%EB%A6%AC%EC%B8%B5-%EA%B0%9C%EC%9A%94-%EC%97%B0%EC%8A%B5-%EB%AC%B8%EC%A0%9C-%EC%A0%95%EB%8B%B5/","summary":"\u003cp\u003e\u003cstrong\u003e\u003cstrong\u003eChapter 3 물리층 \u003cstrong\u003e연습 문제 풀이(답)\u003c/strong\u003e\u003c/strong\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e주파수 영역 그림에서 수평선은 _______ 이다. \u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. 주파수\u003c/p\u003e\n\u003col start=\"2\"\u003e\n\u003cli\u003e시간 영역 그림에서 수평선은 _______ 이다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; d. 시간\u003c/p\u003e\n\u003col start=\"3\"\u003e\n\u003cli\u003e데이터를 전송하기 전에 데이터를 _______ 로 변환해야 한다. \u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. 전자기 신호\u003c/p\u003e\n\u003col start=\"4\"\u003e\n\u003cli\u003e어떤 주기 신호는 0.001초 만에 한 사이클을 완성한다. 주파수는 얼마인가? \u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. 1KHz\u003c/p\u003e\n\u003col start=\"5\"\u003e\n\u003cli\u003e_______ 데이터는 연속적이고, 연속적인 값을 갖는다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; a. 아날로그\u003c/p\u003e\n\u003col start=\"6\"\u003e\n\u003cli\u003e_______ 데이터는 이산 상태를 가지며 이산 값을 갖는다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. 디지털\u003c/p\u003e\n\u003col start=\"7\"\u003e\n\u003cli\u003e_______ 신호는 시간 간격에서 무한개수의 값을 가질 수 있다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; a. 아날로그\u003c/p\u003e","title":"데이터 통신과 네트워킹 Chapter 3 물리층 개요 연습 문제 정답"},{"content":"Chapter 2 네트워크 모델****연습 문제 풀이(답)\nTCP/IP 프로토콜 그룹은 _______ 개의 계층으로 구성되어 있다. -\u0026gt; c. 5\n라우터는 TCP/IP 프로토콜 그룹의 _______ 계층을 포함하고 있다. -\u0026gt; b. 3\n링크 계층 교환기는 TCP/IP 프로토콜 그룹의 _______ 계층에 속해 있다. -\u0026gt; a. 2\nTCP/IP 프로토콜 그룹에서 다음 중 응용층 프로토콜은? -\u0026gt; c. 파일 전송 프로토콜 (FTP)\nTCP/IP 프로토콜 그룹에서 다음 중 전송층 프로토콜은? -\u0026gt; d. 전송 제어 프로토콜 (TCP)\nTCP/IP 프로토콜 그룹에서 다음 중 네트워크층 프로토콜은? -\u0026gt; c. 인터넷 프로토콜 (IP)\nTCP/IP 프로토콜 그룹에서 전송층 패킷은 _______ (이)라 불린다. -\u0026gt; c. 세그먼트 또는 사용자 데이터그램\nTCP/IP 프로토콜 그룹에서 _______ 계층은 하나의 홉 (노드)에서 다음 홉으로의 프레임 전달에 대한 책임이 있다. -\u0026gt; b. 데이터 링크\nTCP/IP 프로토콜 그룹에서 물리층은 물리적 매체를 통해 _______ 의 전달에 책임이 있다. -\u0026gt; d. 비트\nTCP/IP 프로토콜 그룹에서 포트 번호는 _______ 에서의 식별자이다. -\u0026gt; b. 전송층\nTCP/IP 프로토콜 그룹에서 논리 주소는 _______ 에서의 식별자이다. -\u0026gt; a. 네트워크층\n_______ 계층은 하나의 프로세스에서 다른 프로세스로의 메시지 전송에 대한 책임이 있다. -\u0026gt; 전송\n인터넷 프로토콜(IP)은 _______인 프로토콜이다. -\u0026gt; d. 비신뢰적 (+ 비연결형)\nTCP/IP 프로토콜 그룹에서 응용층은 일반적으로 OSI 모델에서 _______ 계층의 조합으로 간주한다. -\u0026gt; a. 응용, 표현, 세션\nTCP/IP에서 응용층에 있는 메시지는 _______ 계층의 패킷에 캡슐화된다. -\u0026gt; b. 전송\nTCP/IP에서 전송층에 있는 메시지는 _______ 계층의 패킷에 캡슐화된다. -\u0026gt; a. 네트워크\nTCP/IP에서 네트워크층에 있는 메시지는 _______ 계층의 패킷으로부터 역캡슐화된다. -\u0026gt; c. 데이터 링크\nTCP/IP에서 전송층에 있는 메시지는 _______ 계층의 패킷으로부터 역캡슐화된다. -\u0026gt; a. 네트워크\nTCP/IP에서 네트워크층 개체의 논리적 연결은 또 다른 _______ 계층의 개체와 이루어진다. -\u0026gt; a. 네트워크\nTCP/IP에서 데이터링크층 개체의 논리적 연결은 또 다른 _______ 계층의 개체와 이루어진다. -\u0026gt; c. 데이터 링크 TCP/IP에서 3 계층의 패킷은 _______ 계층의 데이터와 _______ 계층의 헤더를 옮긴다. -\u0026gt; c. 4; 3\n모든 답은 \u0026lsquo;데이터 통신과 네트워킹 5판(Data Communications and Networking Fifth Edition, Behrouz A. Forouzan 저)\u0026rsquo; 책을 공부하며 작성 하였습니다.\n혹시 틀린 답이 있다면 댓글로 알려주세요.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 변경금지 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 네트워크 \u0026amp; 통신\u0026rsquo; 카테고리의 다른 글 데이터 통신과 네트워킹 Chapter 6 대역폭 활용: 다중화와 스펙트럼 확장 연습 문제 정답 (0) 2020.04.29 데이터 통신과 네트워킹 Chapter 5 아날로그 전송 연습 문제 정답 (0) 2020.04.23 데이터 통신과 네트워킹 Chapter 4 디지털 전송 연습 문제 정답 (1) 2020.04.23 데이터 통신과 네트워킹 Chapter 3 물리층 개요 연습 문제 정답 (0) 2020.04.20 데이터 통신과 네트워킹 Chapter 1 개요 연습 문제 정답 (2) 2020.04.12 ","permalink":"https://blog.sobamemil.com/posts/145-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%86%B5%EC%8B%A0%EA%B3%BC-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9-chapter-2-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EB%AA%A8%EB%8D%B8-%EC%97%B0%EC%8A%B5-%EB%AC%B8%EC%A0%9C-%EC%A0%95%EB%8B%B5/","summary":"\u003cp\u003e\u003cstrong\u003eChapter 2 네트워크 모델****연습 문제 풀이(답)\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eTCP/IP 프로토콜 그룹은 _______ 개의 계층으로 구성되어 있다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. 5\u003c/p\u003e\n\u003col start=\"2\"\u003e\n\u003cli\u003e라우터는 TCP/IP 프로토콜 그룹의 _______ 계층을 포함하고 있다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; b. 3\u003c/p\u003e\n\u003col start=\"3\"\u003e\n\u003cli\u003e링크 계층 교환기는 TCP/IP 프로토콜 그룹의 _______ 계층에 속해 있다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; a. 2\u003c/p\u003e\n\u003col start=\"4\"\u003e\n\u003cli\u003eTCP/IP 프로토콜 그룹에서 다음 중 응용층 프로토콜은?\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. 파일 전송 프로토콜 (FTP)\u003c/p\u003e\n\u003col start=\"5\"\u003e\n\u003cli\u003eTCP/IP 프로토콜 그룹에서 다음 중 전송층 프로토콜은?\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; d. 전송 제어 프로토콜 (TCP)\u003c/p\u003e\n\u003col start=\"6\"\u003e\n\u003cli\u003eTCP/IP 프로토콜 그룹에서 다음 중 네트워크층 프로토콜은?\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. 인터넷 프로토콜 (IP)\u003c/p\u003e","title":"데이터 통신과 네트워킹 Chapter 2 네트워크 모델 연습 문제 정답"},{"content":"Chapter 1 개요 연습 문제 풀이(답)\n근거리 통신망(LAN)은 _______ 로 정의된다. -\u0026gt; a. 네트워크의 기하학적 크기\n광역 통신망이 포괄할 수 있는 가장 큰 지역은 _______ 이다. -\u0026gt; d. 세계\n제안 표준은 적어도 2개의 성공적인 시도 후 _______ 표준 상태로 올라간다. -\u0026gt; c. 드래프트\n다음 중 데이터 통신 시스템의 구성요소가 아닌 것은? -\u0026gt; d. a, b, c 모두 정답 (a. 메시지, b. 송신자, c. 매체)\n다음 중 데이터 통신 시스템의 특성이 아닌 것은? -\u0026gt; d. a, b, c 모두 정답 (a. 전달성, b. 정확성, c. 지터)\n_______ 전송방식에서 데이터는 항상 한 방향으로만 전달된다. -\u0026gt; a. 단방향\n_______ 전송방식에서 데이터는 항상 양방향으로만 전달된다. -\u0026gt; c. 전이중\n다음 중 네트워크 평가기준이 아닌 것은? -\u0026gt; d. a, b, c 모두 정답 (a. 성능, b. 신뢰도, c. 보안)\n_______ 통신에서 매체는 장치들 사이에 회선을 공유한다. -\u0026gt; b. 다중점\n_______ 통신에서 매체는 전용선이다. -\u0026gt; a. 점-대-점\n6대의 컴퓨터로 이루어진 서로 완전히 연결된 완전연결형 접속형태는 몇 개의 링크가 필요한가? -\u0026gt; c. 15 6대의 컴퓨터로 이루어진 성형 접속형태는 몇 개의 링크가 필요한가? -\u0026gt; a. 6\nRFC는 모든 인터넷 시스템으로 구현되어야 한다면 _______ (으)로 분류된다. -\u0026gt; a. 요구(required)\n원래 ARPANET에서 _______ 은(는) 직접 서로 연결되었다. -\u0026gt; a. 인터페이스 메시지 처리기(IMP)\n_______ 은(는) 보안 능력이 없는 회선으로 대학들을 연결하기 위해 형성되었다. -\u0026gt; b. CSNET\n현재 _______ 은(는) 인터넷 도메인 이름과 주소의 관리에 대한 책임이 있다. -\u0026gt; b. ICANN\n모든 답은 \u0026lsquo;데이터 통신과 네트워킹 5판(Data Communications and Networking Fifth Edition, Behrouz A. Forouzan 저)\u0026rsquo; 책을 공부하며 작성 하였습니다.\n혹시 틀린 답이 있다면 댓글로 알려주세요.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 네트워크 \u0026amp; 통신\u0026rsquo; 카테고리의 다른 글 데이터 통신과 네트워킹 Chapter 6 대역폭 활용: 다중화와 스펙트럼 확장 연습 문제 정답 (0) 2020.04.29 데이터 통신과 네트워킹 Chapter 5 아날로그 전송 연습 문제 정답 (0) 2020.04.23 데이터 통신과 네트워킹 Chapter 4 디지털 전송 연습 문제 정답 (1) 2020.04.23 데이터 통신과 네트워킹 Chapter 3 물리층 개요 연습 문제 정답 (0) 2020.04.20 데이터 통신과 네트워킹 Chapter 2 네트워크 모델 연습 문제 정답 (16) 2020.04.19 ","permalink":"https://blog.sobamemil.com/posts/144-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%86%B5%EC%8B%A0%EA%B3%BC-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9-chapter-1-%EA%B0%9C%EC%9A%94-%EC%97%B0%EC%8A%B5-%EB%AC%B8%EC%A0%9C-%EC%A0%95%EB%8B%B5/","summary":"\u003cp\u003e\u003cstrong\u003eChapter 1 개요 \u003cstrong\u003e연습 문제 풀이(답)\u003c/strong\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e근거리 통신망(LAN)은 _______ 로 정의된다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; a. 네트워크의 기하학적 크기\u003c/p\u003e\n\u003col start=\"2\"\u003e\n\u003cli\u003e광역 통신망이 포괄할 수 있는 가장 큰 지역은 _______ 이다. \u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; d. 세계\u003c/p\u003e\n\u003col start=\"3\"\u003e\n\u003cli\u003e제안 표준은 적어도 2개의 성공적인 시도 후 _______ 표준 상태로 올라간다. \u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; c. 드래프트\u003c/p\u003e\n\u003col start=\"4\"\u003e\n\u003cli\u003e다음 중 데이터 통신 시스템의 구성요소가 아닌 것은? \u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; d. a, b, c 모두 정답 (a. 메시지, b. 송신자, c. 매체)\u003c/p\u003e\n\u003col start=\"5\"\u003e\n\u003cli\u003e다음 중 데이터 통신 시스템의 특성이 아닌 것은? \u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e-\u0026gt; d. a, b, c 모두 정답 (a. 전달성, b. 정확성, c. 지터)\u003c/p\u003e","title":"데이터 통신과 네트워킹 Chapter 1 개요 연습 문제 정답"},{"content":"문제 :\n커피 자판기 시뮬레이터를 C++로 작성해보자. 실행 사례는 다음과 같다.\n자판기는 보통 커피, 설탕 커피, 블랙 커피의 3종류만 판매한다.\n단순화를 위해 실행 살에는 총 3인분의 재료만 가지도록 하였다. 커피 메뉴에 따라 필요한 재료들이 하나씩 없어진다.\n객체 지향 구조에 따라 필요한 클래스를 작성하여 프로그램을 완성하라.\n실행 결과 :\n목적 및 힌트 :\n객체 지향 구조로 종합 응용 연습\n코드 :\n1 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 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 #include #include using namespace std; class Material { protected: string name; int amount; public: string getName() { return name; } int getAmount() { return amount; } void setAmount(int amount) { this-\u0026gt;amount = amount; } bool subAmount(int amount) { if(this-\u0026gt;amount \u0026lt;= 0) return false; else this-\u0026gt;amount -= amount; return true; } }; class Coffee : public Material { public: Coffee() { name = \u0026ldquo;Coffee\u0026rdquo;; amount = 3; } }; class Sugar : public Material { public: Sugar() { name = \u0026ldquo;Sugar\u0026rdquo;; amount = 3; } }; class Cream : public Material { public: Cream() { name = \u0026ldquo;Cream\u0026rdquo;; amount = 3; } }; class Water : public Material { public: Water() { name = \u0026ldquo;Water\u0026rdquo;; amount = 3; } }; class Cup : public Material { public: Cup() { name = \u0026ldquo;Cup\u0026rdquo;; amount = 3; } }; class CoffeeMachine { Material *mat[]; // Material의 객체 배열 포인터 생성 public: CoffeeMachine() { // 생성자에서 안내 멘트와 재료 상태 출력 cout \u0026laquo; \u0026ldquo;\u0026mdash;\u0026ndash;명품 커피 자판기 켭니다.\u0026mdash;\u0026ndash;\u0026rdquo; \u0026laquo; endl; mat[0] = new Coffee(); mat[1] = new Sugar(); mat[2] = new Cream(); mat[3] = new Water(); mat[4] = new Cup(); showCoffeeMachineState(); cout \u0026laquo; endl; } void showCoffeeMachineState() { // 재료 상태 출력 for(int i=0; i\u0026lt;5; i++) { cout \u0026laquo; setw(10) \u0026laquo; mat[i]-\u0026gt;getName(); for(int j=0; j\u0026lt;mat[i]-\u0026gt;getAmount(); j++) cout \u0026laquo; \u0026ldquo;*\u0026rdquo;; cout \u0026laquo; endl; } } void start() { // 메뉴 출력 시작 int num; while(true) { showMenu(); num = selectMenu(); if(num == 3) { // 채우기 for(int i=0; i\u0026lt;5; i++) { mat[i]-\u0026gt;setAmount(3); } cout \u0026laquo; \u0026ldquo;모든 통을 채웁니다~~\u0026rdquo; \u0026laquo; endl; showCoffeeMachineState(); cout \u0026laquo; endl; continue; } else if(num == 4) { // 종료 cout \u0026laquo; \u0026ldquo;프로그램을 종료합니다\u0026hellip;\u0026rdquo; \u0026laquo; endl; exit(0); } if(mat[0]-\u0026gt;subAmount(1) == false) { // coffee-1 cout \u0026laquo; \u0026ldquo;재료가 부족합니다.\u0026rdquo; \u0026laquo; endl; showCoffeeMachineState(); continue; } if(mat[3]-\u0026gt;subAmount(1) == false) { // water-1 cout \u0026laquo; \u0026ldquo;재료가 부족합니다.\u0026rdquo; \u0026laquo; endl; showCoffeeMachineState(); continue; } if(mat[4]-\u0026gt;subAmount(1) == false) { // cup-1 cout \u0026laquo; \u0026ldquo;재료가 부족합니다.\u0026rdquo; \u0026laquo; endl; showCoffeeMachineState(); continue; } // 기본 재료가 부족하지 않으면 실행 switch(num) { case 0: // 보통 커피는 cream 추가 소모 if(mat[2]-\u0026gt;subAmount(1) == false) { // cream-1 cout \u0026laquo; \u0026ldquo;재료가 부족합니다.\u0026rdquo; \u0026laquo; endl; showCoffeeMachineState(); continue; } cout \u0026laquo; \u0026ldquo;맛있는 보통 커피 나왔습니다~~\u0026rdquo; \u0026laquo; endl; showCoffeeMachineState(); cout \u0026laquo; endl; break; case 1: // 설탕 커피는 sugar 추가 소모 if(mat[1]-\u0026gt;subAmount(1) == false) { // sugar-1 cout \u0026laquo; \u0026ldquo;재료가 부족합니다.\u0026rdquo; \u0026laquo; endl; showCoffeeMachineState(); continue; } cout \u0026laquo; \u0026ldquo;맛있는 설탕 커피 나왔습니다~~\u0026rdquo; \u0026laquo; endl; showCoffeeMachineState(); cout \u0026laquo; endl; break; case 2: // 블랙 커피는 추가 소모 없음 cout \u0026laquo; \u0026ldquo;맛있는 블랙 커피 나왔습니다~~\u0026rdquo; \u0026laquo; endl; showCoffeeMachineState(); break; default : // 잘못 입력 cout \u0026laquo; \u0026ldquo;잘못 입력 하셨습니다.\u0026rdquo; \u0026laquo; endl \u0026laquo; endl; break; } } } void showMenu() { cout \u0026laquo; \u0026ldquo;보통 커피:0, 설탕 커피:1, 블랙 커피:2, 채우기:3, 종료:4\u0026raquo; \u0026ldquo;; } int selectMenu() { int num; cin \u0026raquo; num; return num; } }; int main() { cout.setf(ios::left); CoffeeMachine c; c.start(); } 설명 :\n문제에서 커피 재료에 대한 언급이 없어서 임의로 들어가는 재료를 선택 하였습니다.\n모든 커피에 기본적으로 커피, 물, 컵은 소모됩니다.\n일반 커피는 추가로 Cream이 소모되고, 설탕 커피는 추가로 Sugar가 소모됩니다.\n블랙 커피는 기본 재료 외에 소모되는 재료가 없습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 11장 11번 (1) 2020.04.02 명품 C++ programming 실습 문제 11장 10번 (1) 2020.04.02 명품 C++ programming 실습 문제 11장 9번 (3) 2020.04.02 명품 C++ programming 실습 문제 11장 8번 (1) 2020.04.02 명품 C++ programming 실습 문제 11장 7번 (1) 2020.04.02 ","permalink":"https://blog.sobamemil.com/posts/143-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-11%EC%9E%A5-12%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e커피 자판기 시뮬레이터를 C++로 작성해보자. 실행 사례는 다음과 같다.\u003c/p\u003e\n\u003cp\u003e자판기는 보통 커피, 설탕  커피, 블랙 커피의 3종류만 판매한다.\u003c/p\u003e\n\u003cp\u003e단순화를 위해 실행 살에는 총 3인분의 재료만 가지도록 하였다. 커피 메뉴에 따라 필요한 재료들이 하나씩 없어진다.\u003c/p\u003e\n\u003cp\u003e객체 지향 구조에 따라 필요한 클래스를 작성하여 프로그램을 완성하라.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/143/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e객체 지향 구조로 종합 응용 연습\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e코드 :\u003c/strong\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  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  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96  97  98  99  100  101  102  103  104  105  106  107  108  109  110  111  112  113  114  115  116  117  118  119  120  121  122  123  124  125  126  127  128  129  130  131  132  133  134  135  136  137  138  139  140  141  142  143  144  145  146  147  148  149  150  151  152  153  154  155  156  157  158  159  160  161  162  163  164  165  166  167  168  169\u003c/td\u003e\n          \u003ctd\u003e#include \u003ciostream\u003e  #include \u003ciomanip\u003e  using namespace std;    class Material {  protected:  string name;  int amount;  public:  string getName() {  return name;  }  int getAmount() {  return amount;  }  void setAmount(int amount) {  this-\u0026gt;amount = amount;  }  bool subAmount(int amount) {  if(this-\u0026gt;amount \u0026lt;= 0)  return false;  else  this-\u0026gt;amount -= amount;  return true;  }  };    class Coffee : public Material {  public:  Coffee() {  name = \u0026ldquo;Coffee\u0026rdquo;;  amount = 3;  }  };    class Sugar : public Material {  public:  Sugar() {  name = \u0026ldquo;Sugar\u0026rdquo;;  amount = 3;  }  };    class Cream : public Material {  public:  Cream() {  name = \u0026ldquo;Cream\u0026rdquo;;  amount = 3;  }  };    class Water : public Material {  public:  Water() {  name = \u0026ldquo;Water\u0026rdquo;;  amount = 3;  }  };    class Cup : public Material {  public:  Cup() {  name = \u0026ldquo;Cup\u0026rdquo;;  amount = 3;  }  };    class CoffeeMachine {  Material *mat[]; // Material의 객체 배열 포인터 생성  public:  CoffeeMachine() { // 생성자에서 안내 멘트와 재료 상태 출력  cout \u0026laquo; \u0026ldquo;\u0026mdash;\u0026ndash;명품 커피 자판기 켭니다.\u0026mdash;\u0026ndash;\u0026rdquo; \u0026laquo; endl;  mat[0] = new Coffee();  mat[1] = new Sugar();  mat[2] = new Cream();  mat[3] = new Water();  mat[4] = new Cup();  showCoffeeMachineState();  cout \u0026laquo; endl;  }  void showCoffeeMachineState() { // 재료 상태 출력  for(int i=0; i\u0026lt;5; i++) {  cout \u0026laquo; setw(10) \u0026laquo; mat[i]-\u0026gt;getName();  for(int j=0; j\u0026lt;mat[i]-\u0026gt;getAmount(); j++)  cout \u0026laquo; \u0026ldquo;*\u0026rdquo;;  cout \u0026laquo; endl;  }  }  void start() { // 메뉴 출력 시작  int num;  while(true) {  showMenu();  num = selectMenu();  if(num == 3) { // 채우기  for(int i=0; i\u0026lt;5; i++) {  mat[i]-\u0026gt;setAmount(3);  }  cout \u0026laquo; \u0026ldquo;모든 통을 채웁니다~~\u0026rdquo; \u0026laquo; endl;  showCoffeeMachineState();  cout \u0026laquo; endl;  continue;  }  else if(num == 4) { // 종료  cout \u0026laquo; \u0026ldquo;프로그램을 종료합니다\u0026hellip;\u0026rdquo; \u0026laquo; endl;  exit(0);  }    if(mat[0]-\u0026gt;subAmount(1) == false) { // coffee-1  cout \u0026laquo; \u0026ldquo;재료가 부족합니다.\u0026rdquo; \u0026laquo; endl;  showCoffeeMachineState();  continue;  }  if(mat[3]-\u0026gt;subAmount(1) == false) { // water-1  cout \u0026laquo; \u0026ldquo;재료가 부족합니다.\u0026rdquo; \u0026laquo; endl;  showCoffeeMachineState();  continue;  }  if(mat[4]-\u0026gt;subAmount(1) == false) { // cup-1  cout \u0026laquo; \u0026ldquo;재료가 부족합니다.\u0026rdquo; \u0026laquo; endl;  showCoffeeMachineState();  continue;  }  // 기본 재료가 부족하지 않으면 실행  switch(num) {  case 0: // 보통 커피는 cream 추가 소모  if(mat[2]-\u0026gt;subAmount(1) == false) { // cream-1  cout \u0026laquo; \u0026ldquo;재료가 부족합니다.\u0026rdquo; \u0026laquo; endl;  showCoffeeMachineState();  continue;  }  cout \u0026laquo; \u0026ldquo;맛있는 보통 커피 나왔습니다~~\u0026rdquo; \u0026laquo; endl;  showCoffeeMachineState();  cout \u0026laquo; endl;  break;  case 1: // 설탕 커피는 sugar 추가 소모  if(mat[1]-\u0026gt;subAmount(1) == false) { // sugar-1  cout \u0026laquo; \u0026ldquo;재료가 부족합니다.\u0026rdquo; \u0026laquo; endl;  showCoffeeMachineState();  continue;  }  cout \u0026laquo; \u0026ldquo;맛있는 설탕 커피 나왔습니다~~\u0026rdquo; \u0026laquo; endl;  showCoffeeMachineState();  cout \u0026laquo; endl;  break;  case 2: // 블랙 커피는 추가 소모 없음  cout \u0026laquo; \u0026ldquo;맛있는 블랙 커피 나왔습니다~~\u0026rdquo; \u0026laquo; endl;  showCoffeeMachineState();  break;  default : // 잘못 입력  cout \u0026laquo; \u0026ldquo;잘못 입력 하셨습니다.\u0026rdquo; \u0026laquo; endl \u0026laquo; endl;  break;  }  }  }  void showMenu() {  cout \u0026laquo; \u0026ldquo;보통 커피:0, 설탕 커피:1, 블랙 커피:2, 채우기:3, 종료:4\u0026raquo; \u0026ldquo;;  }  int selectMenu() {  int num;  cin \u0026raquo; num;  return num;  }  };    int main() {  cout.setf(ios::left);  CoffeeMachine c;  c.start();  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e설명 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 11장 12번"},{"content":"문제 :\n다음은 프로그램과 실행 결과를 보여준다. pos 조작자를 작성하라.\n1 2 3 4 5 6 7 8 9 #include using namespace std; int main() { int x, y; cin \u0026raquo; pos \u0026raquo; x; cin \u0026raquo; pos \u0026raquo; y; cout \u0026laquo; x \u0026laquo; \u0026lsquo;,\u0026rsquo; \u0026laquo; y \u0026laquo; endl; } 실행 결과 :\n목적 및 힌트 :\n조작자 작성 연습\n코드 :\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include using namespace std; istream\u0026amp; pos (istream\u0026amp; ins) { // pos 조작자 cout \u0026laquo; \u0026ldquo;위치는? \u0026ldquo;; return ins; } int main() { int x, y; cin \u0026raquo; pos \u0026raquo; x; cin \u0026raquo; pos \u0026raquo; y; cout \u0026laquo; x \u0026laquo; \u0026lsquo;,\u0026rsquo; \u0026laquo; y \u0026laquo; endl; } 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 11장 12번 (5) 2020.04.02 명품 C++ programming 실습 문제 11장 10번 (1) 2020.04.02 명품 C++ programming 실습 문제 11장 9번 (3) 2020.04.02 명품 C++ programming 실습 문제 11장 8번 (1) 2020.04.02 명품 C++ programming 실습 문제 11장 7번 (1) 2020.04.02 ","permalink":"https://blog.sobamemil.com/posts/142-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-11%EC%9E%A5-11%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e다음은 프로그램과 실행 결과를 보여준다. pos 조작자를 작성하라.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9\u003c/td\u003e\n          \u003ctd\u003e#include \u003ciostream\u003e  using namespace std;    int main() {  int x, y;  cin \u0026raquo; pos \u0026raquo; x;  cin \u0026raquo; pos \u0026raquo; y;  cout \u0026laquo; x \u0026laquo; \u0026lsquo;,\u0026rsquo; \u0026laquo; y \u0026laquo; endl;  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/142/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e조작자 작성 연습\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e코드 :\u003c/strong\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14\u003c/td\u003e\n          \u003ctd\u003e#include \u003ciostream\u003e  using namespace std;    istream\u0026amp; pos (istream\u0026amp; ins) { // pos 조작자  cout \u0026laquo; \u0026ldquo;위치는? \u0026ldquo;;  return ins;  }    int main() {  int x, y;  cin \u0026raquo; pos \u0026raquo; x;  cin \u0026raquo; pos \u0026raquo; y;  cout \u0026laquo; x \u0026laquo; \u0026lsquo;,\u0026rsquo; \u0026laquo; y \u0026laquo; endl;  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e공유하기\u003c/p\u003e","title":"명품 C++ programming 실습 문제 11장 11번"},{"content":"문제 :\n다음은 프로그램과 실행 결과를 보여준다.\nprompt 조작자를 작성하여 프로그램을 완성하라.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #include #include using namespace std; int main() { string password; while(true) { cin \u0026raquo; prompt \u0026raquo; password; if(password == \u0026ldquo;C++\u0026quot;) { cout \u0026laquo; \u0026ldquo;login success!!\u0026rdquo; \u0026laquo; endl; break; } else cout \u0026laquo; \u0026ldquo;login fail. try again!!\u0026rdquo; \u0026laquo; endl; } } 실행 결과 :\n목적 및 힌트 :\n조작자 작성 연습\n코드 :\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #include #include using namespace std; istream\u0026amp; prompt(istream\u0026amp; ins) { // prompt 조작자 cout \u0026laquo; \u0026ldquo;암호?\u0026rdquo;; return ins; } int main() { string password; while(true) { cin \u0026raquo; prompt \u0026raquo; password; if(password == \u0026ldquo;C++\u0026quot;) { cout \u0026laquo; \u0026ldquo;login success!!\u0026rdquo; \u0026laquo; endl; break; } else cout \u0026laquo; \u0026ldquo;login fail. try again!!\u0026rdquo; \u0026laquo; endl; } } 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 11장 12번 (5) 2020.04.02 명품 C++ programming 실습 문제 11장 11번 (1) 2020.04.02 명품 C++ programming 실습 문제 11장 9번 (3) 2020.04.02 명품 C++ programming 실습 문제 11장 8번 (1) 2020.04.02 명품 C++ programming 실습 문제 11장 7번 (1) 2020.04.02 ","permalink":"https://blog.sobamemil.com/posts/141-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-11%EC%9E%A5-10%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e다음은 프로그램과 실행 결과를 보여준다.\u003c/p\u003e\n\u003cp\u003eprompt 조작자를 작성하여 프로그램을 완성하라.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16\u003c/td\u003e\n          \u003ctd\u003e#include \u003ciostream\u003e  #include \u003cstring\u003e  using namespace std;    int main() {  string password;  while(true) {  cin \u0026raquo; prompt \u0026raquo; password;  if(password == \u0026ldquo;C++\u0026quot;) {  cout \u0026laquo; \u0026ldquo;login success!!\u0026rdquo; \u0026laquo; endl;  break;  }  else  cout \u0026laquo; \u0026ldquo;login fail. try again!!\u0026rdquo; \u0026laquo; endl;  }  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 11장 10번"},{"content":"문제 :\n다음은 Phone 클래스이다.\n1 2 3 4 5 6 7 8 9 10 11 class Phone { // 전화 번호를 표현하는 클래스 string name; string telnum; string address; public: Phone(string name=\u0026quot;\u0026quot;, string telnum=\u0026quot;\u0026quot;, string address=\u0026quot;\u0026quot;) { this-\u0026gt;name = name; this-\u0026gt;telnum = telnum; this-\u0026gt;address = address; } }; Phone 클래스의 객체를 입출력하는 아래 코드와 실행 결과를 참조하여 \u0026laquo;, \u0026raquo; 연산자를 작성하고 Phone 클래스를 수정하는 등 프로그램을 완성하라.\n1 2 3 Phone girl, boy; cin \u0026raquo; girl \u0026raquo; boy; cout \u0026laquo; girl \u0026laquo; endl \u0026laquo; boy \u0026laquo; endl; 실행 결과 :\n목적 및 힌트 :\n스트림 입출력 연산자( \u0026laquo;, \u0026raquo; ) 작성 연습\n코드 :\n1 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 #include using namespace std; class Phone { // 전화 번호를 표현하는 클래스 string name; string telnum; string address; public: Phone(string name=\u0026quot;\u0026quot;, string telnum=\u0026quot;\u0026quot;, string address=\u0026quot;\u0026quot;) { this-\u0026gt;name = name; this-\u0026gt;telnum = telnum; this-\u0026gt;address = address; } friend ostream\u0026amp; operator \u0026laquo; (ostream\u0026amp; os, Phone p); // friend 작성 friend istream\u0026amp; operator \u0026raquo; (istream\u0026amp; ins, Phone\u0026amp; p); // friend 작성, Phone\u0026amp; p 참조자 사용 }; ostream\u0026amp; operator \u0026laquo; (ostream\u0026amp; os, Phone p) { os \u0026laquo; \u0026ldquo;(\u0026rdquo; \u0026laquo; p.name \u0026laquo; \u0026ldquo;,\u0026rdquo; \u0026laquo; p.telnum \u0026laquo; \u0026ldquo;,\u0026rdquo; \u0026laquo; p.address \u0026laquo; \u0026ldquo;)\u0026rdquo;; return os; } istream\u0026amp; operator \u0026raquo; (istream\u0026amp; ins, Phone\u0026amp; p) { cout \u0026laquo; \u0026ldquo;이름:\u0026rdquo;; ins \u0026raquo; p.name; cout \u0026laquo; \u0026ldquo;전화번호:\u0026rdquo;; ins \u0026raquo; p.telnum; cout \u0026laquo; \u0026ldquo;주소:\u0026rdquo;; ins \u0026raquo; p.address; return ins; } int main() { Phone girl, boy; cin \u0026raquo; girl \u0026raquo; boy; // 전화 번호를 키보드로부터 읽는다. cout \u0026laquo; girl \u0026laquo; endl \u0026laquo; boy \u0026laquo; endl; // 전화 번호를 출력한다. } 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 11장 11번 (1) 2020.04.02 명품 C++ programming 실습 문제 11장 10번 (1) 2020.04.02 명품 C++ programming 실습 문제 11장 8번 (1) 2020.04.02 명품 C++ programming 실습 문제 11장 7번 (1) 2020.04.02 명품 C++ programming 실습 문제 11장 6번 (1) 2020.03.27 ","permalink":"https://blog.sobamemil.com/posts/140-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-11%EC%9E%A5-9%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e다음은 Phone 클래스이다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11\u003c/td\u003e\n          \u003ctd\u003eclass Phone { // 전화 번호를 표현하는 클래스  string name;  string telnum;  string address;  public:  Phone(string name=\u0026quot;\u0026quot;, string telnum=\u0026quot;\u0026quot;, string address=\u0026quot;\u0026quot;) {  this-\u0026gt;name = name;  this-\u0026gt;telnum = telnum;  this-\u0026gt;address = address;  }  };\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003ePhone 클래스의 객체를 입출력하는 아래 코드와 실행 결과를 참조하여 \u0026laquo;, \u0026raquo; 연산자를 작성하고 Phone 클래스를 수정하는 등 프로그램을 완성하라.\u003c/p\u003e","title":"명품 C++ programming 실습 문제 11장 9번"},{"content":"문제 :\nCircle 클래스는 다음과 같다.\n1 2 3 4 5 6 7 8 class Circle { string name; int radius; public: Circle(int radius=1, string name=\u0026quot;\u0026quot;) { this-\u0026gt;radius = radius; this-\u0026gt;name = name; } }; Circle 클래스의 객체를 입출력하는 다음 코드와 실행 결과를 참조하여 \u0026laquo;, \u0026raquo; 연산자를 작성하고 Circle 클래스를 수정하는 등 프로그램을 완성하라.\n1 2 3 Circle d, w; cin \u0026raquo; d \u0026raquo; w; // 키보드 입력을 받아 객체 d와 w를 완성 cout \u0026laquo; d \u0026laquo; w \u0026laquo; endl; // 객체 d, w 출력 실행 결과 :\n목적 및 힌트 :\n스트림 입출력 연산자( \u0026laquo;, \u0026raquo;) 작성 연습\n코드 :\n1 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 #include using namespace std; class Circle { // 원을 표현하는 클래스 string name; int radius; public: Circle(int radius=1, string name=\u0026quot;\u0026quot;) { this-\u0026gt;radius = radius; this-\u0026gt;name = name; } friend ostream\u0026amp; operator \u0026laquo; (ostream\u0026amp; os, Circle c); // friend 선언 friend istream\u0026amp; operator \u0026raquo; (istream\u0026amp; ins, Circle\u0026amp; c); // friend 선언, Circle\u0026amp; c 참조자 사용 }; ostream\u0026amp; operator \u0026laquo; (ostream\u0026amp; os, Circle c) { os \u0026laquo; \u0026ldquo;(반지름이\u0026rdquo; \u0026laquo; c.radius \u0026laquo; \u0026ldquo;인 \u0026quot; \u0026laquo; c.name \u0026laquo; \u0026ldquo;)\u0026rdquo;; return os; } istream\u0026amp; operator \u0026raquo; (istream\u0026amp; ins, Circle\u0026amp; c) { cout \u0026laquo; \u0026ldquo;반지름 \u0026raquo; \u0026ldquo;; ins \u0026raquo; c.radius; cout \u0026laquo; \u0026ldquo;이름 \u0026raquo; \u0026ldquo;; ins \u0026raquo; c.name; return ins; } int main() { Circle d, w; cin \u0026raquo; d \u0026raquo; w; // 키보드 입력을 받아 객체 d와 w를 완성 cout \u0026laquo; d \u0026laquo; w \u0026laquo; endl; // 객체 d, w 출력 } 설명 :\n스트림 입출력 연산자는 class 외부 함수로 작성해야 하고, \u0026raquo; 연산자 작성시에는 본래의 값이 바뀌어야 하기 때문에 매개변수로 참조자를 사용하여 받았습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 11장 10번 (1) 2020.04.02 명품 C++ programming 실습 문제 11장 9번 (3) 2020.04.02 명품 C++ programming 실습 문제 11장 7번 (1) 2020.04.02 명품 C++ programming 실습 문제 11장 6번 (1) 2020.03.27 명품 C++ programming 실습 문제 11장 5번 (3) 2020.03.27 ","permalink":"https://blog.sobamemil.com/posts/139-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-11%EC%9E%A5-8%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eCircle 클래스는 다음과 같다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8\u003c/td\u003e\n          \u003ctd\u003eclass Circle {  string name;  int radius;  public:  Circle(int radius=1, string name=\u0026quot;\u0026quot;) {  this-\u0026gt;radius = radius; this-\u0026gt;name = name;  }  };\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eCircle 클래스의 객체를 입출력하는 다음 코드와 실행 결과를 참조하여 \u0026laquo;, \u0026raquo; 연산자를 작성하고 Circle 클래스를 수정하는 등 프로그램을 완성하라.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3\u003c/td\u003e\n          \u003ctd\u003eCircle d, w;  cin \u0026raquo; d \u0026raquo; w; // 키보드 입력을 받아 객체 d와 w를 완성  cout \u0026laquo; d \u0026laquo; w \u0026laquo; endl; // 객체 d, w 출력\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 11장 8번"},{"content":"문제 :\n0에서 127까지 ASCII 코드와 해당 문자를 다음과 같이 출력하는 프로그램을 작성하라.\n화면에 출력가능하지 않는 ASCII 코드는 \u0026lsquo;.\u0026lsquo;으로 출력하라.\n실행 결과 :\n목적 및 힌트 :\ncout으로 포맷 출력 응용 연습\n문자가 출력 가능한지 알기 위해 bool isprint(int c); 함수를 사용하면 됩니다.\n매개 변수 c는 문자 코드 값이고, 헤더 파일을 include 해야합니다.\n코드 :\n1 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 #include #include #include using namespace std; void showDec(int d) { // 10진수 출력 cout \u0026laquo; setw(10) \u0026laquo; dec \u0026laquo; d; } void showHexa(int h) { // 16진수 출력 cout \u0026laquo; setw(10) \u0026laquo; hex \u0026laquo; h; } void showChar(int c) { // ASCII 출력 int i=0; if( (i = isprint(c)) != 0) // 출력 가능한 문자인지 확인 cout \u0026laquo; setw(10) \u0026laquo; (char)c; else // 출력 불가능한 문자이면 \u0026ldquo;.\u0026rdquo; 출력 cout \u0026laquo; setw(10) \u0026laquo; \u0026ldquo;.\u0026rdquo;; } void print() { for(int i=0; i\u0026lt;4; i++){ cout \u0026laquo; setw(10) \u0026laquo; \u0026ldquo;dec\u0026rdquo;; cout \u0026laquo; setw(10) \u0026laquo; \u0026ldquo;hexa\u0026rdquo;; cout \u0026laquo; setw(10) \u0026laquo; \u0026ldquo;char\u0026rdquo;; } cout \u0026laquo; endl; for(int i=0; i\u0026lt;4; i++){ cout \u0026laquo; setw(10) \u0026laquo; \u0026ldquo;\u0026mdash;\u0026rdquo;; cout \u0026laquo; setw(10) \u0026laquo; \u0026ldquo;\u0026mdash;-\u0026rdquo;; cout \u0026laquo; setw(10) \u0026laquo; \u0026ldquo;\u0026mdash;-\u0026rdquo;; } cout \u0026laquo; endl; for(int i=0; i\u0026lt;128; i++){ // 127번 반복하여 dec, hexa, ASCII 출력 if(i%4==0 \u0026amp;\u0026amp; i!=0) cout \u0026laquo; endl; showDec(i); showHexa(i); showChar(i); } } int main() { cout.setf(ios::left); // 출력 포맷 왼쪽 정렬 print(); } 설명 :\n포맷 출력을 하기 위해 조작자 setw() 함수를 사용하였고, 사용하기 위해서는 iomanip 헤더 파일을 include 해주어야 합니다.\n입출력 조작자(manipulator)는 std::basic_ostream의 \u0026laquo; (출력)연산자나 std::basic_istream의 \u0026raquo; (입력)연산자와 함께 사용할 수 있습니다.\n또한 왼쪽으로 정렬하여 출력하는 포맷을 지정하기 위해 cout.setf(ios::left); 코드를 사용했고, ios_base::setf() 함수와 조작자에 대한 내용은 아래 링크에서 자세히 볼 수 있습니다.\nhttp://www.cplusplus.com/reference/library/manipulators/\n[manipulators - C++ Reference\nwww.cplusplus.com](http://www.cplusplus.com/reference/library/manipulators/)\nhttp://www.cplusplus.com/reference/ios/ios_base/setf/\n[ios_base::setf - C++ Reference\npublic member function set (1)fmtflags setf (fmtflags fmtfl); mask (2)fmtflags setf (fmtflags fmtfl, fmtflags mask); Set specific format flags The first form (1) sets the stream\u0026rsquo;s format flags whose bits are set in fmtfl, leaving unchanged\nwww.cplusplus.com](http://www.cplusplus.com/reference/ios/ios_base/setf/)\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 11장 9번 (3) 2020.04.02 명품 C++ programming 실습 문제 11장 8번 (1) 2020.04.02 명품 C++ programming 실습 문제 11장 6번 (1) 2020.03.27 명품 C++ programming 실습 문제 11장 5번 (3) 2020.03.27 명품 C++ programming 실습 문제 11장 4번 (1) 2020.03.27 ","permalink":"https://blog.sobamemil.com/posts/138-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-11%EC%9E%A5-7%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e0에서 127까지 ASCII 코드와 해당 문자를 다음과 같이 출력하는 프로그램을 작성하라.\u003c/p\u003e\n\u003cp\u003e화면에 출력가능하지 않는 ASCII 코드는 \u0026lsquo;.\u0026lsquo;으로 출력하라.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/138/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003ecout으로 포맷 출력 응용 연습\u003c/p\u003e\n\u003cp\u003e문자가 출력 가능한지 알기 위해 bool isprint(int c); 함수를 사용하면 됩니다.\u003c/p\u003e\n\u003cp\u003e매개 변수 c는 문자 코드 값이고, \u003ccctype\u003e 헤더 파일을 include 해야합니다.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e코드 :\u003c/strong\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  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\u003c/td\u003e\n          \u003ctd\u003e#include \u003ciostream\u003e  #include \u003ccctype\u003e  #include \u003ciomanip\u003e  using namespace std;    void showDec(int d) { // 10진수 출력  cout \u0026laquo; setw(10) \u0026laquo; dec \u0026laquo; d;  }    void showHexa(int h) { // 16진수 출력  cout \u0026laquo; setw(10) \u0026laquo; hex \u0026laquo; h;  }    void showChar(int c) { // ASCII 출력  int i=0;  if( (i = isprint(c)) != 0) // 출력 가능한 문자인지 확인  cout \u0026laquo; setw(10) \u0026laquo; (char)c;  else // 출력 불가능한 문자이면 \u0026ldquo;.\u0026rdquo; 출력  cout \u0026laquo; setw(10) \u0026laquo; \u0026ldquo;.\u0026rdquo;;  }    void print() {  for(int i=0; i\u0026lt;4; i++){  cout \u0026laquo; setw(10) \u0026laquo; \u0026ldquo;dec\u0026rdquo;;  cout \u0026laquo; setw(10) \u0026laquo; \u0026ldquo;hexa\u0026rdquo;;  cout \u0026laquo; setw(10) \u0026laquo; \u0026ldquo;char\u0026rdquo;;  }  cout \u0026laquo; endl;  for(int i=0; i\u0026lt;4; i++){  cout \u0026laquo; setw(10) \u0026laquo; \u0026ldquo;\u0026mdash;\u0026rdquo;;  cout \u0026laquo; setw(10) \u0026laquo; \u0026ldquo;\u0026mdash;-\u0026rdquo;;  cout \u0026laquo; setw(10) \u0026laquo; \u0026ldquo;\u0026mdash;-\u0026rdquo;;  }  cout \u0026laquo; endl;  for(int i=0; i\u0026lt;128; i++){ // 127번 반복하여 dec, hexa, ASCII 출력  if(i%4==0 \u0026amp;\u0026amp; i!=0)  cout \u0026laquo; endl;  showDec(i);  showHexa(i);  showChar(i);  }  }  int main() {  cout.setf(ios::left); // 출력 포맷 왼쪽 정렬  print();  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e설명 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 11장 7번"},{"content":"문제 :\n다음과 같이 정수, 제곱, 제곱근의 값을 형식에 맞추어 출력하는 프로그램을 작성하라.\n필드의 간격은 총 15칸이고 제곱근의 유효 숫자는 총 3자리로 한다.\n빈칸은 모두 underline(_) 문자로 삽입한다.\n실행 결과 :\n목적 및 힌트 :\ncout으로 포맷 출력 응용 연습\n제곱근을 구하려면 헤더 파일을 include 하고 sqrt(double x) 함수를 호출하면 됩니다.\n코드 :\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #include #include #include using namespace std; void showNumber(const double \u0026amp;num){ cout \u0026laquo; setw(15) \u0026laquo; setfill(\u0026rsquo;_\u0026rsquo;) \u0026laquo; num; } void showSqrt(const double \u0026amp;num){ cout \u0026laquo; setprecision(3) \u0026laquo; setw(15) \u0026laquo; setfill(\u0026rsquo;_\u0026rsquo;) \u0026laquo; sqrt(num) \u0026laquo; endl; } int main() { cout.setf(ios::left); cout \u0026laquo; setw(15) \u0026laquo; \u0026ldquo;Number\u0026rdquo;; cout \u0026laquo; setw(15) \u0026laquo; \u0026ldquo;Square\u0026rdquo;; cout \u0026laquo; setw(15) \u0026laquo; \u0026ldquo;Square Root\u0026rdquo; \u0026laquo; endl; for(double i=0; i\u0026lt;=45; i+=5){ cout.precision(4); showNumber(i); // Number 출력 showNumber(i*i); // Square 출력 showSqrt(i); // Square Root 출력 } } 설명 :\n포맷 함수와 포맷 플래그, 조작자에 대해 알고 있으면 문제를 푸는데 어려움이 없습니다.\n포맷 플래그와 조작자에 대한 내용은 너무 광범위 해 링크로 대체하겠습니다.\n포맷 플래그 :\nhttp://www.cplusplus.com/reference/ios/ios_base/fmtflags/\n[ios_base::fmtflags - C++ Reference\npublic member type Type for stream format flags Bitmask type to represent stream format flags. This type is used as its parameter and/or return value by the member functions flags, setf and unsetf. The values passed and retrieved by these\nwww.cplusplus.com](http://www.cplusplus.com/reference/ios/ios_base/fmtflags/)\n조작자 :\nhttp://www.cplusplus.com/reference/library/manipulators/\n[manipulators - C++ Reference\nwww.cplusplus.com](http://www.cplusplus.com/reference/library/manipulators/)\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 11장 8번 (1) 2020.04.02 명품 C++ programming 실습 문제 11장 7번 (1) 2020.04.02 명품 C++ programming 실습 문제 11장 5번 (3) 2020.03.27 명품 C++ programming 실습 문제 11장 4번 (1) 2020.03.27 명품 C++ programming 실습 문제 11장 3번 (3) 2020.03.27 ","permalink":"https://blog.sobamemil.com/posts/137-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-11%EC%9E%A5-6%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e다음과 같이 정수, 제곱, 제곱근의 값을 형식에 맞추어 출력하는 프로그램을 작성하라.\u003c/p\u003e\n\u003cp\u003e필드의 간격은 총 15칸이고 제곱근의 유효 숫자는 총 3자리로 한다.\u003c/p\u003e\n\u003cp\u003e빈칸은 모두 underline(_) 문자로 삽입한다.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/137/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003ecout으로 포맷 출력 응용 연습\u003c/p\u003e\n\u003cp\u003e제곱근을 구하려면 \u003ccmath\u003e 헤더 파일을 include 하고 sqrt(double x) 함수를 호출하면 됩니다.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e코드 :\u003c/strong\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25\u003c/td\u003e\n          \u003ctd\u003e#include \u003ciostream\u003e  #include \u003ccmath\u003e  #include \u003ciomanip\u003e  using namespace std;    void showNumber(const double \u0026amp;num){  cout \u0026laquo; setw(15) \u0026laquo; setfill(\u0026rsquo;_\u0026rsquo;) \u0026laquo; num;  }    void showSqrt(const double \u0026amp;num){  cout \u0026laquo; setprecision(3) \u0026laquo; setw(15) \u0026laquo; setfill(\u0026rsquo;_\u0026rsquo;) \u0026laquo; sqrt(num) \u0026laquo; endl;  }    int main() {  cout.setf(ios::left);  cout \u0026laquo; setw(15) \u0026laquo; \u0026ldquo;Number\u0026rdquo;;  cout \u0026laquo; setw(15) \u0026laquo; \u0026ldquo;Square\u0026rdquo;;  cout \u0026laquo; setw(15) \u0026laquo; \u0026ldquo;Square Root\u0026rdquo; \u0026laquo; endl;  for(double i=0; i\u0026lt;=45; i+=5){  cout.precision(4);  showNumber(i); // Number 출력  showNumber(i*i); // Square 출력  showSqrt(i); // Square Root 출력  }  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e설명 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 11장 6번"},{"content":"문제 :\n다음 프로그램은 예제 11-3의 코드이다. 아래 코드에서 char [] 대신 string을 이용하여 문자열을 다루도록 프로그램을 재작성하라.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #include #include using namespace std; int main() { char cmd[80]; cout \u0026laquo; \u0026ldquo;cin.get(char*, int)로 문자열을 읽습니다.\u0026rdquo; \u0026laquo; endl; while(true) { cout \u0026laquo; \u0026ldquo;종료하려면 exit를 입력하세요 \u0026raquo; \u0026ldquo;; cin.get(cmd, 80); // 79개까지의 문자 읽음 if(strcmp(cmd, \u0026ldquo;exit\u0026rdquo;) == 0 ) { cout \u0026laquo; \u0026ldquo;프로그램을 종료합니다\u0026hellip;.\u0026rdquo;; return 0; } else cin.ignore(1); // 버퍼에 남아 있는 키 (\u0026rsquo;\\n\u0026rsquo;) 제거 } } 실행 결과 :\n목적 및 힌트 :\ngetline()으로 string 객체에 문자열 읽어 들이기\ncmd를 string 타입으로 선언하고 cin.get() 대신, string 객체에 문자열을 읽어들이는 getline(cin, cmd) 함수를 사용하면 됩니다.\n코드 :\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include using namespace std; int main() { string cmd; while(true){ cout \u0026laquo; \u0026ldquo;종료하려면 exit을 입력하세요 \u0026raquo; \u0026ldquo;; getline(cin, cmd); // getline() 함수를 통해 문자열 입력 if(cmd == \u0026ldquo;exit\u0026rdquo;) { cout \u0026laquo; \u0026ldquo;프로그램을 종료합니다\u0026hellip;.\u0026rdquo;; return 0; } } } 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 11장 7번 (1) 2020.04.02 명품 C++ programming 실습 문제 11장 6번 (1) 2020.03.27 명품 C++ programming 실습 문제 11장 4번 (1) 2020.03.27 명품 C++ programming 실습 문제 11장 3번 (3) 2020.03.27 명품 C++ programming 실습 문제 11장 2번 (1) 2020.03.27 ","permalink":"https://blog.sobamemil.com/posts/136-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-11%EC%9E%A5-5%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e다음 프로그램은 예제 11-3의 코드이다. 아래 코드에서 char [] 대신 string을 이용하여 문자열을 다루도록 프로그램을 재작성하라.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18\u003c/td\u003e\n          \u003ctd\u003e#include \u003ciostream\u003e  #include \u003ccstring\u003e  using namespace std;    int main() {  char cmd[80];  cout \u0026laquo; \u0026ldquo;cin.get(char*, int)로 문자열을 읽습니다.\u0026rdquo; \u0026laquo; endl;  while(true) {  cout \u0026laquo; \u0026ldquo;종료하려면 exit를 입력하세요 \u0026raquo; \u0026ldquo;;  cin.get(cmd, 80); // 79개까지의 문자 읽음  if(strcmp(cmd, \u0026ldquo;exit\u0026rdquo;) == 0 ) {  cout \u0026laquo; \u0026ldquo;프로그램을 종료합니다\u0026hellip;.\u0026rdquo;;  return 0;  }  else  cin.ignore(1); // 버퍼에 남아 있는 \u003cEnter\u003e 키 (\u0026rsquo;\\n\u0026rsquo;) 제거  }  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 11장 5번"},{"content":"문제 :\n한 줄에 \u0026lsquo;영어문장;한글문자\u0026rsquo; 형식으로 키 입력될 때, cin.ignore()를 이용하여 \u0026lsquo;;\u0026lsquo;이전에 입력된 문자열만 출력하는 프로그램을 작성하라.\n아래에서 ^Z(ctrl-z) 키는 입력 종료를 나타내는 키이며, cin.get()은 EOF를 리턴한다.\n실행 결과 :\n목적 및 힌트 :\ncin.get(), EOF, cin.ignore() 활용\n코드 :\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include using namespace std; int main() { int ch; while( (ch = cin.get()) != EOF ) { if(ch == \u0026lsquo;;\u0026rsquo;){ cout.put(\u0026rsquo;\\n\u0026rsquo;); cin.ignore(100, \u0026lsquo;\\n\u0026rsquo;); } else cout.put(ch); } } 설명 :\ncin.ignore() 함수에 대한 내용과 사용법은 실습 문제 11장 3번 문제를 참고하시면 됩니다.\n2020/03/27 - [명품 C++ programming] - 명품 C++ programming 실습 문제 11장 3번\n[명품 C++ programming 실습 문제 11장 3번\n문제 : 한 줄에 \u0026lsquo;영어문장;한글문자\u0026rsquo; 형식으로 키 입력될 때, cin.ignore()를 이용하여 \u0026lsquo;;\u0026rsquo; 이후에 입력된 문자열을 화면에 출력하는 프로그램을 작성하라. 아래에서 ^Z(ctrl-z) 키는 입력 종료는 나타내는 키이며..\nsobamemil.tistory.com](https://sobamemil.tistory.com/134)\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 11장 6번 (1) 2020.03.27 명품 C++ programming 실습 문제 11장 5번 (3) 2020.03.27 명품 C++ programming 실습 문제 11장 3번 (3) 2020.03.27 명품 C++ programming 실습 문제 11장 2번 (1) 2020.03.27 명품 C++ programming 실습 문제 11장 1번 (1) 2020.03.27 ","permalink":"https://blog.sobamemil.com/posts/135-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-11%EC%9E%A5-4%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e한 줄에 \u0026lsquo;영어문장;한글문자\u0026rsquo; 형식으로 키 입력될 때, cin.ignore()를 이용하여 \u0026lsquo;;\u0026lsquo;이전에 입력된 문자열만 출력하는 프로그램을 작성하라.\u003c/p\u003e\n\u003cp\u003e아래에서 ^Z(ctrl-z) 키는 입력 종료를 나타내는 키이며, cin.get()은 EOF를 리턴한다.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/135/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003ecin.get(), EOF, cin.ignore() 활용\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e코드 :\u003c/strong\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14\u003c/td\u003e\n          \u003ctd\u003e#include \u003ciostream\u003e  using namespace std;    int main() {  int ch;  while( (ch = cin.get()) != EOF ) {  if(ch == \u0026lsquo;;\u0026rsquo;){  cout.put(\u0026rsquo;\\n\u0026rsquo;);  cin.ignore(100, \u0026lsquo;\\n\u0026rsquo;);  }  else  cout.put(ch);  }  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e설명 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 11장 4번"},{"content":"문제 :\n한 줄에 \u0026lsquo;영어문장;한글문자\u0026rsquo; 형식으로 키 입력될 때, cin.ignore()를 이용하여 \u0026lsquo;;\u0026rsquo; 이후에 입력된 문자열을 화면에 출력하는 프로그램을 작성하라.\n아래에서 ^Z(ctrl-z) 키는 입력 종료는 나타내는 키이며, cin.get()은 EOF를 리턴한다.\n실행 결과 :\n목적 및 힌트 :\ncin.get(), EOF, cin.ignore() 활용\n코드 :\n1 2 3 4 5 6 7 8 9 10 11 12 #include using namespace std; int main() { int ch; cin.ignore(100, \u0026lsquo;;\u0026rsquo;); // 영어 문장이 최대 99개의 문자로 입력된다고 가정한다. while((ch=cin.get()) != EOF) { cout.put(ch); if(ch == \u0026lsquo;\\n\u0026rsquo;) cin.ignore(100, \u0026lsquo;;\u0026rsquo;); // 영어 문장이 최대 99개의 문자로 입력된다고 가정한다. } } 설명 :\nignore() 함수를 사용해서 입력 스트림 버퍼에 있는 문자들을 제거할 수 있습니다.\n함수의 원형은 istream\u0026amp; ignore (streamsize n = 1, int delim = EOF); 이고 사용 예는 아래와 같습니다.\n1 2 3 cin.ignore(10); // 입력 스트림에서 10개의 문자 제거 cin.ignore(10, \u0026lsquo;\\n\u0026rsquo;); // 입력 스트림에서 10개의 문자 제거, 제거 도중 \u0026lsquo;\\n\u0026rsquo;을 만나면 \u0026lsquo;\\n\u0026rsquo;을 제거하고 중단 ignore() 함수에 대한 더 자세한 내용은 아래 사이트에서 참고하시면 됩니다.\nhttp://www.cplusplus.com/reference/istream/istream/ignore/?kw=cin.ignore\n[istream::ignore - C++ Reference\npublic member function istream\u0026amp; ignore (streamsize n = 1, int delim = EOF); Extract and discard characters Extracts characters from the input sequence and discards them, until either n characters have been extracted, or one compares eq\nwww.cplusplus.com](http://www.cplusplus.com/reference/istream/istream/ignore/?kw=cin.ignore)\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 11장 5번 (3) 2020.03.27 명품 C++ programming 실습 문제 11장 4번 (1) 2020.03.27 명품 C++ programming 실습 문제 11장 2번 (1) 2020.03.27 명품 C++ programming 실습 문제 11장 1번 (1) 2020.03.27 명품 C++ programming 실습 문제 10장 16번 (1) 2020.03.11 ","permalink":"https://blog.sobamemil.com/posts/134-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-11%EC%9E%A5-3%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e한 줄에 \u0026lsquo;영어문장;한글문자\u0026rsquo; 형식으로 키 입력될 때, cin.ignore()를 이용하여 \u0026lsquo;;\u0026rsquo; 이후에 입력된 문자열을 화면에 출력하는 프로그램을 작성하라.\u003c/p\u003e\n\u003cp\u003e아래에서 ^Z(ctrl-z) 키는 입력 종료는 나타내는 키이며, cin.get()은 EOF를 리턴한다.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/134/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003ecin.get(), EOF, cin.ignore() 활용\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e코드 :\u003c/strong\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12\u003c/td\u003e\n          \u003ctd\u003e#include \u003ciostream\u003e  using namespace std;    int main() {  int ch;  cin.ignore(100, \u0026lsquo;;\u0026rsquo;); // 영어 문장이 최대 99개의 문자로 입력된다고 가정한다.  while((ch=cin.get()) != EOF) {  cout.put(ch);  if(ch == \u0026lsquo;\\n\u0026rsquo;)  cin.ignore(100, \u0026lsquo;;\u0026rsquo;); // 영어 문장이 최대 99개의 문자로 입력된다고 가정한다.  }  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e설명 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 11장 3번"},{"content":"문제 :\nistream\u0026amp; get(char\u0026amp; ch) 함수를 이용하여 한 라인을 읽고 빈칸(\u0026rsquo; \u0026lsquo;)이 몇 개인지 출력하는 프로그램을 작성하라.\n실행 결과 :\n목적 및 힌트 :\ncin으로 키 입력 연습\n코드 :\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #include using namespace std; int main() { char ch; int cnt; while(true){ cin.get(ch); // 키를 ch에 읽어옴 if(cin.eof()) // EOF 문자 즉 ctrl-z 키가 입력된 경우, 읽기 종료 break; if(ch == \u0026lsquo;\\n\u0026rsquo;) // 키가 입력된 경우 읽기 중단 break; else if(ch == \u0026rsquo; \u0026lsquo;) cnt++; } cout \u0026laquo; cnt; } 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 11장 4번 (1) 2020.03.27 명품 C++ programming 실습 문제 11장 3번 (3) 2020.03.27 명품 C++ programming 실습 문제 11장 1번 (1) 2020.03.27 명품 C++ programming 실습 문제 10장 16번 (1) 2020.03.11 명품 C++ programming 실습 문제 10장 15번 (3) 2020.03.11 ","permalink":"https://blog.sobamemil.com/posts/133-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-11%EC%9E%A5-2%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eistream\u0026amp; get(char\u0026amp; ch) 함수를 이용하여 한 라인을 읽고 빈칸(\u0026rsquo; \u0026lsquo;)이 몇 개인지 출력하는 프로그램을 작성하라.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/133/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003ecin으로 키 입력 연습\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e코드 :\u003c/strong\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18\u003c/td\u003e\n          \u003ctd\u003e#include \u003ciostream\u003e  using namespace std;    int main() {  char ch;  int cnt;    while(true){  cin.get(ch); // 키를 ch에 읽어옴  if(cin.eof()) // EOF 문자 즉 ctrl-z 키가 입력된 경우, 읽기 종료  break;  if(ch == \u0026lsquo;\\n\u0026rsquo;) // \u003cEnter\u003e 키가 입력된 경우 읽기 중단  break;  else if(ch == \u0026rsquo; \u0026lsquo;)  cnt++;  }  cout \u0026laquo; cnt;  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e공유하기\u003c/p\u003e","title":"명품 C++ programming 실습 문제 11장 2번"},{"content":"문제 :\nint cin.get() 함수를 이용하여 키보드로부터 한 라인을 읽고 \u0026lsquo;a\u0026rsquo;가 몇 개인지 출력하는 프로그램을 작성하라.\n실행 결과 :\n목적 및 힌트 :\ncin으로 키 입력 연습\n코드 :\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include using namespace std; int main() { int a; int cnt=0; while( (a = cin.get() ) != EOF ){ if(a == \u0026lsquo;a\u0026rsquo;) cnt++; else if(a == \u0026lsquo;\\n\u0026rsquo;) break; } cout \u0026laquo; cnt; } 설명 :\ncin은 C++ 표준 입출력 스트림 객체입니다. 따라서 iostream 헤더 파일은 include 했다면 저절로 cin 객체가 생성되어 바로 사용할 수 있습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 11장 3번 (3) 2020.03.27 명품 C++ programming 실습 문제 11장 2번 (1) 2020.03.27 명품 C++ programming 실습 문제 10장 16번 (1) 2020.03.11 명품 C++ programming 실습 문제 10장 15번 (3) 2020.03.11 명품 C++ programming 실습 문제 10장 14번 (1) 2020.03.11 ","permalink":"https://blog.sobamemil.com/posts/132-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-11%EC%9E%A5-1%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eint cin.get() 함수를 이용하여 키보드로부터 한 라인을 읽고 \u0026lsquo;a\u0026rsquo;가 몇 개인지 출력하는 프로그램을 작성하라.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/132/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003ecin으로 키 입력 연습\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e코드 :\u003c/strong\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14\u003c/td\u003e\n          \u003ctd\u003e#include \u003ciostream\u003e  using namespace std;    int main() {  int a;  int cnt=0;  while( (a = cin.get() ) != EOF ){  if(a == \u0026lsquo;a\u0026rsquo;)  cnt++;  else if(a == \u0026lsquo;\\n\u0026rsquo;)  break;  }  cout \u0026laquo; cnt;  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e설명 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 11장 1번"},{"content":"문제 :\n배열을 이용하여 이원 탐색 트리를 만들고 탐색하는 프로그램을 작성하라.\n입력 : 정렬이 되지 않은 숫자들\n프로그램 :\n2.1 입력된 숫자들을 하나씩 읽으면서 이원 탐색 트리 배열 만들기\n2.2 숫자 하나를 입력하면 이원탐색트리 알고리즘을 적용하여 해당하는 배열의 첨자를 출력하기\n(이 때 출력은 배열 원소들을 차례대로 출력하고 해당하는 배열 첨자를 출력)\n실행 결과 :\n코드 :\n1 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 #include using namespace std; void newBinarySearchTree(int *num_arr, int size, int *new_num_arr) { for(int i=0; i\u0026lt;size+20; i++){ // 이원탐색트리 배열 -1로 초기화 new_num_arr[i] = -1; } new_num_arr[0] = num_arr[0]; for(int i=1; i\u0026lt;size; i++){ int index=0; // 새로 들어올 숫자가 이원탐색트리 배열의 루트보다 작으면 왼쪽으로 이동 if(new_num_arr[0] \u0026gt; num_arr[i]) { for(int j=2*index+1;;) { if(new_num_arr[j] != -1){ //삽입하려는 이원탐색트리 배열공간이 NULL이 아니면 비교 if(new_num_arr[j] \u0026lt; num_arr[i]) j=2*j+2; // 삽입하고자 하는 숫자가 더 크면 2j+2 else if(new_num_arr[j] \u0026gt; num_arr[i]) j=2*j+1; // 삽입하고자 하는 숫자가 더 작으면 2j+1 z else { //같은 숫자가 나오면 오류메시지 출력 후 프로그램 비정상 종료 cout \u0026laquo; \u0026ldquo;same data error\u0026hellip;\\n\u0026rdquo;; exit(1); } } else if(new_num_arr[j] == -1) { // 삽입하려는 이원탐색트리 배열 공간이 NULL이면 바로 삽입 new_num_arr[j] = num_arr[i]; break; } } } // 새로 들어올 숫자가 이원탐색트리 배열의 루트보다 크면 오른쪽으로 이동 else if(new_num_arr[0] \u0026lt; num_arr[i]) { for(int j=2*index+2;;) { if(new_num_arr[j] != -1){ // 삽입하려는 이원탐색트리 배열공간이 NULL이 아니면 비교 if(new_num_arr[j] \u0026lt; num_arr[i]) j=2*j+2; else if(new_num_arr[j] \u0026gt; num_arr[i]) j=2*j+1; else { cout \u0026laquo; \u0026ldquo;same data error\u0026hellip;\\n\u0026rdquo;; exit(1); } } else if(new_num_arr[j] == -1) { new_num_arr[j] = num_arr[i]; break; } } } else continue; } } void find(int *new_num_arr, int size) { int x, flag; cout \u0026laquo; \u0026ldquo;찾고자 하는 숫자 입력 : \u0026ldquo;; cin \u0026raquo; x; for(int i=0; i\u0026lt;size; i++) // 이원탐색트리 배열의 모든 원소 출력 cout \u0026laquo; \u0026ldquo;arr[\u0026rdquo; \u0026laquo; i \u0026laquo; \u0026ldquo;] : \u0026quot; \u0026laquo; new_num_arr[i] \u0026laquo; endl; for(int i=0; i\u0026lt;size; i++){ if(new_num_arr[i] == x) { cout \u0026laquo; \u0026ldquo;index : \u0026quot; \u0026laquo; i; flag = true; break; } else flag = false; } if(!flag) // flag가 false이면 찾고자 하는 숫자가 없다고 출력 cout \u0026laquo; \u0026ldquo;찾고자 하는 숫자 없음\\n\u0026rdquo;; } int main() { int num_arr[] = {50, 40, 55, 30, 45, 54, 53, 1, 60, 301, 2}; int num_arr_size = sizeof(num_arr)/sizeof(num_arr[0]); int *new_num_arr = new int [num_arr_size + 20]; // 이원탐색트리 배열 공간 생성 newBinarySearchTree(num_arr, num_arr_size, new_num_arr); find(new_num_arr, num_arr_size + 20); } 설명 :\n간단하게 구현하기 위해 입력 데이터로 숫자 배열을 만들어 넣어주고, 이원 탐색 트리 배열의 크기도 임의로 적당히 지정했습니다.\n위의 코드의 경우 배열의 크기를 동적으로 할당받지 않았으므로 최악의 입력 데이터가 들어올 경우 오버플로우가 일어날 수 있으니 작성할 때 주의하셔서 수정하시면 됩니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 알고리즘 \u0026amp; 코딩테스트\u0026rsquo; 카테고리의 다른 글 크러스컬 알고리즘 구현 1 (붕괴법칙을 적용하지 않은 방법) (0) 2021.04.09 R 프로그램 다운로드 설치 및 실행 방법 (0) 2020.09.03 크러스컬(Kruskal) 알고리즘 (1) 2020.07.02 합병 정렬(Merge Sort) 알고리즘 (1) 2020.03.18 삽입 정렬(Insertion Sort) 알고리즘 (1) 2020.03.17 ","permalink":"https://blog.sobamemil.com/posts/131-%EC%9D%B4%EC%9B%90-%ED%83%90%EC%83%89-%ED%8A%B8%EB%A6%ACbinary-search-tree-%EB%B0%B0%EC%97%B4-%EB%A7%8C%EB%93%A4%EA%B8%B0/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e배열을 이용하여 이원 탐색 트리를 만들고 탐색하는 프로그램을 작성하라.\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003e입력 : 정렬이 되지 않은 숫자들\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e프로그램 :\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e  2.1 입력된 숫자들을 하나씩 읽으면서 이원 탐색 트리 배열 만들기\u003c/p\u003e\n\u003cp\u003e  2.2 숫자 하나를 입력하면 이원탐색트리 알고리즘을 적용하여 해당하는 배열의 첨자를 출력하기\u003c/p\u003e\n\u003cp\u003e         (이 때 출력은 배열 원소들을 차례대로 출력하고 해당하는 배열 첨자를 출력)\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/131/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e코드 :\u003c/strong\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  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\u003c/td\u003e\n          \u003ctd\u003e#include\u003ciostream\u003e  using namespace std;    void newBinarySearchTree(int *num_arr, int size, int *new_num_arr) {    for(int i=0; i\u0026lt;size+20; i++){ // 이원탐색트리 배열 -1로 초기화  new_num_arr[i] = -1;  }  new_num_arr[0] = num_arr[0];    for(int i=1; i\u0026lt;size; i++){  int index=0;  // 새로 들어올 숫자가 이원탐색트리 배열의 루트보다 작으면 왼쪽으로 이동  if(new_num_arr[0] \u0026gt; num_arr[i]) {  for(int j=2*index+1;;) {  if(new_num_arr[j] != -1){ //삽입하려는 이원탐색트리 배열공간이 NULL이 아니면 비교  if(new_num_arr[j] \u0026lt; num_arr[i]) j=2*j+2; //  삽입하고자 하는 숫자가 더 크면 2j+2  else if(new_num_arr[j] \u0026gt; num_arr[i]) j=2*j+1; // 삽입하고자 하는 숫자가 더 작으면 2j+1  z  else {  //같은 숫자가 나오면 오류메시지 출력 후 프로그램 비정상 종료  cout \u0026laquo; \u0026ldquo;same data error\u0026hellip;\\n\u0026rdquo;; exit(1);  }  }  else if(new_num_arr[j] == -1) { // 삽입하려는 이원탐색트리 배열 공간이 NULL이면 바로 삽입  new_num_arr[j] = num_arr[i];  break;  }  }  }  // 새로 들어올 숫자가 이원탐색트리 배열의 루트보다 크면 오른쪽으로 이동  else if(new_num_arr[0] \u0026lt; num_arr[i]) {  for(int j=2*index+2;;) {  if(new_num_arr[j] != -1){ // 삽입하려는 이원탐색트리 배열공간이 NULL이 아니면 비교  if(new_num_arr[j] \u0026lt; num_arr[i]) j=2*j+2;  else if(new_num_arr[j] \u0026gt; num_arr[i]) j=2*j+1;  else {  cout \u0026laquo; \u0026ldquo;same data error\u0026hellip;\\n\u0026rdquo;; exit(1);  }  }  else if(new_num_arr[j] == -1) {  new_num_arr[j] = num_arr[i];  break;  }  }  }  else continue;  }  }    void find(int *new_num_arr, int size) {  int x, flag;  cout \u0026laquo; \u0026ldquo;찾고자 하는 숫자 입력 : \u0026ldquo;;  cin \u0026raquo;  x;    for(int i=0; i\u0026lt;size; i++) // 이원탐색트리 배열의 모든 원소 출력  cout \u0026laquo; \u0026ldquo;arr[\u0026rdquo; \u0026laquo; i \u0026laquo; \u0026ldquo;] : \u0026quot; \u0026laquo; new_num_arr[i] \u0026laquo; endl;    for(int i=0; i\u0026lt;size; i++){  if(new_num_arr[i] == x) {  cout \u0026laquo; \u0026ldquo;index : \u0026quot; \u0026laquo; i;  flag = true;  break;  }  else  flag = false;  }  if(!flag) // flag가 false이면 찾고자 하는 숫자가 없다고 출력  cout \u0026laquo; \u0026ldquo;찾고자 하는 숫자 없음\\n\u0026rdquo;;  }    int main() {  int num_arr[] = {50, 40, 55, 30, 45, 54, 53, 1, 60, 301, 2};  int num_arr_size = sizeof(num_arr)/sizeof(num_arr[0]);  int *new_num_arr = new int [num_arr_size + 20]; // 이원탐색트리 배열 공간 생성    newBinarySearchTree(num_arr, num_arr_size, new_num_arr);  find(new_num_arr, num_arr_size + 20);  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e설명 :\u003c/strong\u003e\u003c/p\u003e","title":"이원 탐색 트리(Binary Search Tree) 배열 만들기"},{"content":"문제 :\n지금까지의 프로젝트를 참고하여 2 pass assembler를 만들면 됩니다.\n먼저 어셈블러(Assembler)란?\n하드웨어가 직접 이해하여 실행하는 기계어는 일반적으로 비트 열 또는 16진수로 표현되기 때문에 인간이 이해하기 어렵다. 그래서 인간이 이해하기 쉽도록 기계어와 거의 일대일로 대응하는 기호로 표현된 언어로 어셈블러 언어가 있으며, 어셈블러 언어를 기계어로 번역하는 프로그램을 어셈블러, 번역하는 것을 어셈블이라고 합니다.\n어셈블러의 역할을 그림으로 간단하게 나타내 보면 다음과 같습니다.\n이 글에서 구현 할 2 패스 어셈블러의 알고리즘을 보겠습니다.\npass 1 :\npass 2 :\n입력 파일 :\n[input.txt\n0.00MB](https://blog.kakaocdn.net/dna/xUij6/btqCOy7htQe/AAAAAAAAAAAAAAAAAAAAAB_VWkVfA2rInIajg3ZSoMTmT7rJBACuRmMZNSZeb_gJ/input.txt?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8\u0026amp;expires=1788188399\u0026amp;allow_ip=\u0026amp;allow_referer=\u0026amp;signature=NHNwwOKeDH%2BidHDibeoD82XJB5w%3D\u0026amp;attach=1\u0026amp;knm=tfile.txt) 실행 결과 :\n출력 파일 :\n코드 :\n1 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 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 #include\u0026lt;stdio.h\u0026gt; #include\u0026lt;string.h\u0026gt; #include\u0026lt;stdlib.h\u0026gt; #define MAX 100 #define XR 32768 // X 레지스터 더할 값 int pass1(char *bp); int pass2(char *bp, FILE *Sample_o); //int find_optab(); int fprint(int res, FILE *sample_1st); // pass 1의 실행 결과를 파일에 출력하는 함수 struct OPTAB { char name[8]; int len; } optab[] = { {\u0026ldquo;LDA\u0026rdquo;, 00}, {\u0026ldquo;STA\u0026rdquo;, 12}, {\u0026ldquo;TIX\u0026rdquo;, 44}, {\u0026ldquo;STL\u0026rdquo;, 20}, {\u0026ldquo;JSUB\u0026rdquo;, 72}, {\u0026ldquo;COMP\u0026rdquo;, 40}, {\u0026ldquo;JEQ\u0026rdquo;, 48}, {\u0026ldquo;J\u0026rdquo;, 60}, {\u0026ldquo;RSUB\u0026rdquo;, 76}, {\u0026ldquo;BYTE\u0026rdquo;, 1}, {\u0026ldquo;WORD\u0026rdquo;, 3}, {\u0026ldquo;RESW\u0026rdquo;, 3}, {\u0026ldquo;RESB\u0026rdquo;, 1}, {\u0026ldquo;TD\u0026rdquo;, 224}, {\u0026ldquo;RD\u0026rdquo;, 216}, {\u0026ldquo;LDX\u0026rdquo;, 04}, {\u0026ldquo;STCH\u0026rdquo;, 84}, {\u0026ldquo;JLT\u0026rdquo;, 56}, {\u0026ldquo;STX\u0026rdquo;, 16}, {\u0026ldquo;WD\u0026rdquo;, 220}, {\u0026ldquo;LDCH\u0026rdquo;, 80}}; struct TABLE { char lable[10], opcode[10], oprand[10]; int symloc; // lable의 주소 int object; } symtab[MAX]; int p1_start; long locctr=0; // 위치 계수기 LOCCTR long p2_locctr=0; int flag=0; // pass 1 에서 오류판독, loop정지, 이벤트 후 다음 줄 읽어옴 등 여러가지 상황을 알려주는 flag int flag2; // opcode가 OPTAB에 정의된 단어인지 아닌지 알려주는 flag int j=0; // 정상적으로 SYMTAB에 추가된 lable 개수 count int cnt=0; // line number, 한 줄당 5씩 증가 ( 5, 10, 15, 20, \u0026hellip;.. , cnt) int res = 0; // 파일 출력시 loop문 탈출을 위한 flag int flag3 = 0; // space를 파일의 lable에 출력하기 위한 flag int p2_start=0; int l=0, T=10; int a=1, b=11; int main() { int i; FILE *fp; FILE *sample_1st; FILE *sample_o; char buf[80]; char *token; if( (fp = fopen(\u0026ldquo;input.txt\u0026rdquo;, \u0026ldquo;r\u0026rdquo;)) == NULL) { // 입력 소스파일 오픈 printf(\u0026ldquo;input.txt not found\u0026hellip;\\n\u0026rdquo;); exit(1); } if( (sample_1st = fopen(\u0026ldquo;Sample.txt\u0026rdquo;, \u0026ldquo;w+\u0026rdquo;)) == NULL) { // 출력 Sample파일 오픈 printf(\u0026ldquo;Sample.txt not open\u0026hellip;\\n\u0026rdquo;); exit(1); } if( (sample_o = fopen(\u0026ldquo;Sample_o.txt\u0026rdquo;, \u0026ldquo;w+\u0026rdquo;)) == NULL){ // 출력 Sample.o파일 오픈 printf(\u0026ldquo;Sample.txt not open\u0026hellip;\\n\u0026rdquo;); exit(1); } // pass 1 while(fgets(buf, sizeof(buf), fp) != NULL){ flag = pass1(buf); res = fprint(res, sample_1st); if(res == 4) break; } fclose(fp); rewind(sample_1st); // sample_1st의 file pointer를 0(시작점)으로 이동 /* void rewind(FILE *stream); : 파일의 현재 위치를 0(시작점)으로 이동 */ while(fgets(buf, sizeof(buf), sample_1st) != NULL){ // Sample.txt 파일 내용 출력 printf(\u0026quot;%s\u0026quot;,buf); } printf(\u0026quot;\\ntotal length : %X\u0026quot;, locctr); printf(\u0026quot;\\n\\n\u0026quot;); printf(\u0026quot;\\n\u0026mdash;\u0026mdash;\u0026mdash;Symbol Table\u0026mdash;\u0026mdash;\u0026mdash;\\n\\n\u0026quot;); printf(\u0026quot;\\tSymbol\\tValue\\n\\n\u0026quot;); for(i=1; i\u0026lt;MAX; i++){ if(!strlen(symtab[i].lable) \u0026lt; 1 ) printf(\u0026quot;\\t%s\\t%X\\n\u0026quot;,symtab[i].lable, symtab[i].symloc); } printf(\u0026quot;\\n\\n\u0026quot;); // pass 2 rewind(sample_1st); // sample_1st의 file pointer를 0(시작점)으로 이동 printf(\u0026quot;\u0026mdash;\u0026mdash;\u0026mdash;Object Code\u0026mdash;\u0026mdash;\u0026mdash;\\n\\n\u0026quot;); while(fgets(buf, sizeof(buf), sample_1st) != NULL){ // Sample.txt 파일을 한줄씩 읽어옴 flag = pass2(buf, sample_o); if(flag == 1) break; } fclose(sample_1st); fclose(sample_o); return 0; } int pass2(char *bp, FILE *Sample_o){ char test; char *tmp_token; int i,k,n; char *token = strtok(bp, \u0026ldquo;\\t\\n\u0026rdquo;); char tmp_lable[10]; if(token == NULL) // token이 NULL이면 다음 줄 읽어옴 return 0; if(p2_start == 0){ //p2_start가 0이면 실행 for(i=0; i\u0026lt;3; i++){ if(i==2) strcpy(tmp_lable, token); token = strtok(NULL, \u0026ldquo;\\t\\n\u0026rdquo;); } if(!strcmp(token, \u0026ldquo;START\u0026rdquo;)){ printf(\u0026ldquo;H^%s^\u0026quot;,tmp_lable); fprintf(Sample_o, \u0026ldquo;H%s\u0026rdquo;, tmp_lable); token = strtok(NULL, \u0026ldquo;\\t\\n\u0026rdquo;); p2_start = strtoul(token, NULL, 16); p2_locctr = p2_start; printf(\u0026rdquo;%.6X^%.6X\\n\u0026quot;, p2_locctr, locctr); fprintf(Sample_o, \u0026ldquo;%.6X%.6X\\n\u0026rdquo;, p2_locctr, locctr); printf(\u0026ldquo;T^%.6X^\u0026quot;,p2_locctr); fprintf(Sample_o, \u0026ldquo;T%.6X\u0026rdquo;,p2_locctr); printf(\u0026rdquo;%.2X^\u0026quot;,symtab[b].symloc-p2_start); fprintf(Sample_o, \u0026ldquo;%.2X\u0026rdquo;, symtab[b].symloc-p2_start); b += 7; } else return 4; } else { p2_locctr = symtab[a].symloc; a++; for(i=0; i\u0026lt;4; i++){ if(l==10){ printf(\u0026quot;\\n\u0026quot;); fputs(\u0026quot;\\n\u0026quot;,Sample_o); printf(\u0026ldquo;T^\u0026rdquo;); fputs(\u0026ldquo;T\u0026rdquo;,Sample_o); printf(\u0026quot;%.6X^\u0026quot;,p2_locctr); fprintf(Sample_o, \u0026ldquo;%.6X\u0026rdquo;,p2_locctr); printf(\u0026quot;%.2X^\u0026quot;,symtab[b].symloc-p2_locctr); fprintf(Sample_o, \u0026ldquo;%.2X\u0026rdquo;, symtab[b].symloc-p2_locctr); b += 13; l++; } else if(l==18){ p2_locctr = symtab[a+2].symloc; printf(\u0026quot;\\n\u0026quot;); fputs(\u0026quot;\\n\u0026quot;,Sample_o); printf(\u0026ldquo;T^\u0026rdquo;); fputs(\u0026ldquo;T\u0026rdquo;,Sample_o); printf(\u0026quot;%.6X^\u0026quot;,p2_locctr); fprintf(Sample_o, \u0026ldquo;%.6X\u0026rdquo;,p2_locctr); printf(\u0026quot;%.2X^\u0026quot;,symtab[b].symloc-p2_locctr); fprintf(Sample_o, \u0026ldquo;%.2X\u0026rdquo;, symtab[b].symloc-p2_locctr); b += 10; l++; } else if(l==32){ printf(\u0026quot;\\n\u0026quot;); fputs(\u0026quot;\\n\u0026quot;,Sample_o); printf(\u0026ldquo;T^\u0026rdquo;); fputs(\u0026ldquo;T\u0026rdquo;,Sample_o); printf(\u0026quot;%.6X^\u0026quot;,p2_locctr); fprintf(Sample_o, \u0026ldquo;%.6X\u0026rdquo;,p2_locctr); printf(\u0026quot;%.2X^\u0026quot;,symtab[b].symloc-p2_locctr); fprintf(Sample_o, \u0026ldquo;%.2X\u0026rdquo;, symtab[b].symloc-p2_locctr); b += 3; l++; } else if(l==43){ printf(\u0026quot;\\n\u0026quot;); fputs(\u0026quot;\\n\u0026quot;,Sample_o); printf(\u0026ldquo;T^\u0026rdquo;); fputs(\u0026ldquo;T\u0026rdquo;,Sample_o); printf(\u0026quot;%.6X^\u0026quot;,p2_locctr); fprintf(Sample_o, \u0026ldquo;%.6X\u0026rdquo;,p2_locctr); printf(\u0026quot;%.2X^\u0026quot;,symtab[b].symloc-p2_locctr); fprintf(Sample_o, \u0026ldquo;%.2X\u0026rdquo;, symtab[b].symloc-p2_locctr); l++; } switch (i){ case 0: break; case 1: break; case 2: break; case 3: if(!strcmp(token, \u0026ldquo;END\u0026rdquo;)){ printf(\u0026quot;\\nE^\u0026quot;); fputs(\u0026quot;\\nE\u0026quot;,Sample_o); printf(\u0026quot;%.6X\u0026quot;,p1_start); fprintf(Sample_o, \u0026ldquo;%.6X\\n\u0026rdquo;,p1_start); printf(\u0026quot;^\\n\u0026quot;); return 1; } else if(!strcmp(token ,\u0026ldquo;WORD\u0026rdquo;)){ token = strtok(NULL, \u0026ldquo;\\t\\n\u0026rdquo;); printf(\u0026quot;%.6X\u0026quot;, atoi(token)); fprintf(Sample_o, \u0026ldquo;%.6X\u0026rdquo;, atoi(token)); printf(\u0026quot;^\u0026quot;); l++; break; } else if(!strcmp(token ,\u0026ldquo;BYTE\u0026rdquo;)){ token = strtok(NULL, \u0026ldquo;\\t\\n\u0026rdquo;); if(token[0] == \u0026lsquo;X\u0026rsquo;) { // oprand의 첫부분이 X이면 for(k=2; k\u0026lt; strlen(token)-1; k++){ // ex) X\u0026rsquo;F1\u0026rsquo; 이면 X,\u0026rsquo;,\u0026rsquo; 세개를 제외한 길이 printf(\u0026quot;%c\u0026quot;, token[k]); fprintf(Sample_o, \u0026ldquo;%c\u0026rdquo;, token[k]); } printf(\u0026quot;^\u0026quot;); l++; break; } else if(token[0] == \u0026lsquo;C\u0026rsquo;) { // oprand의 첫 부분이 C이면 for(k=2; k\u0026lt; strlen(token)-1; k++){ // ex) C\u0026rsquo;EOF\u0026rsquo; 이면 X,\u0026rsquo;,\u0026rsquo; 세개를 제외한 길이 printf(\u0026quot;%X\u0026quot;, token[k]); fprintf(Sample_o, \u0026ldquo;%X\u0026rdquo;, token[k]); } printf(\u0026quot;^\u0026quot;); l++; break; } } else if(!strcmp(token, \u0026ldquo;RESB\u0026rdquo;) 설명 :\n위에 올려둔 알고리즘을 참고하여 차근차근 작성하시면 될 것 같습니다.\n제가 작성한 코드는 완벽한 코드가 아니므로 2 pass assembler를 만드시는데 참고용으로 사용하세요.\n혹시 더 자세한 설명을 원하시면 아래 링크를 참고하시면 됩니다.\nhttp://genderi.org/unit--2-assembler-design.html\n[Unit- 2 Assembler Design\nThe input to the assembler is a source code written in assembly language (using mnemonics) and the output is the object code. The design of an assembler depends upon the machine architecture as the language used is mnemonic language\ngenderi.org](http://genderi.org/unit--2-assembler-design.html)\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 비영리 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 시스템 \u0026amp; 임베디드\u0026rsquo; 카테고리의 다른 글 ESP32-CAM 오류 : [E][camera.c:1049] camera_probe(): Detected camera not supported. [E][camera.c:1249] esp_camera_init(): Camera probe failed with error 0x20004 (0) 2021.05.09 Cortex-M3 STM32F103R8T6 GPIO 레지스터 종류 (0) 2020.07.08 시스템 프로그래밍 프로젝트 #1 (1) 2020.01.12 시스템 프로그래밍 프로젝트 #2 (1) 2020.01.12 시스템 프로그래밍 프로젝트 #3 (1) 2020.01.12 ","permalink":"https://blog.sobamemil.com/posts/130-%EC%8B%9C%EC%8A%A4%ED%85%9C-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-7-%EC%B5%9C%EC%A2%85-assembler-in-c/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e지금까지의 프로젝트를 참고하여 2 pass assembler를 만들면 됩니다.\u003c/p\u003e\n\u003cp\u003e먼저 어셈블러(Assembler)란?\u003c/p\u003e\n\u003cp\u003e하드웨어가 직접 이해하여 실행하는 기계어는 일반적으로 비트 열 또는 16진수로 표현되기 때문에 인간이 이해하기 어렵다. 그래서 인간이 이해하기 쉽도록 기계어와 거의 일대일로 대응하는 기호로 표현된 언어로 어셈블러 언어가 있으며, 어셈블러 언어를 기계어로 번역하는 프로그램을 어셈블러, 번역하는 것을 어셈블이라고 합니다.\u003c/p\u003e\n\u003cp\u003e어셈블러의 역할을 그림으로 간단하게 나타내 보면 다음과 같습니다.\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/130/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e이 글에서 구현 할 2 패스 어셈블러의 알고리즘을 보겠습니다.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003epass 1 :\u003c/strong\u003e\u003c/p\u003e","title":"시스템 프로그래밍 프로젝트 #7 최종 (Assembler in C)"},{"content":"합병 정렬(Merge Sort)이란?\n분할 정복 알고리즘(=Divide and conquer algorithm 즉, 그대로 해결할 수 없는 문제를 작은 문제로 분할하여 문제를 해결하는 방법이나 알고리즘입니다.)의 하나로 O(n log n)의 시간 복잡도를 가지고 있습니다.\n합병 정렬의 작동 알고리즘은 아래와 같습니다.\n리스트의 길이가 1 이하이면 이미 정렬된 것으로 본다. 그렇지 않은 경우에는 분할(divide) : 정렬되지 않은 리스트를 절반으로 잘라 비슷한 크기의 두 부분 리스트로 나눈다. 정복(conquer) : 각 부분 리스트를 재귀적으로 합병 정렬을 이용해 정렬한다. 결합(combine) : 두 부분 리스트를 다시 하나의 정렬된 리스트로 합병한다. 이때 정렬 결과가 임시배열에 저장된다. 복사(copy) : 임시 배열에 저장된 결과를 원래 배열에 복사한다. 이해가 잘 안간다면 아래 애니메이션을 통해 작동 원리를 쉽게 이해할 수 있습니다.\n합병 정렬의 애니메이션 -Swfung8-\nPseudocode :\n1 2 3 4 5 6 7 //Merge Sort MergeSort() //A[1\u0026hellip;n] 1. If n=1, done // 원소가 1개이면 이미 정렬이 끝난 상태이다. // 그렇지 않으면 A[1]에서 A[n/2]까지, A[n/2]+1에서 A[n]까지 // 분할하여 재귀적으로 정렬한다. 2. Recursively sort A[1\u0026hellip;[n/2]] and A[[n/2]+1\u0026hellip;n] 3. Merge 2 sorted lists // 나누어진 두 부분을 합친다. C 코드 :\n1 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 #include \u0026lt;stdio.h\u0026gt; void TopDownMergeSort(int A[], int B[], int n); void TopDownSplitMerge(int B[], int iBegin, int iEnd, int A[]); void TopDownMerge(int A[], int iBegin, int iMiddle, int iEnd, int B[]); void CopyArray(int A[], int iBegin, int iEnd, int B[]); int i, j, k; // 배열 A[]는 정렬할 배열, 배열 B는 작업할 배열 void TopDownMergeSort(int A[], int B[], int n) { CopyArray(A, 0, n, B); // 배열 A[]를 B[]로 복사 TopDownSplitMerge(B, 0, n, A); // B[]에서 A[]로 데이터 정렬 } // 배열 B[]를 소스로 사용하여 배열 A []를 정렬합니다. void TopDownSplitMerge(int B[], int iBegin, int iEnd, int A[]) { int iMiddle; if(iEnd - iBegin \u0026lt; 2) // 만약 size == 1 return; // 정렬 된 것으로 간주한다. // 1보다 size가 크면 을 반으로 나눈다. iMiddle = (iEnd + iBegin) / 2; // iMiddle = 중간 지점 // 배열 A[]와 B[] 두 배열을 재귀 적으로 정렬 TopDownSplitMerge(A, iBegin, iMiddle, B); // 왼쪽 부분 정렬 TopDownSplitMerge(A, iMiddle, iEnd, B); // 오른쪽 부분 정렬 // 배열 B[]에서의 실행 결과를 배열 A[]로 병합(합병) TopDownMerge(B, iBegin, iMiddle, iEnd, A); } // 배열의 왼쪽 절반은 B[ iBegin:iMiddle-1]. // 배열의 오른쪽 절반은 B[iMiddle:iEnd-1 ]. // 최종적으로 결과는 A[ iBegin:iEnd-1 ]. void TopDownMerge(int B[], int iBegin, int iMiddle, int iEnd, int A[]) { i = iBegin, j = iMiddle; // 왼쪽 또는 오른쪽 부분에 원소가 남아 있을 때까지 for (k = iBegin; k \u0026lt; iEnd; k++) { // 왼쪽 부분 헤드가 존재하고 그것이 오른쪽 부분 헤드보다 작거나 같은 경우 if (i \u0026lt; iMiddle \u0026amp;\u0026amp; (j \u0026gt;= iEnd 실행 결과 :\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 동일조건 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 알고리즘 \u0026amp; 코딩테스트\u0026rsquo; 카테고리의 다른 글 크러스컬 알고리즘 구현 1 (붕괴법칙을 적용하지 않은 방법) (0) 2021.04.09 R 프로그램 다운로드 설치 및 실행 방법 (0) 2020.09.03 크러스컬(Kruskal) 알고리즘 (1) 2020.07.02 이원 탐색 트리(Binary Search Tree) 배열 만들기 (1) 2020.03.19 삽입 정렬(Insertion Sort) 알고리즘 (1) 2020.03.17 ","permalink":"https://blog.sobamemil.com/posts/129-%ED%95%A9%EB%B3%91-%EC%A0%95%EB%A0%ACmerge-sort-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98/","summary":"\u003cp\u003e합병 정렬(Merge Sort)이란?\u003c/p\u003e\n\u003cp\u003e분할 정복 알고리즘(=Divide and conquer algorithm 즉, 그대로 해결할 수 없는 문제를 작은 문제로 분할하여 문제를 해결하는 방법이나 알고리즘입니다.)의 하나로 O(\u003cem\u003en\u003c/em\u003e log \u003cem\u003en\u003c/em\u003e)의 시간 복잡도를 가지고 있습니다.\u003c/p\u003e\n\u003cp\u003e합병 정렬의 작동 알고리즘은 아래와 같습니다.\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e리스트의 길이가 1 이하이면 이미 정렬된 것으로 본다. 그렇지 않은 경우에는\u003c/li\u003e\n\u003cli\u003e분할(divide) : 정렬되지 않은 리스트를 절반으로 잘라 비슷한 크기의 두 부분 리스트로 나눈다.\u003c/li\u003e\n\u003cli\u003e정복(conquer) : 각 부분 리스트를 재귀적으로 합병 정렬을 이용해 정렬한다.\u003c/li\u003e\n\u003cli\u003e결합(combine) : 두 부분 리스트를 다시 하나의 정렬된 리스트로 합병한다. 이때 정렬 결과가 임시배열에 저장된다.\u003c/li\u003e\n\u003cli\u003e복사(copy) : 임시 배열에 저장된 결과를 원래 배열에 복사한다.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e이해가 잘 안간다면 아래 애니메이션을 통해 작동 원리를 쉽게 이해할 수 있습니다.\u003c/p\u003e","title":"합병 정렬(Merge Sort) 알고리즘"},{"content":"삽입 정렬(Insertion Sort)이란?\n자료 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여, 자신의 위치를 찾아 삽입함으로써 정렬을 완성하는 알고리즘입니다.\n삽입 정렬의 시간 복잡도는 O(n2)이며 안정 정렬입니다.\n또한 배열이 길어질수록 효율이 매우 떨어지지만 구현이 간단하다는 장점이 있습니다.\n삽입 정렬의 예\n삽입 정렬의 애니메이션 -Simpsons contributor-\n삽입 정렬 알고리즘을 구현하기 전에 의사코드(Pseudocode)로 먼저 이해를 하고 코드를 작성하는 것이 더 쉽게 작성할 수 있을 것입니다.\nPseudocode :\n1 2 3 4 5 6 7 8 9 //InsertionSort pseudo code InsertionSort(A,n) // sort A[1\u0026hellip;n] for j \u0026lt;- 2 to n do key \u0026lt;- A[j] i \u0026lt;- j-1 while i\u0026gt;0 and A[i]\u0026gt;key do A[i+1] \u0026lt;- A[i] i \u0026lt;- i-1 A[i+1] \u0026lt;- key C****코드 :\n1 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 #include \u0026lt;stdio.h\u0026gt; // 삽입 정렬 (insertion sort) void InsertionSort(int *source, int size){ int i, j, keyValue; for(i=1; i\u0026lt;size; i++){ // 처음에 1번 index의 원소가 key값이 됨 keyValue = source[(j=i)]; // i가 1씩 증가하며 source[(j=i)]를 key값으로 지정 // j는 i보다 하나 작게 설정. // j가 i-1부터 0까지 역순으로 내려감 // key값이 source[j]보다 더 크면 중단 while ( \u0026ndash;j \u0026gt;= 0 \u0026amp;\u0026amp; keyValue \u0026lt; source[j] ) source[j+1] = source[j]; // source[j]를 source[j+1]로 밀어냄 source[j+1] = keyValue; // 알맞은 자리에 key값을 삽입 } } int main() { int intArray[] = {2, 9, 8, 4, 5, 3, 1}; // 정렬할 int 배열 int i; printf(\u0026ldquo;정렬 전 배열 : \u0026ldquo;); for(i=0; i\u0026lt;sizeof(intArray)/sizeof(intArray[0]); i++) // 정렬 전 배열 원소 출력 printf(\u0026quot;%d \u0026ldquo;, intArray[i]); InsertionSort(intArray, sizeof(intArray)/sizeof(intArray[0])); // 삽입 정렬 함수에 배열과 원소의 개수를 넘겨줌 printf(\u0026quot;\\n정렬 후 배열 : \u0026ldquo;); for(i=0; i\u0026lt;sizeof(intArray)/sizeof(intArray[0]); i++) // 정렬 후 배열 원소 출력 printf(\u0026quot;%d \u0026ldquo;, intArray[i]); return 0; } JAVA 코드 :\n1 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 public class insertionSort { // 삽입 정렬 (Insertion Sort) static void InsertionSort(int[] source) { int j, i, keyValue; for(i = 1 ; i \u0026lt; source.length ; i++){ // source의 두번째 원소부터 key 값으로 지정 keyValue = source[(j=i)]; // i가 1씩 증가하며 source[(j=i)]를 key값으로 지정 // j는 i보다 하나 작게 설정. // j가 i-1부터 0까지 역순으로 내려감 // key값이 source[j]보다 더 크면 중단 while( (\u0026ndash;j \u0026gt;= 0) \u0026amp;\u0026amp; ( source[j] \u0026gt; keyValue ) ) source[j+1] = source[j]; // source[j]를 source[j+1]로 밀어냄 source[j + 1] = keyValue; // 알맞은 자리에 key값을 삽입 } } public static void main(String[] args) { int[] intArray = {2, 9, 8, 4, 5, 3, 1}; // 정렬 전 배열 출력 System.out.print(\u0026ldquo;정렬 전 배열 : \u0026ldquo;); for(int i=0; i\u0026lt;intArray.length; i++) System.out.print(intArray[i] + \u0026quot; \u0026ldquo;); InsertionSort(intArray); // 삽입 정렬 함수 호출 // 정렬 후 배열 출력 System.out.print(\u0026quot;\\n정렬 후 배열 : \u0026ldquo;); for(int i=0; i\u0026lt;intArray.length; i++) System.out.print(intArray[i] + \u0026quot; \u0026ldquo;); } } 실행 결과 :\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 동일조건 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 알고리즘 \u0026amp; 코딩테스트\u0026rsquo; 카테고리의 다른 글 크러스컬 알고리즘 구현 1 (붕괴법칙을 적용하지 않은 방법) (0) 2021.04.09 R 프로그램 다운로드 설치 및 실행 방법 (0) 2020.09.03 크러스컬(Kruskal) 알고리즘 (1) 2020.07.02 이원 탐색 트리(Binary Search Tree) 배열 만들기 (1) 2020.03.19 합병 정렬(Merge Sort) 알고리즘 (1) 2020.03.18 ","permalink":"https://blog.sobamemil.com/posts/127-%EC%82%BD%EC%9E%85-%EC%A0%95%EB%A0%ACinsertion-sort-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98/","summary":"\u003cp\u003e삽입 정렬(Insertion Sort)이란?\u003c/p\u003e\n\u003cp\u003e자료 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여, 자신의 위치를 찾아 삽입함으로써 정렬을 완성하는 알고리즘입니다.\u003c/p\u003e\n\u003cp\u003e삽입 정렬의 시간 복잡도는 O(n2)이며 안정 정렬입니다.\u003c/p\u003e\n\u003cp\u003e또한 배열이 길어질수록 효율이 매우 떨어지지만 구현이 간단하다는 장점이 있습니다.\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/127/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e삽입 정렬의 예\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/127/img_2.gif\"\u003e\u003c/p\u003e\n\u003cp\u003e삽입 정렬의 애니메이션       -Simpsons contributor-\u003c/p\u003e\n\u003cp\u003e삽입 정렬 알고리즘을 구현하기 전에 의사코드(Pseudocode)로 먼저 이해를 하고 코드를 작성하는 것이 더 쉽게 작성할 수 있을 것입니다.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003ePseudocode :\u003c/strong\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9\u003c/td\u003e\n          \u003ctd\u003e//InsertionSort pseudo code  InsertionSort(A,n) // sort A[1\u0026hellip;n]  for j \u0026lt;- 2 to n  do key \u0026lt;- A[j]  i \u0026lt;- j-1  while i\u0026gt;0 and A[i]\u0026gt;key  do A[i+1] \u0026lt;- A[i]  i \u0026lt;- i-1  A[i+1] \u0026lt;- key\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003eC****코드 :\u003c/strong\u003e\u003c/p\u003e","title":"삽입 정렬(Insertion Sort) 알고리즘"},{"content":"문제 :\nvector\u0026lt;Shape*\u0026gt; v;를 이용하여 간단한 그래픽 편집기를 콘솔 바탕으로 만들어보자.\n생성된 도형 객체를 v에 삽입하고 관리하라. 9장 실습 문제 10번의 힌트를 참고하라.\nShape과 Circle, Line, Rect 클래스는 다음과 같다.\n2019/11/26 - [C++/명품 C++ programming] - 명품 C++ programming 실습 문제 9장 10번\n[명품 C++ programming 실습 문제 9장 10번\n문제 : 간단한 그래픽 편집기를 콘솔 바탕으로 만들어보자. 그래픽 편집기의 기능은 \u0026ldquo;삽입\u0026rdquo;, \u0026ldquo;삭제\u0026rdquo;, \u0026ldquo;모두보기\u0026rdquo;, \u0026ldquo;종료\u0026rdquo; 의 4가지이고, 실행 과정은 다음과 같다. 목적 및 힌트 : 추상 클래스, 상속 종합 응용 S..\nsobamemil.tistory.com](https://sobamemil.tistory.com/17)\n실행 결과 :\n목적 및 힌트 :\nvector를 활용하는 종합 응용\n코드 :\n1 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 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 #include #include using namespace std; class Shape { protected: virtual void draw() = 0; public: void paint() { draw(); } }; class Circle : public Shape { protected: virtual void draw(){ cout \u0026laquo; \u0026ldquo;Circle\u0026rdquo; \u0026laquo; endl; } }; class Rect : public Shape { protected: virtual void draw() { cout \u0026laquo; \u0026ldquo;Rectangle\u0026rdquo; \u0026laquo; endl; } }; class Line : public Shape { protected: virtual void draw() { cout \u0026laquo; \u0026ldquo;Line\u0026rdquo; \u0026laquo; endl; } }; class UI { public: static int seleteMenu() { int n; cout \u0026laquo; \u0026ldquo;삽입:1, 삭제:2, 모두보기:3, 종료:4 \u0026raquo; \u0026ldquo;; cin \u0026raquo; n; return n; } static int seleteShape() { int n; cout \u0026laquo; \u0026ldquo;선:1, 원:2, 사각형:3 \u0026raquo; \u0026ldquo;; cin \u0026raquo; n; return n; } static int seleteDelIndex() { int n; cout \u0026laquo; \u0026ldquo;삭제하고자 하는 도형의 인덱스 \u0026raquo; \u0026ldquo;; cin \u0026raquo; n; return n; } static void showAll(vector\u0026lt;Shape*\u0026gt; \u0026amp;v, vector\u0026lt;Shape*\u0026gt;::iterator \u0026amp;it) { int i=0; for(it = v.begin();it!=v.end(); it++, i++){ // vector v의 첫 원소부터 끝 원소까지 탐색 및 출력 cout \u0026laquo; i \u0026laquo; \u0026ldquo;: \u0026ldquo;; v.at(i)-\u0026gt;paint(); } } }; class GraphicEditor { vector\u0026lt;Shape*\u0026gt; v; vector\u0026lt;Shape*\u0026gt;::iterator it; public: GraphicEditor() { cout \u0026laquo; \u0026ldquo;그래픽 에디터입니다.\\n\u0026rdquo;; start(); } void start() { while(true){ int n; n = UI::seleteMenu(); switch(n){ case 1: //삽입을 선택한 경우 n = UI::seleteShape(); switch(n){ case 1: //선을 선택한 경우 v.push_back(new Line()); break; case 2: //원을 선택한 경우 v.push_back(new Circle()); break; case 3: //사각형을 선택한 경우 v.push_back(new Rect()); break; default: cout \u0026laquo; \u0026ldquo;잘못 선택하셨습니다.\\n\u0026rdquo;; break; } break; case 2:{ //삭제를 선택한 경우 n = UI::seleteDelIndex(); if(n \u0026gt;= v.size() 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 11장 2번 (1) 2020.03.27 명품 C++ programming 실습 문제 11장 1번 (1) 2020.03.27 명품 C++ programming 실습 문제 10장 15번 (3) 2020.03.11 명품 C++ programming 실습 문제 10장 14번 (1) 2020.03.11 명품 C++ programming 실습 문제 10장 13번 (1) 2020.03.11 ","permalink":"https://blog.sobamemil.com/posts/126-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-10%EC%9E%A5-16%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003evector\u0026lt;Shape*\u0026gt; v;를 이용하여 간단한 그래픽 편집기를 콘솔 바탕으로 만들어보자.\u003c/p\u003e\n\u003cp\u003e생성된 도형 객체를 v에 삽입하고 관리하라. 9장 실습 문제 10번의 힌트를 참고하라.\u003c/p\u003e\n\u003cp\u003eShape과 Circle, Line, Rect 클래스는 다음과 같다.\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/126/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://sobamemil.tistory.com/17\"\u003e2019/11/26 - [C++/명품 C++ programming] - 명품 C++ programming 실습 문제 9장 10번\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e[명품 C++ programming 실습 문제 9장 10번\u003c/p\u003e\n\u003cp\u003e문제 : 간단한 그래픽 편집기를 콘솔 바탕으로 만들어보자. 그래픽 편집기의 기능은 \u0026ldquo;삽입\u0026rdquo;, \u0026ldquo;삭제\u0026rdquo;, \u0026ldquo;모두보기\u0026rdquo;, \u0026ldquo;종료\u0026rdquo; 의 4가지이고, 실행 과정은 다음과 같다. 목적 및 힌트 : 추상 클래스, 상속 종합 응용 S..\u003c/p\u003e","title":"명품 C++ programming 실습 문제 10장 16번"},{"content":"문제 :\nvector를 이용하여 아래 Circle 클래스의 객체를 삽입하고 삭제하는 프로그램을 작성하라.\n삭제 시에는 이름이 같은 모든 원을 삭제한다.\n1 2 3 4 5 6 7 8 9 10 class Circle { string name; // 이름 int radius; // 반지름 public: Circle(int radius, string name) { this-\u0026gt;radius = radius; this-\u0026gt;name = name; } double getArea() { return 3.14*radius*radius; } string getName() { return name; } }; 실행 결과 :\n목적 및 힌트 :\n객체 포인터를 vector에 삽입, 삭제 연습\n코드 :\n1 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 #include using namespace std; class Circle { string name; // 이름 int radius; // 반지름 public: Circle(int radius, string name) { this-\u0026gt;radius = radius; this-\u0026gt;name = name; } double getArea() { return 3.14*radius*radius; } string getName() { return name; } }; int main() { cout \u0026laquo; \u0026ldquo;원을 삽입하고 삭제하는 프로그램입니다.\\n\u0026rdquo;; vector\u0026lt;Circle*\u0026gt; v; while(true){ int num; int radius; string name; cout \u0026laquo; \u0026ldquo;삽입:1, 삭제:2, 모두보기:3, 종료:4 \u0026raquo; \u0026ldquo;; cin \u0026raquo; num; switch (num){ case 1: cout \u0026laquo; \u0026ldquo;생성하고자 하는 원의 반지름과 이름은 \u0026raquo; \u0026ldquo;; cin \u0026raquo; radius \u0026raquo; name; v.push_back(new Circle(radius, name)); break; case 2:{ cout \u0026laquo; \u0026ldquo;삭제하고자 하는 원의 이름은 \u0026raquo; \u0026ldquo;; cin \u0026raquo; name; vector\u0026lt;Circle*\u0026gt;::iterator it = v.begin(); while(it != v.end()){ Circle *p = *it; if(p-\u0026gt;getName() == name){ it = v.erase(it); delete p; } else it++; } break; } case 3:{ vector\u0026lt;Circle*\u0026gt;::iterator it; for(it=v.begin(); it!=v.end(); it++){ Circle *p = *it; cout \u0026laquo; p-\u0026gt;getName() \u0026laquo; endl; } cout \u0026laquo; endl; break; } case 4: return 0; } } } 설명 :\nvector\u0026lt;Circle*\u0026gt; v; 형식으로 벡터를 생성합니다.\nv.erase(it)는 벡터 v에서 it가 가리키는 원소를 삭제하고 난 다음, 벡터 내에 삭제된 다음 지점의 첫 원소에 대한 포인터를 리턴합니다.\n그러므로 원소를 삭제한 후 다음 원소의 주소를 잡으려면 간단히 다음과 같이 하면 됩니다.\n1 it = v.erase(it); 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 11장 1번 (1) 2020.03.27 명품 C++ programming 실습 문제 10장 16번 (1) 2020.03.11 명품 C++ programming 실습 문제 10장 14번 (1) 2020.03.11 명품 C++ programming 실습 문제 10장 13번 (1) 2020.03.11 명품 C++ programming 실습 문제 10장 12번 (3) 2020.03.10 ","permalink":"https://blog.sobamemil.com/posts/125-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-10%EC%9E%A5-15%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003evector를 이용하여 아래 Circle 클래스의 객체를 삽입하고 삭제하는 프로그램을 작성하라.\u003c/p\u003e\n\u003cp\u003e삭제 시에는 이름이 같은 모든 원을 삭제한다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10\u003c/td\u003e\n          \u003ctd\u003eclass Circle {  string name; // 이름  int radius; // 반지름  public:  Circle(int radius, string name) {  this-\u0026gt;radius = radius; this-\u0026gt;name = name;  }  double getArea() { return 3.14*radius*radius; }  string getName() { return name; }  };\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 10장 15번"},{"content":"문제 :\n암호 관리 응용프로그램을 map을 이용하여 작성하라.\n실행 과정은 다음과 같다.\n실행 결과 :\n목적 및 힌트 :\nmap 컨테이너에 삽입 및 조회 응용\n이름과 점수를 쌍으로 저장할 맵 컨테이너로 map\u0026lt;string, string\u0026gt;을 이용하면 됩니다.\n아래 링크에 있는 실습 문제 10장 13번을 참고하세요.\n2020/03/11 - [C++/명품 C++ programming] - 명품 C++ programming 실습 문제 10장 13번\n[명품 C++ programming 실습 문제 10장 13번\n문제 : map 컨테이너를 이용하여 (이름, 성적)을 저장하고 이름으로 성적을 조회하는 점수 관리 프로그램을 만들어라. 이름은 빈칸 없이 입력하는 것을 원칙으로 한다. 실행 결과 : 목적 및 힌트 : map 컨테이너..\nsobamemil.tistory.com](https://sobamemil.tistory.com/123)\n코드 :\n1 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 #include #include using namespace std; void insert(map\u0026lt;string, string\u0026gt; \u0026amp;pwManager){ string name, pw; cout \u0026laquo; \u0026ldquo;이름 암호\u0026raquo; \u0026ldquo;; cin \u0026raquo; name \u0026raquo; pw; pwManager.insert(make_pair(name, pw)); } void checkNamePw(map\u0026lt;string, string\u0026gt; \u0026amp;pwManager){ string name, pw; cout \u0026laquo; \u0026ldquo;이름? \u0026ldquo;; cin \u0026raquo; name; while(true){ cout \u0026laquo; \u0026ldquo;암호? \u0026ldquo;; cin \u0026raquo; pw; if(pwManager[name] == pw){ cout \u0026laquo; \u0026ldquo;통과!!\\n\u0026rdquo;; break; } else cout \u0026laquo; \u0026ldquo;실패~~\\n\u0026rdquo;; // 틀리면 출력 후 다시 암호 질문 } } int main() { map\u0026lt;string, string\u0026gt; pwManager; cout \u0026laquo; \u0026ldquo;***** 암호 관리 프로그램 WHO를 시작합니다 *****\\n\u0026rdquo;; while(true){ cout \u0026laquo; \u0026ldquo;삽입:1, 검사:2, 종료3\u0026raquo; \u0026ldquo;; int n; cin \u0026raquo; n; switch(n){ case 1: insert(pwManager); break; case 2: checkNamePw(pwManager); break; case 3: cout \u0026laquo; \u0026ldquo;프로그램을 종료합니다\u0026hellip;\u0026rdquo;; return 0; } } } 설명 :\n실습 문제 10장 13번 문제와 비슷한 문제입니다.\n참고하여 작성하면 도움이 될 것 같습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 10장 16번 (1) 2020.03.11 명품 C++ programming 실습 문제 10장 15번 (3) 2020.03.11 명품 C++ programming 실습 문제 10장 13번 (1) 2020.03.11 명품 C++ programming 실습 문제 10장 12번 (3) 2020.03.10 명품 C++ programming 실습 문제 10장 11번 (2) 2020.03.10 ","permalink":"https://blog.sobamemil.com/posts/124-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-10%EC%9E%A5-14%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e암호 관리 응용프로그램을 map을 이용하여 작성하라.\u003c/p\u003e\n\u003cp\u003e실행 과정은 다음과 같다.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/124/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003emap 컨테이너에 삽입 및 조회 응용\u003c/p\u003e\n\u003cp\u003e이름과 점수를 쌍으로 저장할 맵 컨테이너로 map\u0026lt;string, string\u0026gt;을 이용하면 됩니다.\u003c/p\u003e\n\u003cp\u003e아래 링크에 있는 실습 문제 10장 13번을 참고하세요.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://sobamemil.tistory.com/123\"\u003e2020/03/11 - [C++/명품 C++ programming] - 명품 C++ programming 실습 문제 10장 13번\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e[명품 C++ programming 실습 문제 10장 13번\u003c/p\u003e\n\u003cp\u003e문제 : map 컨테이너를 이용하여 (이름, 성적)을 저장하고 이름으로 성적을 조회하는 점수 관리 프로그램을 만들어라. 이름은 빈칸 없이 입력하는 것을 원칙으로 한다. 실행 결과 : 목적 및 힌트 : map 컨테이너..\u003c/p\u003e","title":"명품 C++ programming 실습 문제 10장 14번"},{"content":"문제 :\nmap 컨테이너를 이용하여 (이름, 성적)을 저장하고 이름으로 성적을 조회하는 점수 관리 프로그램을 만들어라.\n이름은 빈칸 없이 입력하는 것을 원칙으로 한다.\n실행 결과 :\n목적 및 힌트 :\nmap 컨테이너 활용\n이름과 점수를 쌍으로 저장할 맵 컨테이너로 map\u0026lt;string, int\u0026gt;를 이용하면 된다.\n코드 :\n1 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 #include #include #include using namespace std; int main() { map\u0026lt;string, int\u0026gt; Score; // map 컨테이너 생성. 키는 한글 이름, 값은 정수 점수 cout \u0026laquo; \u0026ldquo;***** 점수관리 프로그램 HIGH SCORE을 시작합니다 *****\\n\u0026rdquo;; while(true){ int num; int score; string name; cout \u0026laquo; \u0026ldquo;입력:1, 조회:2, 종료:3 \u0026raquo; \u0026ldquo;; cin \u0026raquo; num; switch (num){ case 1: cout \u0026laquo; \u0026ldquo;이름과 점수\u0026raquo; \u0026ldquo;; cin \u0026raquo; name \u0026raquo; score; Score.insert(make_pair(name, score)); // map에 저장 break; case 2: cout \u0026laquo; \u0026ldquo;이름 \u0026raquo; \u0026ldquo;; cin \u0026raquo; name; if(Score.find(name) == Score.end()) // name \u0026lsquo;키\u0026rsquo;를 끝까지 찾았는데 없음 cout \u0026laquo; \u0026ldquo;없음\u0026rdquo; \u0026laquo; endl; else cout \u0026laquo; name \u0026laquo; \u0026ldquo;의 점수는 \u0026quot; \u0026laquo;Score[name] \u0026laquo; endl; // Score에서 name의 값을 찾아 출력 break; case 3: cout \u0026laquo; \u0026ldquo;프로그램을 종료합니다\u0026hellip;\\n\u0026rdquo;; return 0; default : cout \u0026laquo; \u0026ldquo;제대로 입력해\\n\u0026rdquo;; break; } } } 설명 :\nmap 컨테이너를 사용하기 위해서는 map 헤더파일을 include 해주어야 합니다.\nmap 컨테이너는 key와 value가 쌍으로 저장되는 컨테이너 입니다.\nkey는 고유한 값이기 때문에 중복으로 저장될 수 없습니다.\nmap에 대한 내용은 아래 링크에서 자세히 설명되어 있습니다.\nhttp://www.cplusplus.com/reference/map/map/\n[map - C++ Reference\ndifference_typea signed integral type, identical to: iterator_traits ::difference_type usually the same as ptrdiff_t\nwww.cplusplus.com](http://www.cplusplus.com/reference/map/map/)\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 10장 15번 (3) 2020.03.11 명품 C++ programming 실습 문제 10장 14번 (1) 2020.03.11 명품 C++ programming 실습 문제 10장 12번 (3) 2020.03.10 명품 C++ programming 실습 문제 10장 11번 (2) 2020.03.10 명품 C++ programming 실습 문제 10장 10번 (1) 2020.03.10 ","permalink":"https://blog.sobamemil.com/posts/123-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-10%EC%9E%A5-13%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003emap 컨테이너를 이용하여 (이름, 성적)을 저장하고 이름으로 성적을 조회하는 점수 관리 프로그램을 만들어라.\u003c/p\u003e\n\u003cp\u003e이름은 빈칸 없이 입력하는 것을 원칙으로 한다.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/123/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003emap 컨테이너 활용\u003c/p\u003e\n\u003cp\u003e이름과 점수를 쌍으로 저장할 맵 컨테이너로 map\u0026lt;string, int\u0026gt;를 이용하면 된다.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e코드 :\u003c/strong\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  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\u003c/td\u003e\n          \u003ctd\u003e#include\u003ciostream\u003e  #include\u003cstring\u003e  #include\u003cmap\u003e  using namespace std;    int main() {  map\u0026lt;string, int\u0026gt; Score; // map 컨테이너 생성. 키는 한글 이름, 값은 정수 점수    cout \u0026laquo; \u0026ldquo;***** 점수관리 프로그램 HIGH SCORE을 시작합니다 *****\\n\u0026rdquo;;  while(true){  int num;  int score;  string name;  cout \u0026laquo; \u0026ldquo;입력:1, 조회:2, 종료:3 \u0026raquo; \u0026ldquo;;  cin \u0026raquo; num;  switch (num){  case 1:  cout \u0026laquo; \u0026ldquo;이름과 점수\u0026raquo; \u0026ldquo;;  cin \u0026raquo; name \u0026raquo; score;  Score.insert(make_pair(name, score)); // map에 저장  break;  case 2:  cout \u0026laquo; \u0026ldquo;이름 \u0026raquo; \u0026ldquo;;  cin \u0026raquo; name;  if(Score.find(name) == Score.end()) // name \u0026lsquo;키\u0026rsquo;를 끝까지 찾았는데 없음  cout \u0026laquo; \u0026ldquo;없음\u0026rdquo; \u0026laquo; endl;  else  cout \u0026laquo; name \u0026laquo; \u0026ldquo;의 점수는 \u0026quot; \u0026laquo;Score[name] \u0026laquo; endl; // Score에서 name의 값을 찾아 출력  break;  case 3:  cout \u0026laquo; \u0026ldquo;프로그램을 종료합니다\u0026hellip;\\n\u0026rdquo;;  return 0;  default :  cout \u0026laquo; \u0026ldquo;제대로 입력해\\n\u0026rdquo;;  break;  }  }  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e설명 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 10장 13번"},{"content":"문제 :\nOpen Challenge를 수정하여 사용자가 어휘를 삽입할 수 있도록 기능을 추가하라.\n실행 결과는 다음과 같다.\n실행 결과 :\n목적 및 힌트 :\nvector 컨테이너의 종합 응용 연습\n랜덤 정수를 방생시키기 위해 다음 두 라인의 코드가 필요하며, 과 를 include 해야 합니다.\n1 2 srand((unsigned)time(0)); // 시작할 때마다, 다른 랜덤수를 발생시키기 위한 seed 설정 int n = rand(); // 0에서 RAND_MAX(32767) 사이의 랜덤한 정수가 n에 발생 코드 :\n1 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 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 #include #include #include #include using namespace std; class Word { string engWord, korWord; public: Word(string engWord=0, string korWord=0){ this-\u0026gt;engWord = engWord; this-\u0026gt;korWord = korWord; } void inputWord(string engWord, string korWord){ this-\u0026gt;engWord = engWord; this-\u0026gt;korWord = korWord; } string getEngWord(){ return engWord; } string getKorWord(){ return korWord; } }; void inputWord(vector \u0026amp;v) { cout \u0026laquo; \u0026ldquo;영어 단어에 exit을 입력하면 입력 끝\\n\u0026rdquo;; string engWord, korWord; while(true){ cout \u0026laquo; \u0026ldquo;영어 \u0026raquo;\u0026quot;; cin \u0026raquo; engWord; if(engWord == \u0026ldquo;exit\u0026rdquo;) break; cout \u0026laquo; \u0026ldquo;한글 \u0026raquo;\u0026quot;; cin \u0026raquo; korWord; v.push_back(Word(engWord, korWord)); } } void gameStart(vector \u0026amp;v) { srand((unsigned)time(0)); int num; cout \u0026laquo; \u0026ldquo;영어 어휘 테스트를 시작합니다. 1~4 외 다른 입력시 종료.\\n\u0026rdquo;; while(true){ int randNum = rand()%v.size(); cout \u0026laquo; v.at(randNum).getEngWord() \u0026laquo; \u0026ldquo;?\\n\u0026rdquo;; string ex[4] = \u0026quot; \u0026ldquo;; int tmp = rand()%4; ex[tmp] = v.at(randNum).getKorWord(); for(int i=0; i\u0026lt;4; i++){ if(tmp == i) continue; while(true){ // 중복되는 숫자가 없게 처리 int numChosen = rand()%v.size(); if(ex[0]!=v.at(numChosen).getKorWord() \u0026amp;\u0026amp; ex[1]!=v.at(numChosen).getKorWord() \u0026amp;\u0026amp; ex[2]!=v.at(numChosen).getKorWord() \u0026amp;\u0026amp; ex[3]!=v.at(numChosen).getKorWord()){ ex[i] = v.at(numChosen).getKorWord(); break; } } } for(int i=0; i\u0026lt;4; i++) cout \u0026laquo; \u0026ldquo;(\u0026rdquo; \u0026laquo; i+1 \u0026laquo; \u0026ldquo;) \u0026quot; \u0026laquo; ex[i] \u0026laquo; \u0026rsquo; \u0026lsquo;; cout \u0026laquo; \u0026ldquo;:\u0026gt;\u0026rdquo;; cin \u0026raquo; num; // 숫자만 입력 if(num == -1 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 10장 14번 (1) 2020.03.11 명품 C++ programming 실습 문제 10장 13번 (1) 2020.03.11 명품 C++ programming 실습 문제 10장 11번 (2) 2020.03.10 명품 C++ programming 실습 문제 10장 10번 (1) 2020.03.10 명품 C++ programming 실습 문제 10장 9번 (1) 2020.03.10 ","permalink":"https://blog.sobamemil.com/posts/122-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-10%EC%9E%A5-12%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eOpen Challenge를 수정하여 사용자가 어휘를 삽입할 수 있도록 기능을 추가하라.\u003c/p\u003e\n\u003cp\u003e실행 결과는 다음과 같다.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/122/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003evector 컨테이너의 종합 응용 연습\u003c/p\u003e\n\u003cp\u003e랜덤 정수를 방생시키기 위해 다음 두 라인의 코드가 필요하며, \u003cctime\u003e과 \u003ccstdlib\u003e를 include 해야 합니다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2\u003c/td\u003e\n          \u003ctd\u003esrand((unsigned)time(0)); // 시작할 때마다, 다른 랜덤수를 발생시키기 위한 seed 설정  int n = rand(); // 0에서 RAND_MAX(32767) 사이의 랜덤한 정수가 n에 발생\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e코드 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 10장 12번"},{"content":"문제 :\n책의 년도, 책이름, 저자 이름을 담은 Book 클래스를 만들고, vector v;로 생성한 벡터를 이용하여 책을 입고하고, 저자와 년도로 검색하는 프로그램을 작성하라.\n실행 결과 :\n목적 및 힌트 :\nvector에 객체의 삽입, 검색 응용 연습\n코드 :\n1 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 #include #include #include using namespace std; class Book{ int year; string b_name; string p_name; public: void set(int year, string b_name, string p_name){ this-\u0026gt;year = year; this-\u0026gt;b_name = b_name; this-\u0026gt;p_name = p_name; } string getP(){ return p_name; } int getY(){ return year; } void show(){ cout \u0026laquo; year \u0026laquo; \u0026ldquo;년도, \u0026quot; \u0026laquo; b_name \u0026laquo; \u0026ldquo;, \u0026quot; \u0026laquo; p_name \u0026laquo; endl; } }; int main() { vector v; Book b; int year; string b_name; string p_name; cout \u0026laquo; \u0026ldquo;입고할 책을 입력하세요. 년도에 -1을 입력하면 입고를 종료합니다.\\n\u0026rdquo;; while(true){ cout \u0026laquo; \u0026ldquo;년도\u0026raquo;\u0026rdquo;; cin \u0026raquo; year; if(year==-1) break; fflush(stdin); cout \u0026laquo; \u0026ldquo;책이름\u0026raquo;\u0026rdquo;; getline(cin, b_name); cout \u0026laquo; \u0026ldquo;저자\u0026raquo;\u0026rdquo;; getline(cin, p_name); b.set(year, b_name, p_name); v.push_back(b); } cout \u0026laquo; \u0026ldquo;총 입고된 책은 \u0026quot; \u0026laquo; v.size() \u0026laquo; \u0026ldquo;권 입니다.\\n\u0026rdquo;; cout \u0026laquo; \u0026ldquo;검색하고자 하는 저자 이름을 입력하세요\u0026raquo;\u0026rdquo;; fflush(stdin); getline(cin, p_name); for(int i=0; i\u0026lt;v.size(); i++){ if(v[i].getP() == p_name) v[i].show(); } cout \u0026laquo; \u0026ldquo;검색하고자 하는 년도를 입력하세요\u0026raquo;\u0026rdquo;; cin \u0026raquo; year; for(int i=0; i\u0026lt;v.size(); i++){ if(v[i].getY() == year) v[i].show(); } } 설명 :\nc 표준 함수인 fflush() 함수의 원형은 다음과 같습니다.\nint fflush( FILE *stream );\nfflush() 함수의 매뉴얼에는 출력 스트림에 대해서만 정의되어 있습니다.\n위 코드에서 사용한 fflush(stdin); 부분은 출력 스트림이 아닌 입력 스트림을 비우기 위해 사용한 것이므로 정의되지 않은 사용 방법입니다.\n따라서 확실히 작동한다고 장담할 수 없고 권장되지 않는 방법입니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 10장 13번 (1) 2020.03.11 명품 C++ programming 실습 문제 10장 12번 (3) 2020.03.10 명품 C++ programming 실습 문제 10장 10번 (1) 2020.03.10 명품 C++ programming 실습 문제 10장 9번 (1) 2020.03.10 명품 C++ programming 실습 문제 10장 8번 (4) 2020.03.09 ","permalink":"https://blog.sobamemil.com/posts/121-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-10%EC%9E%A5-11%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e책의 년도, 책이름, 저자 이름을 담은 Book 클래스를 만들고, vector\u003cBook\u003e v;로 생성한 벡터를 이용하여 책을 입고하고, 저자와 년도로 검색하는 프로그램을 작성하라.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/121/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003evector에 객체의 삽입, 검색 응용 연습\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e코드 :\u003c/strong\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  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\u003c/td\u003e\n          \u003ctd\u003e#include\u003ciostream\u003e  #include\u003cvector\u003e  #include\u003cstring\u003e  using namespace std;    class Book{  int year;  string b_name;  string p_name;  public:  void set(int year, string b_name, string p_name){  this-\u0026gt;year = year; this-\u0026gt;b_name = b_name; this-\u0026gt;p_name = p_name;  }  string getP(){  return p_name;  }  int getY(){  return year;  }  void show(){  cout \u0026laquo; year \u0026laquo; \u0026ldquo;년도, \u0026quot; \u0026laquo; b_name \u0026laquo; \u0026ldquo;, \u0026quot; \u0026laquo; p_name \u0026laquo; endl;  }  };    int main() {  vector\u003cBook\u003e v;  Book b;  int year;  string b_name;  string p_name;    cout \u0026laquo; \u0026ldquo;입고할 책을 입력하세요. 년도에 -1을 입력하면 입고를 종료합니다.\\n\u0026rdquo;;    while(true){  cout \u0026laquo; \u0026ldquo;년도\u0026raquo;\u0026rdquo;;  cin \u0026raquo; year;  if(year==-1)  break;  fflush(stdin);  cout \u0026laquo; \u0026ldquo;책이름\u0026raquo;\u0026rdquo;;  getline(cin, b_name);  cout \u0026laquo; \u0026ldquo;저자\u0026raquo;\u0026rdquo;;  getline(cin, p_name);    b.set(year, b_name, p_name);  v.push_back(b);  }    cout \u0026laquo; \u0026ldquo;총 입고된 책은 \u0026quot; \u0026laquo; v.size() \u0026laquo; \u0026ldquo;권 입니다.\\n\u0026rdquo;;  cout \u0026laquo; \u0026ldquo;검색하고자 하는 저자 이름을 입력하세요\u0026raquo;\u0026rdquo;;  fflush(stdin);  getline(cin, p_name);  for(int i=0; i\u0026lt;v.size(); i++){  if(v[i].getP() == p_name)  v[i].show();  }  cout \u0026laquo; \u0026ldquo;검색하고자 하는 년도를 입력하세요\u0026raquo;\u0026rdquo;;  cin \u0026raquo; year;  for(int i=0; i\u0026lt;v.size(); i++){  if(v[i].getY() == year)  v[i].show();  }  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e설명 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 10장 11번"},{"content":"문제 :\n나라의 수도 맞추기 게임에 vector를 활용해보자. 나라 이름(nation)과 수도(capital) 문자열로 구성된 Nation 클래스를 만들고, vector v;로 생성한 벡터를 이용하여 나라 이름과 수도 이름을 삽입할 수도 있고 랜덤하게 퀴즈를 볼 수도 있다.\n프로그램 내에서 벡터에 Nation 객체를 여러 개 미리 삽입하여 퀴즈를 보도록 하라.\n실행 화면은 다음과 같으며, 저자는 9개 나라의 이름과 수도를 미리 프로그램에서 삽입하였다.\n문자열은 string 클래스를 이용하라.\n실행 결과 :\n목적 및 힌트 :\nvector에 객체의 삽입, 검색 응용 연습\n코드 :\n1 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 82 83 84 85 86 87 88 #include #include using namespace std; class Nation { string nation; string capital; public: Nation(string n=0, string c=0) { nation = n; capital = c; } string getNation(){ return nation; } string getCapital() { return capital; } bool nationCompare(string n) { //나라 이름을 비교하는 함수. if(nation == n) return true; return false; } }; int main() { vector v; v.push_back(Nation(\u0026ldquo;대한민국\u0026rdquo;, \u0026ldquo;서울\u0026rdquo;)); v.push_back(Nation(\u0026ldquo;중국\u0026rdquo;, \u0026ldquo;베이징\u0026rdquo;)); v.push_back(Nation(\u0026ldquo;북한\u0026rdquo;, \u0026ldquo;평양\u0026rdquo;)); v.push_back(Nation(\u0026ldquo;미국\u0026rdquo;, \u0026ldquo;와싱턴\u0026rdquo;)); v.push_back(Nation(\u0026ldquo;대만\u0026rdquo;, \u0026ldquo;타이베이\u0026rdquo;)); v.push_back(Nation(\u0026ldquo;캐나다\u0026rdquo;, \u0026ldquo;오타와\u0026rdquo;)); v.push_back(Nation(\u0026ldquo;스위스\u0026rdquo;, \u0026ldquo;제네바\u0026rdquo;)); v.push_back(Nation(\u0026ldquo;프랑스\u0026rdquo;, \u0026ldquo;파리\u0026rdquo;)); v.push_back(Nation(\u0026ldquo;이집트\u0026rdquo;, \u0026ldquo;카이로\u0026rdquo;)); cout \u0026laquo; \u0026ldquo;***** 나라의 수도 맞추기 게임을 시작합니다. *****\\n\u0026rdquo;; while(true){ int num; cout \u0026laquo; \u0026ldquo;정보 입력: 1, 퀴즈: 2, 종료 3 \u0026raquo; \u0026ldquo;; cin \u0026raquo; num; switch(num){ case 1: cout \u0026laquo; \u0026ldquo;현재 \u0026quot; \u0026laquo; v.size() \u0026laquo; \u0026ldquo;개의 나라가 입력되어 있습니다.\\n\u0026rdquo;; cout \u0026laquo; \u0026ldquo;나라와 수도를 입력하세요(no no 이면 입력끝)\\n\u0026rdquo;; for(int i=v.size()+1;; i++){ string n, c; bool b; cout \u0026laquo; i \u0026laquo; \u0026ldquo;\u0026raquo;\u0026rdquo;; cin \u0026raquo; n \u0026raquo; c; if(n==\u0026ldquo;no\u0026rdquo; \u0026amp;\u0026amp; c==\u0026ldquo;no\u0026rdquo;) break; for(int j=0; j\u0026lt;v.size(); j++) if(b=v.at(j).nationCompare(n)){ cout \u0026laquo; \u0026ldquo;already exists !!\\n\u0026rdquo;; i\u0026ndash;; break; } if(b) continue; v.push_back(Nation(n, c)); // 정상적인 입력 값이면 vector v에 입력 } break; case 2: int random; while(true){ string c; random = rand() % v.size(); // v에 들어있는 원소의 개수보다 작은 숫자를 얻음 cout \u0026laquo; v.at(random).getNation() \u0026laquo; \u0026ldquo;의 수도는?\u0026rdquo;; cin \u0026raquo; c; if(c == \u0026ldquo;exit\u0026rdquo;) break; else if(v.at(random).getCapital() == c) // 입력받은 수도가 맞으면 Correct 출력 cout \u0026laquo; \u0026ldquo;Correct !!\\n\u0026rdquo;; else cout \u0026laquo; \u0026ldquo;No !!\\n\u0026rdquo;; } break; case 3: return 0; } } } 설명 :\n코드가 그렇게 길지 않고 어렵지 않기 때문에 별 다른 함수를 사용하지 않고 main() 함수에서만 작성 하였습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 10장 12번 (3) 2020.03.10 명품 C++ programming 실습 문제 10장 11번 (2) 2020.03.10 명품 C++ programming 실습 문제 10장 9번 (1) 2020.03.10 명품 C++ programming 실습 문제 10장 8번 (4) 2020.03.09 명품 C++ programming 실습 문제 10장 7번 (1) 2020.03.09 ","permalink":"https://blog.sobamemil.com/posts/120-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-10%EC%9E%A5-10%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e나라의 수도 맞추기 게임에 vector를 활용해보자. 나라 이름(nation)과 수도(capital) 문자열로 구성된 Nation 클래스를 만들고, vector\u003cNation\u003e v;로 생성한 벡터를 이용하여 나라 이름과 수도 이름을 삽입할 수도 있고 랜덤하게 퀴즈를 볼 수도 있다.\u003c/p\u003e\n\u003cp\u003e프로그램 내에서 벡터에 Nation 객체를 여러 개 미리 삽입하여 퀴즈를 보도록 하라.\u003c/p\u003e\n\u003cp\u003e실행 화면은 다음과 같으며, 저자는 9개 나라의 이름과 수도를 미리 프로그램에서 삽입하였다.\u003c/p\u003e\n\u003cp\u003e문자열은 string 클래스를 이용하라.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/120/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003evector에 객체의 삽입, 검색 응용 연습\u003c/p\u003e","title":"명품 C++ programming 실습 문제 10장 10번"},{"content":"문제 :\nSTL의 vector 클래스를 이용하는 간단한 프로그램을 작성해보자. vector 객체를 생성하고, 키보드로부터 정수를 입력받을 때마다 정수를 벡터에 삽입하고 지금까지 입력된 수와 평균을 출력한느 프로그램을 작성하라.\n0을 입력하면 프로그램이 종료된다.\n실행 결과 :\n목적 및 힌트 :\nvector 컨테이너 활용 연습\n정수만 다루는 벡터이므로 vector v;를 이용하면 된다. iterator를 사용할 필요는 없다.\n코드 :\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #include #include using namespace std; int main() { vector v; double sum=0; while(true){ int tmp; cout \u0026laquo; \u0026ldquo;정수를 입력하세요(0을 입력하면 종료)\u0026raquo;\u0026rdquo;; cin \u0026raquo; tmp; if(!tmp) break; //입력한 정수가 0이면 종료 v.push_back(tmp); // 입력한 정수가 0이 아니면 v에 삽입 for(int i=0; i\u0026lt;v.size(); i++) // vector v의 모든 원소 출력 cout \u0026laquo; v.at(i) \u0026laquo; \u0026rsquo; \u0026lsquo;; cout \u0026laquo; endl; sum += tmp; cout \u0026laquo; \u0026ldquo;평균 = \u0026quot; \u0026laquo; sum/v.size() \u0026laquo; endl; } } 설명 :\nvector 클래스의 size() 멤버 함수를 사용하면 원소의 개수를 알 수 있습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 10장 11번 (2) 2020.03.10 명품 C++ programming 실습 문제 10장 10번 (1) 2020.03.10 명품 C++ programming 실습 문제 10장 8번 (4) 2020.03.09 명품 C++ programming 실습 문제 10장 7번 (1) 2020.03.09 명품 C++ programming 실습 문제 10장 6번 (1) 2020.03.09 ","permalink":"https://blog.sobamemil.com/posts/119-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-10%EC%9E%A5-9%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eSTL의 vector 클래스를 이용하는 간단한 프로그램을 작성해보자. vector 객체를 생성하고, 키보드로부터 정수를 입력받을 때마다 정수를 벡터에 삽입하고 지금까지 입력된 수와 평균을 출력한느 프로그램을 작성하라.\u003c/p\u003e\n\u003cp\u003e0을 입력하면 프로그램이 종료된다.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/119/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003evector 컨테이너 활용 연습\u003c/p\u003e\n\u003cp\u003e정수만 다루는 벡터이므로 vector\u003cint\u003e v;를 이용하면 된다. iterator를 사용할 필요는 없다.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e코드 :\u003c/strong\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20\u003c/td\u003e\n          \u003ctd\u003e#include \u003ciostream\u003e  #include \u003cvector\u003e  using namespace std;    int main() {  vector\u003cint\u003e v;  double sum=0;  while(true){  int tmp;  cout \u0026laquo; \u0026ldquo;정수를 입력하세요(0을 입력하면 종료)\u0026raquo;\u0026rdquo;;  cin \u0026raquo; tmp;  if(!tmp) break; //입력한 정수가 0이면 종료  v.push_back(tmp); // 입력한 정수가 0이 아니면 v에 삽입  for(int i=0; i\u0026lt;v.size(); i++) // vector v의 모든 원소 출력  cout \u0026laquo; v.at(i) \u0026laquo; \u0026rsquo; \u0026lsquo;;  cout \u0026laquo; endl;  sum += tmp;  cout \u0026laquo; \u0026ldquo;평균 = \u0026quot; \u0026laquo; sum/v.size() \u0026laquo; endl;  }  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e설명 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 10장 9번"},{"content":"문제 :\n문제 7을 푸는 다른 방법을 소개한다.\nbigger() 함수의 다음 라인에서 \u0026gt; 연산자 때문에\n1 if(a \u0026gt; b) return a; T에 Circle과 같은 클래스 타입이 대입되면, 구체화가 실패하여 컴파일 오류가 발생한다.\n이 문제를 해결하기 위해 다음과 같은 추상 클래스 Comparable을 제안한다.\n1 2 3 4 5 6 class Comparable { public: virtual bool operator \u0026gt; (Comparable\u0026amp; op2) = 0; // 순수 가상 함수 virtual bool operator \u0026lt; (Comparable\u0026amp; op2) = 0; // 순수 가상 함수 virtual bool operator == (Comparable\u0026amp; op2) = 0; // 순수 가상 함수 }; Circle 클래스가 Comparable을 상속받아 순수 가상 함수를 모두 구현하면, 앞의 bigger() 템플릿 함수를 사용하는데 아무 문제가 없다.\nCircle뿐 아니라, Comparable을 상속받은 모든 클래스를 bigger()에 사용할 수 있다.\nComparable을 상속받은 Circle 클래스를 완성하고 문제 7의 main()을 실행하여 테스트 하라.\n2020/03/09 - [C++/명품 C++ programming] - 명품 C++ programming 실습 문제 10장 7번\n[명품 C++ programming 실습 문제 10장 7번\n문제 : 다음 프로그램은 컴파일 오류가 발생한다. 소스의 어디에서 왜 컴파일 오류가 발생하는가? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #include using namespace std; cl..\nsobamemil.tistory.com](https://sobamemil.tistory.com/117)\n실행 결과 :\n목적 및 힌트 :\n템플릿 함수 작성시 상속과 연산자 중복의 필요성 이해\n코드 :\n1 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 #include using namespace std; class Comparable { public: virtual bool operator \u0026gt; (Comparable\u0026amp; op2) = 0; // 순수 가상 함수 virtual bool operator \u0026lt; (Comparable\u0026amp; op2) = 0; // 순수 가상 함수 virtual bool operator == (Comparable\u0026amp; op2) = 0; // 순수 가상 함수 }; class Circle : public Comparable { int radius; public: Circle(int radius = 1) { this-\u0026gt;radius = radius; } int getRadius() { return radius; } bool operator \u0026gt; (Comparable\u0026amp; op2) { Circle *c; c = (Circle*) \u0026amp;op2; if(this-\u0026gt;radius \u0026gt; c-\u0026gt;getRadius()) return true; return false; } bool operator \u0026lt; (Comparable\u0026amp; op2) { Circle *c; c = (Circle*) \u0026amp;op2; if(this-\u0026gt;radius \u0026lt; c-\u0026gt;getRadius()) return true; return false; } bool operator == (Comparable\u0026amp; op2) { Circle *c; c = (Circle*) \u0026amp;op2; if(this-\u0026gt;radius == c-\u0026gt;getRadius()) return true; return false; } }; template \u0026lt;class T\u0026gt; T bigger(T a, T b) { // 두 개의 매개 변수를 비교하여 큰 값을 리턴 if (a \u0026gt; b) return a; else return b; } int main() { int a = 20, b = 50, c; c = bigger(a, b); cout \u0026laquo; \u0026ldquo;20과 50중 큰 값은 \u0026quot; \u0026laquo; c \u0026laquo; endl; Circle waffle(10), pizza(20), y; y = bigger(waffle, pizza); cout \u0026laquo; \u0026ldquo;waffle과 pizza 중 큰 것의 반지름은 \u0026quot; \u0026laquo; y.getRadius() \u0026laquo; endl; } 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 10장 10번 (1) 2020.03.10 명품 C++ programming 실습 문제 10장 9번 (1) 2020.03.10 명품 C++ programming 실습 문제 10장 7번 (1) 2020.03.09 명품 C++ programming 실습 문제 10장 6번 (1) 2020.03.09 명품 C++ programming 실습 문제 10장 5번 (1) 2020.03.09 ","permalink":"https://blog.sobamemil.com/posts/118-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-10%EC%9E%A5-8%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e문제 7을 푸는 다른 방법을 소개한다.\u003c/p\u003e\n\u003cp\u003ebigger() 함수의 다음 라인에서 \u0026gt; 연산자 때문에\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1\u003c/td\u003e\n          \u003ctd\u003eif(a \u0026gt; b) return a;\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eT에 Circle과 같은 클래스 타입이 대입되면, 구체화가 실패하여 컴파일 오류가 발생한다.\u003c/p\u003e\n\u003cp\u003e이 문제를 해결하기 위해 다음과 같은 추상 클래스 Comparable을 제안한다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6\u003c/td\u003e\n          \u003ctd\u003eclass Comparable {  public:  virtual bool operator \u0026gt; (Comparable\u0026amp; op2) = 0; // 순수 가상 함수  virtual bool operator \u0026lt; (Comparable\u0026amp; op2) = 0; // 순수 가상 함수  virtual bool operator == (Comparable\u0026amp; op2) = 0; // 순수 가상 함수  };\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eCircle 클래스가 Comparable을 상속받아 순수 가상 함수를 모두 구현하면, 앞의 bigger() 템플릿 함수를 사용하는데 아무 문제가 없다.\u003c/p\u003e","title":"명품 C++ programming 실습 문제 10장 8번"},{"content":"문제 :\n다음 프로그램은 컴파일 오류가 발생한다. 소스의 어디에서 왜 컴파일 오류가 발생하는가?\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #include using namespace std; class Circle { int radius; public: Circle(int radius = 1) { this-\u0026gt;radius = radius; } int getRadius() { return radius; } }; template \u0026lt;class T\u0026gt; T bigger(T a, T b) { // 두 개의 매개 변수를 비교하여 큰 값을 리턴 if (a \u0026gt; b) return a; else return b; } int main() { int a = 20, b = 50, c; c = bigger(a, b); cout \u0026laquo; \u0026ldquo;20과 50중 큰 값은 \u0026quot; \u0026laquo; c \u0026laquo; endl; Circle waffle(10), pizza(20), y; y = bigger(waffle, pizza); cout \u0026laquo; \u0026ldquo;waffle과 pizza 중 큰 것의 반지름은 \u0026quot; \u0026laquo; y.getRadius() \u0026laquo; endl; } 실행 결과 :\n목적 및 힌트 :\n템플릿 함수의 구체화의 실패 이해\n코드 :\n1 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 #include using namespace std; class Circle { int radius; public: Circle(int radius = 1) { this-\u0026gt;radius = radius; } int getRadius() { return radius; } }; Circle bigger(Circle a, Circle b){ if(a.getRadius() \u0026gt; b.getRadius()) return a; return b; } template \u0026lt;class T\u0026gt; T bigger(T a, T b) { // 두 개의 매개 변수를 비교하여 큰 값을 리턴 if (a \u0026gt; b) return a; else return b; } int main() { int a = 20, b = 50, c; c = bigger(a, b); cout \u0026laquo; \u0026ldquo;20과 50중 큰 값은 \u0026quot; \u0026laquo; c \u0026laquo; endl; Circle waffle(10), pizza(20), y; y = bigger(waffle, pizza); cout \u0026laquo; \u0026ldquo;waffle과 pizza 중 큰 것의 반지름은 \u0026quot; \u0026laquo; y.getRadius() \u0026laquo; endl; } 설명 :\n전체 코드 28번 줄에 있는 y = bigger(waffle, pizza);를 호출 시에 19번 줄에 있는 if(a\u0026gt;b) return a; 부분에서 오류가 발생합니다.\nCircle과 같은 클래스는 \u0026gt; 연산자가 구현되어 있지 않기 때문에 구체화에 실패하기 때문입니다.\n따라서 Circle 타입의 중복 함수를 작성하여 주면 bigger(waffle, pizza); 호출 시 템플릿 함수보다 중복 함수가 우선이기 때문에 템플릿 함수가 아닌 Circle 객체를 리턴하는 중복 함수가 호출됩니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 10장 9번 (1) 2020.03.10 명품 C++ programming 실습 문제 10장 8번 (4) 2020.03.09 명품 C++ programming 실습 문제 10장 6번 (1) 2020.03.09 명품 C++ programming 실습 문제 10장 5번 (1) 2020.03.09 명품 C++ programming 실습 문제 10장 4번 (1) 2020.03.09 ","permalink":"https://blog.sobamemil.com/posts/117-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-10%EC%9E%A5-7%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e다음 프로그램은 컴파일 오류가 발생한다. 소스의 어디에서 왜 컴파일 오류가 발생하는가?\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24\u003c/td\u003e\n          \u003ctd\u003e#include \u003ciostream\u003e  using namespace std;    class Circle {  int radius;  public:  Circle(int radius = 1) { this-\u0026gt;radius = radius; }  int getRadius() { return radius; }  };    template \u0026lt;class T\u0026gt;  T bigger(T a, T b) { // 두 개의 매개 변수를 비교하여 큰 값을 리턴  if (a \u0026gt; b) return a;  else return b;  }    int main() {  int a = 20, b = 50, c;  c = bigger(a, b);  cout \u0026laquo; \u0026ldquo;20과 50중 큰 값은 \u0026quot; \u0026laquo; c \u0026laquo; endl;  Circle waffle(10), pizza(20), y;  y = bigger(waffle, pizza);  cout \u0026laquo; \u0026ldquo;waffle과 pizza 중 큰 것의 반지름은 \u0026quot; \u0026laquo; y.getRadius() \u0026laquo; endl;  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 10장 7번"},{"content":"문제 :\n다음 함수는 매개 변수로 주어진 int 배열 src에서 배열 minus에 들어있는 같은 정수를 모두 삭제한 새로운 int 배열을 동적으로 할당받아 리턴한다.\nretSize는 remove() 함수의 실행 결과를 리턴하는 배열의 크기를 전달받는다.\n1 int * remove(int src[], int sizeSrc, int minus[], int sizeMinus, int\u0026amp; resSize); 템플릿을 이용하여 remove를 일반화하라.\n실행 결과 :\n목적 및 힌트 :\n함수의 일반화에 대한 이해, 템플릿 함수 만들기\n코드 :\n1 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 #include using namespace std; template \u0026lt;class T\u0026gt; T* remove(T src[], int sizeSrc, T minus[], int sizeMinus, int \u0026amp; retsize){ int j; T* tmpArray = new T[sizeSrc]; for(int i=0; i\u0026lt;sizeSrc; i++){ for(j=0; j\u0026lt;sizeMinus; j++){ if(src[i] == minus[j]){ // src의 원소와 minus의 원소가 같으면 j의 값을 하나 내린 후 break \u0026ndash;j; break; } } if(j==sizeMinus){ // j==sizeMinus 라는건 src와 minus에 같은 원소가 없어 중간에 break 되지 않은 경우 tmpArray[retsize] = src[i]; // src[i]를 동적 할당 하여 생성한 tmpArray에 삽입 retsize++; // return 할 size의 값을 하나 올려줌 } } return tmpArray; } int main() { int a[] = { 1,2,3,4,5,6,7,8,9,10 }; int b[] = { 5,6,7,8,9 }; int size=0; int *p = remove(a, 10, b,5, size); for (int i = 0; i \u0026lt; size; ++i) cout \u0026laquo; p[i] \u0026laquo; \u0026rsquo; \u0026lsquo;; cout \u0026laquo; endl; delete[] p; size = 0; char c[] = { \u0026lsquo;a\u0026rsquo;,\u0026lsquo;b\u0026rsquo;,\u0026lsquo;i\u0026rsquo;,\u0026rsquo;m\u0026rsquo;,\u0026lsquo;c\u0026rsquo;,\u0026rsquo;d\u0026rsquo;,\u0026rsquo;e\u0026rsquo;,}; char d[] = { \u0026lsquo;k\u0026rsquo;,\u0026lsquo;i\u0026rsquo;,\u0026rsquo;m\u0026rsquo;,\u0026rsquo;n\u0026rsquo;,\u0026lsquo;u\u0026rsquo; }; char *q = remove(c, 7, d, 5,size); for (int i = 0; i \u0026lt; size; ++i) cout \u0026laquo; q[i] \u0026laquo; \u0026rsquo; \u0026lsquo;; cout \u0026laquo; endl; delete[] q; } 설명 :\nsrc[]의 값과 minus[]의 값을 2중 for문을 이용하여 비교 및 삭제 하였습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 10장 8번 (4) 2020.03.09 명품 C++ programming 실습 문제 10장 7번 (1) 2020.03.09 명품 C++ programming 실습 문제 10장 5번 (1) 2020.03.09 명품 C++ programming 실습 문제 10장 4번 (1) 2020.03.09 명품 C++ programming 실습 문제 10장 3번 (1) 2020.03.09 ","permalink":"https://blog.sobamemil.com/posts/116-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-10%EC%9E%A5-6%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e다음 함수는 매개 변수로 주어진 int 배열 src에서 배열 minus에 들어있는 같은 정수를 모두 삭제한 새로운 int 배열을 동적으로 할당받아 리턴한다.\u003c/p\u003e\n\u003cp\u003eretSize는 remove() 함수의 실행 결과를 리턴하는 배열의 크기를 전달받는다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1\u003c/td\u003e\n          \u003ctd\u003eint * remove(int src[], int sizeSrc, int minus[], int sizeMinus, int\u0026amp; resSize);\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e템플릿을 이용하여 remove를 일반화하라.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/116/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e함수의 일반화에 대한 이해, 템플릿 함수 만들기\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e코드 :\u003c/strong\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  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\u003c/td\u003e\n          \u003ctd\u003e#include \u003ciostream\u003e  using namespace std;    template \u0026lt;class T\u0026gt;  T* remove(T src[], int sizeSrc, T minus[], int sizeMinus, int \u0026amp; retsize){  int j;  T* tmpArray = new T[sizeSrc];  for(int i=0; i\u0026lt;sizeSrc; i++){  for(j=0; j\u0026lt;sizeMinus; j++){  if(src[i] == minus[j]){ // src의 원소와 minus의 원소가 같으면 j의 값을 하나 내린 후 break  \u0026ndash;j;  break;  }  }  if(j==sizeMinus){ // j==sizeMinus 라는건 src와 minus에 같은 원소가 없어 중간에 break 되지 않은 경우  tmpArray[retsize] = src[i]; // src[i]를 동적 할당 하여 생성한 tmpArray에 삽입  retsize++; // return 할 size의 값을 하나 올려줌  }  }  return tmpArray;  }    int main() {  int a[] = { 1,2,3,4,5,6,7,8,9,10 };  int b[] = { 5,6,7,8,9 };  int size=0;  int *p = remove(a, 10, b,5, size);  for (int i = 0; i \u0026lt; size; ++i)  cout \u0026laquo; p[i] \u0026laquo; \u0026rsquo; \u0026lsquo;;  cout \u0026laquo; endl;  delete[] p;  size = 0;  char c[] = { \u0026lsquo;a\u0026rsquo;,\u0026lsquo;b\u0026rsquo;,\u0026lsquo;i\u0026rsquo;,\u0026rsquo;m\u0026rsquo;,\u0026lsquo;c\u0026rsquo;,\u0026rsquo;d\u0026rsquo;,\u0026rsquo;e\u0026rsquo;,};  char d[] = { \u0026lsquo;k\u0026rsquo;,\u0026lsquo;i\u0026rsquo;,\u0026rsquo;m\u0026rsquo;,\u0026rsquo;n\u0026rsquo;,\u0026lsquo;u\u0026rsquo; };  char *q = remove(c, 7, d, 5,size);  for (int i = 0; i \u0026lt; size; ++i)  cout \u0026laquo; q[i] \u0026laquo; \u0026rsquo; \u0026lsquo;;  cout \u0026laquo; endl;  delete[] q;    }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e설명 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 10장 6번"},{"content":"문제 :\n다음 함수는 매개 변수로 주어진 두 개의 int 배열을 연결한 새로운 int 배열을 동적 할당받아 리턴한다.\n1 int * concat(int a[], int sizea, int b[], int sizeb); concat가 int 배열뿐 아니라 다른 타입의 배열도 처리할 수 있도록 일반화하라.\n실행 결과 :\n목적 및 힌트 :\n함수의 힐반화에 대한 이해, 템플릿 함수 만들기\n코드 :\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #include using namespace std; template \u0026lt;class T\u0026gt; T* concat(T a[], int sizea, T b[], int sizeb){ T *rArray = new T[sizea + sizeb]; // return 할 배열을 동적생성 for(int i=0; i\u0026lt;sizea+sizeb; i++){ if(i\u0026lt;sizea) rArray[i] = a[i]; else rArray[i] = b[i-sizea]; } return rArray; } int main() { int x[] = { 1, 10, 100, 5, 4 }; int y[] = { 7, 6, 10, 9 }; int *a = concat(x, 5, y, 4); int aSize = sizeof(x)/sizeof(x[0]) + sizeof(y)/sizeof(y[0]); // a에 들어있는 원소의 개수 for (int i = 0; i\u0026lt;aSize; i++) cout \u0026laquo; a[i] \u0026laquo; \u0026rsquo; \u0026lsquo;; } 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 10장 7번 (1) 2020.03.09 명품 C++ programming 실습 문제 10장 6번 (1) 2020.03.09 명품 C++ programming 실습 문제 10장 4번 (1) 2020.03.09 명품 C++ programming 실습 문제 10장 3번 (1) 2020.03.09 명품 C++ programming 실습 문제 10장 2번 (1) 2020.03.09 ","permalink":"https://blog.sobamemil.com/posts/115-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-10%EC%9E%A5-5%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e다음 함수는 매개 변수로 주어진 두 개의 int 배열을 연결한 새로운 int 배열을 동적 할당받아 리턴한다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1\u003c/td\u003e\n          \u003ctd\u003eint * concat(int a[], int sizea, int b[], int sizeb);\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003econcat가 int 배열뿐 아니라 다른 타입의 배열도 처리할 수 있도록 일반화하라.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/115/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e함수의 힐반화에 대한 이해, 템플릿 함수 만들기\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e코드 :\u003c/strong\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24\u003c/td\u003e\n          \u003ctd\u003e#include \u003ciostream\u003e  using namespace std;    template \u0026lt;class T\u0026gt;  T* concat(T a[], int sizea, T b[], int sizeb){  T *rArray = new T[sizea + sizeb]; // return 할 배열을 동적생성  for(int i=0; i\u0026lt;sizea+sizeb; i++){  if(i\u0026lt;sizea)  rArray[i] = a[i];  else  rArray[i] = b[i-sizea];  }  return rArray;  }    int main() {  int x[] = { 1, 10, 100, 5, 4 };  int y[] = { 7, 6, 10, 9 };  int *a = concat(x, 5, y, 4);  int aSize = sizeof(x)/sizeof(x[0]) + sizeof(y)/sizeof(y[0]); // a에 들어있는 원소의 개수    for (int i = 0; i\u0026lt;aSize; i++)  cout \u0026laquo; a[i] \u0026laquo; \u0026rsquo; \u0026lsquo;;  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e공유하기\u003c/p\u003e","title":"명품 C++ programming 실습 문제 10장 5번"},{"content":"문제 :\n배열에서 원소를 검색하는 search() 함수를 템플릿으로 작성하라.\nsearch()의 첫 번째 매개 변수는 검색하고자 하는 원소 값이고, 두 번째 매개 변수는 배열이며, 세 번째 매개 변수는 배열의 개수이다.\nsearch() 함수가 검색에 성공하면 true를, 아니면 false를 리턴한다.\nsearch()의 호출 사례는 다음과 같다.\n1 2 3 int x[] = {1, 10, 100, 5, 4}; if(search(100, x, 5)) cout \u0026laquo; \u0026ldquo;100이 배열 x에 포함되어 있다\u0026rdquo;; // 이 cout 실행 else cout \u0026laquo; \u0026ldquo;100이 배열 x에 포함되어 있지 않다\u0026rdquo;; 실행 결과 :\n목적 및 힌트 :\n템플릿 함수 만들기\n코드 :\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #include using namespace std; template \u0026lt;class T\u0026gt; bool search(T search, T arr[], T arr_size){ for(int i=0; i\u0026lt;arr_size; i++){ if( arr[i] == search) return true; } return false; } int main() { int x[] = {1, 10, 100, 5, 4}; if(search(100, x, 5)) cout \u0026laquo; \u0026ldquo;100이 배열 x에 포함되어 있다\u0026rdquo;; // 이 cout 실행 else cout \u0026laquo; \u0026ldquo;100이 배열 x에 포함되어 있지 않다\u0026rdquo;; } 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 10장 6번 (1) 2020.03.09 명품 C++ programming 실습 문제 10장 5번 (1) 2020.03.09 명품 C++ programming 실습 문제 10장 3번 (1) 2020.03.09 명품 C++ programming 실습 문제 10장 2번 (1) 2020.03.09 명품 C++ programming 실습 문제 10장 1번 (1) 2020.03.09 ","permalink":"https://blog.sobamemil.com/posts/114-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-10%EC%9E%A5-4%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e배열에서 원소를 검색하는 search() 함수를 템플릿으로 작성하라.\u003c/p\u003e\n\u003cp\u003esearch()의 첫 번째 매개 변수는 검색하고자 하는 원소 값이고, 두 번째 매개 변수는 배열이며, 세 번째 매개 변수는 배열의 개수이다.\u003c/p\u003e\n\u003cp\u003esearch() 함수가 검색에 성공하면 true를, 아니면 false를 리턴한다.\u003c/p\u003e\n\u003cp\u003esearch()의 호출 사례는 다음과 같다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3\u003c/td\u003e\n          \u003ctd\u003eint x[] = {1, 10, 100, 5, 4};  if(search(100, x, 5)) cout \u0026laquo; \u0026ldquo;100이 배열 x에 포함되어 있다\u0026rdquo;; // 이 cout 실행  else cout \u0026laquo; \u0026ldquo;100이 배열 x에 포함되어 있지 않다\u0026rdquo;;\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 10장 4번"},{"content":"문제 :\n배열의 원소를 반대 순서로 뒤집는 reverseArray() 함수를 템플릿으로 작성하라.\nreverseArray()의 첫 번째 매개 변수는 배열에 대한 포인터이며 두 번째 매개 변수는 배열의 개수이다.\nreverseArray()의 호출 사례는 다음과 같다.\n1 2 3 4 int x[] = { 1, 10, 100, 5, 4}; reverseArray(x, 5); for(int i=0; i\u0026lt;5; i++) cout \u0026laquo; x[i] \u0026laquo; \u0026rsquo; \u0026lsquo;; // 4 5 100 10 1이 출력된다. 실행 결과 :\n목적 및 힌트 :\n템플릿 함수 만들기\n코드 :\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #include using namespace std; template \u0026lt;class T\u0026gt; void reverseArray(T array [] , int n){ int j=n-1; for(int i=0; j\u0026gt;i; i++){ T tmp = array[j]; array[j] = array[i]; array[i] = tmp; j\u0026ndash;; } } int main() { int x[] = { 1, 10, 100, 5, 4}; reverseArray(x, 5); for(int i=0; i\u0026lt;5; i++) cout \u0026laquo; x[i] \u0026laquo; \u0026rsquo; \u0026lsquo;; // 4 5 100 10 1이 출력된다. } 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 10장 5번 (1) 2020.03.09 명품 C++ programming 실습 문제 10장 4번 (1) 2020.03.09 명품 C++ programming 실습 문제 10장 2번 (1) 2020.03.09 명품 C++ programming 실습 문제 10장 1번 (1) 2020.03.09 명품 C++ programming 실습 문제 8장 9번 (4) 2020.03.09 ","permalink":"https://blog.sobamemil.com/posts/113-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-10%EC%9E%A5-3%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e배열의 원소를 반대 순서로 뒤집는 reverseArray() 함수를 템플릿으로 작성하라.\u003c/p\u003e\n\u003cp\u003ereverseArray()의 첫 번째 매개 변수는 배열에 대한 포인터이며 두 번째 매개 변수는 배열의 개수이다.\u003c/p\u003e\n\u003cp\u003ereverseArray()의 호출 사례는 다음과 같다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4\u003c/td\u003e\n          \u003ctd\u003eint x[] = { 1, 10, 100, 5, 4};  reverseArray(x, 5);  for(int i=0; i\u0026lt;5; i++)  cout \u0026laquo; x[i] \u0026laquo; \u0026rsquo; \u0026lsquo;; // 4 5 100 10 1이 출력된다.\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/113/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 10장 3번"},{"content":"문제 :\n두 개의 배열을 비교하여 같으면 true를, 아니면 false를 리턴하는 제네릭 함수 equalArrays()를 작성하라.\n또한 main() 함수를 작성하여 equalArrays()를 호출하는 몇 가지 사례를 보여라.\nequalArrays()를 호출하는 코드 사례는 다음과 같다.\n1 2 3 4 5 6 int x[] = {1, 10, 100, 5, 4}; int y[] = {1, 10, 100, 5, 4}; if(equalArray(x, y, 5)) cout \u0026laquo; \u0026ldquo;같다\u0026rdquo;; // 배열 x, y가 같으므로 \u0026ldquo;같다\u0026rdquo; 출력 else cout \u0026laquo; \u0026ldquo;다르다\u0026rdquo;; 실행 결과 :\n목적 및 힌트 :\n템플릿 함수 만들기\n코드 :\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #include using namespace std; template \u0026lt;class T\u0026gt; T equalArray(T x[], T y[], T n){ for(T i=0; i\u0026lt;n; i++) if(x[i] != y[i]) // 두 배열의 원소의 값이 다르면 false 리턴 return false; return true; // 두 배열의 모든 원소의 값이 같으면 true 리턴 } int main() { int x[] = {1, 10, 100, 5, 4}; int y[] = {1, 10, 100, 5, 4}; if(equalArray(x, y, 5)) cout \u0026laquo; \u0026ldquo;같다\u0026rdquo;; // 배열 x, y가 같으므로 \u0026ldquo;같다\u0026rdquo; 출력 else cout \u0026laquo; \u0026ldquo;다르다\u0026rdquo;; } 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 10장 4번 (1) 2020.03.09 명품 C++ programming 실습 문제 10장 3번 (1) 2020.03.09 명품 C++ programming 실습 문제 10장 1번 (1) 2020.03.09 명품 C++ programming 실습 문제 8장 9번 (4) 2020.03.09 명품 C++ programming 실습 문제 8장 8번 (1) 2020.03.09 ","permalink":"https://blog.sobamemil.com/posts/112-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-10%EC%9E%A5-2%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e두 개의 배열을 비교하여 같으면 true를, 아니면 false를 리턴하는 제네릭 함수 equalArrays()를 작성하라.\u003c/p\u003e\n\u003cp\u003e또한 main() 함수를 작성하여 equalArrays()를 호출하는 몇 가지 사례를 보여라.\u003c/p\u003e\n\u003cp\u003eequalArrays()를 호출하는 코드 사례는 다음과 같다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6\u003c/td\u003e\n          \u003ctd\u003eint x[] = {1, 10, 100, 5, 4};  int y[] = {1, 10, 100, 5, 4};  if(equalArray(x, y, 5))  cout \u0026laquo; \u0026ldquo;같다\u0026rdquo;; // 배열 x, y가 같으므로 \u0026ldquo;같다\u0026rdquo; 출력  else  cout \u0026laquo; \u0026ldquo;다르다\u0026rdquo;;\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 10장 2번"},{"content":"문제 :\n배열을 받아 가장 큰 값을 리턴하는 제네릭 함수 biggest()를 작성하라.\n또한 main() 함수를 작성하여 biggest()를 호출하는 몇 가지 사례를 보여라.\n실행 결과 :\n목적 및 힌트 :\n템플릿 함수 만들기\nbiggest()를 호출하는 코드 사례는 다음과 같다.\n1 2 int x[] = {1, 10, 100, 5, 4}; cout \u0026laquo; biggest(x, 5) \u0026laquo; endl; // 5는 배열 x의 크기. 100이 출력된다. 코드 :\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #include using namespace std; template \u0026lt;class T\u0026gt; T biggest(T a[], T n){ T big = a[0]; // 배열 a의 첫번째 원소를 big에 삽입 for(T i=1; i\u0026lt;n; i++) big = big \u0026lt; a[i] ? a[i] : big; // big보다 a[i]의 값이 더 크면 big에 a[i]의 값을 삽입 return big; } int main() { int big = 0; int x[] = {1, 10, 100, 5, 4}; cout \u0026laquo; biggest(x, 5) \u0026laquo; endl; } 설명 :\n제네릭 함수를 만들 때 프로그래머는 일반화된 타입 혹은 제네릭 타입(generic type)으로 매개 변수나 리턴 타입을 선언합니다.\n제네릭 함수를 작성할 때 class 이름은 T가 아니여도 프로그래머 마음대로 작성할 수 있습니다.\n템플릿 함수나 클래스의 제네릭 타입에 구체적인 타입을 주어, 구체화된 버전의 함수나 클래스 코드를 생성하는 작업을 구체화(specialization)라고 합니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 10장 3번 (1) 2020.03.09 명품 C++ programming 실습 문제 10장 2번 (1) 2020.03.09 명품 C++ programming 실습 문제 8장 9번 (4) 2020.03.09 명품 C++ programming 실습 문제 8장 8번 (1) 2020.03.09 명품 C++ programming 실습 문제 8장 7번 (1) 2020.03.09 ","permalink":"https://blog.sobamemil.com/posts/111-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-10%EC%9E%A5-1%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e배열을 받아 가장 큰 값을 리턴하는 제네릭 함수 biggest()를 작성하라.\u003c/p\u003e\n\u003cp\u003e또한 main() 함수를 작성하여 biggest()를 호출하는 몇 가지 사례를 보여라.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/111/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e템플릿 함수 만들기\u003c/p\u003e\n\u003cp\u003ebiggest()를 호출하는 코드 사례는 다음과 같다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2\u003c/td\u003e\n          \u003ctd\u003eint x[] = {1, 10, 100, 5, 4};  cout \u0026laquo; biggest(x, 5) \u0026laquo; endl; // 5는 배열 x의 크기. 100이 출력된다.\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e코드 :\u003c/strong\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16\u003c/td\u003e\n          \u003ctd\u003e#include \u003ciostream\u003e  using namespace std;    template \u0026lt;class T\u0026gt;  T biggest(T a[], T n){  T big = a[0]; // 배열 a의 첫번째 원소를 big에 삽입  for(T i=1; i\u0026lt;n; i++)  big = big \u0026lt; a[i] ? a[i] : big; // big보다 a[i]의 값이 더 크면 big에 a[i]의 값을 삽입  return big;  }    int main() {  int big = 0;  int x[] = {1, 10, 100, 5, 4};  cout \u0026laquo; biggest(x, 5) \u0026laquo; endl;  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e설명 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 10장 1번"},{"content":"문제 :\n비행기 예약 프로그램을 작성하라. 이 문제는 여러 개의 클래스와 객체들을 다루는 연습을 위한 것이다. 클래스 사이의 상속 관계는 없다.\n항공사 이름은 \u0026lsquo;한성항공\u0026rsquo;이고, 8개의 좌석을 가진 3대의 비행기로 서울 부산 간 운항 사업을 한다.\n각 비행기는 하루에 한 번만 운항하며 비행시간은 07시, 12시, 17시이다. 비행기 예약 프로그램은 다음의 기능을 가진다.\n● 예약 : 비행 시간, 사용자의 이름, 좌석 번호를 입력받아 예약한다.\n● 취소 : 비행 시간, 사용자의 이름, 좌석 번호를 입력받고 예약을 취소한다.\n● 예약 보기 : 예약된 좌석 상황을 보여준다.\n실행 결과 :\n목적 및 힌트 :\n종합 응용 연습(상속 필요 없음)\n이 프로그램에 필요한 클래스를 AirlineBook, Schedule, Seat의 3개이며, main() 함수는 별도의 cpp 파일에 작성한다.\n또한 사용자 입력을 전담하는 Console 클래스를 작성한다.\n● AirlineBook 클래스 : Schedule 객체 3개 생성. 예약 시스템 작동\n● Schedule 클래스 : 하나의 스케줄을 구현하는 클래스. 8개의 Seat 객체 생성. Seat 객체에 예약, 취소, 보기 등 관리\n● Seat 클래스 : 하나의 좌석을 구현하는 클래스. 예약자 이름 저장, 좌석에 대한 예약, 취소, 보기 등 관리\n● Console 클래스 : 메뉴를 출력하는 함수, 사용자로부터 메뉴 선택, 비행시간, 사용자 이름, 좌석 번호 등을 입력받는 멤버 함수들을 구현. 멤버들은 static으로 작성하는 것이 좋다.\n코드 :\n● 8-9.h\n1 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 class Console{ public: static int select_menu(); static int select_time(); static int input_seat_num(); static string input_name(); }; class Seat{ string name; public: Seat() { name = {\u0026quot;\u0026mdash;\u0026quot;}; } void set_name(string name) { this-\u0026gt;name = name; } void reset_name() { name = {\u0026quot;\u0026mdash;\u0026quot;}; } string show_name() { return name; } }; class Schedule{ Seat *seat; string scname; int seat_num; string person_name; public: Schedule(){ seat = new Seat[8]; } ~Schedule() { delete [] seat; } void set_scname(string scname){ this-\u0026gt;scname = scname; } void show_schedule(); void set_resv(int seat_num, string person_name); void cancel_resv(int seat_num, string person_name); }; class AirlineBook{ Schedule *schedule; int menu; int time; public: AirlineBook(){ schedule = new Schedule[3]; schedule[0].set_scname(\u0026ldquo;07\u0026rdquo;); schedule[1].set_scname(\u0026ldquo;12\u0026rdquo;); schedule[2].set_scname(\u0026ldquo;17\u0026rdquo;); } ~AirlineBook(){ delete [] schedule; } void start(); }; ● 8-9.cpp\n1 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 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 #include using namespace std; #include\u0026quot;8-9.h\u0026quot; int Console::select_menu() { cout \u0026laquo; \u0026ldquo;예약:1, 취소:2, 보기:3, 끝내기:4\u0026raquo; \u0026ldquo;; int menu; cin \u0026raquo; menu; return menu; } int Console::select_time(){ cout \u0026laquo; \u0026ldquo;07시:1, 12시:2, 17시:3\u0026raquo; \u0026ldquo;; int time; cin \u0026raquo; time; return time; } int Console::input_seat_num() { cout \u0026laquo; \u0026ldquo;좌석 번호\u0026raquo; \u0026ldquo;; int seat_num; cin \u0026raquo; seat_num; if(seat_num \u0026lt; 1 ● main.cpp\n1 2 3 4 5 6 7 8 9 10 11 #include using namespace std; #include\u0026quot;8-9.h\u0026rdquo; int main() { AirlineBook *air = new AirlineBook(); cout \u0026laquo; \u0026ldquo;***** 한성항공에 오신것을 환영합니다 *****\\n\\n\u0026rdquo;; air-\u0026gt;start(); delete air; } 설명 :\n상속이 필요 없는 문제입니다. 코드가 길기 때문에 차근차근 따라가며 이해하시면 됩니다.\n전체적인 실행 과정 등을 간단하게 그려놓고 시작하면 훨씬 수월하게 작성할 수 있습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 10장 2번 (1) 2020.03.09 명품 C++ programming 실습 문제 10장 1번 (1) 2020.03.09 명품 C++ programming 실습 문제 8장 8번 (1) 2020.03.09 명품 C++ programming 실습 문제 8장 7번 (1) 2020.03.09 명품 C++ programming 실습 문제 8장 6번 (1) 2020.03.09 ","permalink":"https://blog.sobamemil.com/posts/110-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-8%EC%9E%A5-9%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e비행기 예약 프로그램을 작성하라. 이 문제는 여러 개의 클래스와 객체들을 다루는 연습을 위한 것이다. 클래스 사이의 상속 관계는 없다.\u003c/p\u003e\n\u003cp\u003e항공사 이름은 \u0026lsquo;한성항공\u0026rsquo;이고, 8개의 좌석을 가진 3대의 비행기로 서울 부산 간 운항 사업을 한다.\u003c/p\u003e\n\u003cp\u003e각 비행기는 하루에 한 번만 운항하며 비행시간은 07시, 12시, 17시이다. 비행기 예약 프로그램은 다음의 기능을 가진다.\u003c/p\u003e\n\u003cp\u003e● 예약 : 비행 시간, 사용자의 이름, 좌석 번호를 입력받아 예약한다.\u003c/p\u003e\n\u003cp\u003e● 취소 : 비행 시간, 사용자의 이름, 좌석 번호를 입력받고 예약을 취소한다.\u003c/p\u003e","title":"명품 C++ programming 실습 문제 8장 9번"},{"content":"문제 :\n다음 그림과 같은 상속 구조를 갖는 클래스를 설계한다.\n모든 프린터는 모델명(model), 제조사(manufacturer), 인쇄 매수(printedCount), 인쇄 종이 잔량(availableCount)을 나타내는 정보와 print(int pages) 멤버 함수를 가지며, print()가 호출할 때마다 pages 매의 용지를 사용한다.\n잉크젯 프린터는 잉크 잔량(availableInk) 정보와 printInkJet(int pages) 멤버 함수를 추가적으로 가지며, 레이저 프린터는 토너 잔량(availableToner) 정보와 역시 printLaser(int pages) 멤버 함수를 추가적으로 가진다.\n각 클래스에 적절한 접근 지정으로 멤버 변수와 함수, 생성자, 소멸자를 작성하고, 다음과 같이 실행되도록 전체 프로그램을 완성하라.\n잉크젯 프린터 객체와 레이저 프린터 객체를 각각 하나만 동적 생성하여 시작한다.\n실행 결과 :\n목적 및 힌트 :\n상속 구조로 종합 응용 연습\n코드 :\n1 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 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 #include using namespace std; class PrintMachine { string model, manuf; int pcount, avlcount; protected: PrintMachine(string model, string manuf, int avlcount){ this-\u0026gt;model=model; this-\u0026gt;manuf=manuf; this-\u0026gt;avlcount=avlcount; } bool print(int pages){ if(avlcount \u0026lt; pages){ cout \u0026laquo; \u0026ldquo;용지가 부족하여 프린트 할 수 없습니다.\\n\u0026rdquo;; return false; } for(int i=0; i\u0026lt; pages; i++){ avlcount\u0026ndash;; } return true; } string get_model(){ return model; } string get_manuf(){ return manuf; } int get_avlcount(){ return avlcount; } }; class PrintInkJet : public PrintMachine { int avlink; public: PrintInkJet(string model, string manuf, int avlcount, int avlink) : PrintMachine(model, manuf, avlcount){ this-\u0026gt;avlink = avlink; } bool printInkJet(int pages){ if(print(pages)); else return false; if(avlink \u0026lt; pages){ cout \u0026laquo; \u0026ldquo;잉크가 부족하여 프린트 할 수 없습니다.\\n\u0026rdquo;; return false; } for(int i=0; i\u0026lt;pages; i++){ avlink\u0026ndash;; } return true; } void show(){ cout \u0026laquo; get_model() \u0026laquo; \u0026ldquo;\\t,\u0026rdquo; \u0026laquo; get_manuf() \u0026laquo; \u0026ldquo;\\t,남은 종이 \u0026quot; \u0026laquo; get_avlcount() \u0026laquo; \u0026ldquo;장\\t,남은 잉크 \u0026quot; \u0026laquo; avlink \u0026laquo; endl; } }; class PrintLaser : public PrintMachine { int avltoner; public: PrintLaser(string model, string manuf, int avlcount, int avltoner) : PrintMachine(model, manuf, avlcount){ this-\u0026gt;avltoner = avltoner; } bool printLaser(int pages){ if(print(pages)); else return false; if(avltoner \u0026lt; pages){ cout \u0026laquo; \u0026ldquo;토너가 부족하여 프린트 할 수 없습니다.\\n\u0026rdquo;; return false; } for(int i=0; i\u0026lt;pages; i++) avltoner\u0026ndash;; return true; } void show(){ cout \u0026laquo; get_model() \u0026laquo; \u0026quot; ,\u0026rdquo; \u0026laquo; get_manuf() \u0026laquo; \u0026ldquo;\\t,남은 종이 \u0026quot; \u0026laquo; get_avlcount() \u0026laquo; \u0026ldquo;장\\t,남은토너 \u0026quot; \u0026laquo; avltoner \u0026laquo; endl; } }; int main() { int pnum, pages; char yon; PrintInkJet* inkjet = new PrintInkJet(\u0026ldquo;Officejet V40\u0026rdquo;, \u0026ldquo;Hp\u0026rdquo;, 5, 10); PrintLaser* laser = new PrintLaser(\u0026ldquo;SCX-6x45\u0026rdquo;, \u0026ldquo;삼성전자\u0026rdquo;, 3, 20); cout \u0026laquo; \u0026ldquo;현재 작동중인 2 대의 프린터는 아래와 같다\\n\u0026rdquo;; cout \u0026laquo; \u0026ldquo;잉크젯 : \u0026ldquo;; inkjet-\u0026gt;show(); cout \u0026laquo; \u0026ldquo;레이저 : \u0026ldquo;; laser-\u0026gt;show(); cout \u0026laquo; endl; while(true){ cout \u0026laquo; \u0026ldquo;프린터(1:잉크젯, 2:레이저)와 매수 입력\u0026raquo;\u0026rdquo;; cin \u0026raquo; pnum \u0026raquo; pages; if(pnum==1) if(inkjet-\u0026gt;printInkJet(pages)) cout \u0026laquo; \u0026ldquo;프린트 하였습니다.\\n\u0026rdquo;; if(pnum==2) if(laser-\u0026gt;printLaser(pages)) cout \u0026laquo; \u0026ldquo;프린트 하였습니다.\\n\u0026rdquo;; if(pnum != 1 \u0026amp;\u0026amp; pnum != 2) cout \u0026laquo; \u0026ldquo;프린터를 잘못 선택하셨습니다.\\n\u0026rdquo;; /* 또는 switch(pnum){ case 1: if(inkjet-\u0026gt;printInkJet(pages)) cout \u0026laquo; \u0026ldquo;프린트 하였습니다.\\n\u0026rdquo;; break; case 2: if(laser-\u0026gt;printLaser(pages)) cout \u0026laquo; \u0026ldquo;프린트 하였습니다.\\n\u0026rdquo;; break; default : cout \u0026laquo; \u0026ldquo;프린터를 잘못 선택하셨습니다.\\n\u0026rdquo;; break; } switch문 사용 가능 */ inkjet-\u0026gt;show(); laser-\u0026gt;show(); while(true){ cout \u0026laquo; \u0026ldquo;계속 프린트 하시겠습니까(y/n)\u0026raquo;\u0026rdquo;; cin \u0026raquo; yon; cout \u0026laquo; endl; if(yon==\u0026lsquo;n\u0026rsquo;) return 0; else if(yon==\u0026lsquo;y\u0026rsquo;) break; else cout \u0026laquo; \u0026ldquo;잘못 입력하셨습니다.\\n\u0026rdquo;; } } delete inkjet; delete laser; } 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 10장 1번 (1) 2020.03.09 명품 C++ programming 실습 문제 8장 9번 (4) 2020.03.09 명품 C++ programming 실습 문제 8장 7번 (1) 2020.03.09 명품 C++ programming 실습 문제 8장 6번 (1) 2020.03.09 명품 C++ programming 실습 문제 8장 5번 (1) 2020.03.09 ","permalink":"https://blog.sobamemil.com/posts/109-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-8%EC%9E%A5-8%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e다음 그림과 같은 상속 구조를 갖는 클래스를 설계한다.\u003c/p\u003e\n\u003cp\u003e모든 프린터는 모델명(model), 제조사(manufacturer), 인쇄 매수(printedCount), 인쇄 종이 잔량(availableCount)을 나타내는 정보와 print(int pages) 멤버 함수를 가지며, print()가 호출할 때마다 pages 매의 용지를 사용한다.\u003c/p\u003e\n\u003cp\u003e잉크젯 프린터는 잉크 잔량(availableInk) 정보와 printInkJet(int pages) 멤버 함수를 추가적으로 가지며, 레이저 프린터는 토너 잔량(availableToner) 정보와 역시 printLaser(int pages) 멤버 함수를 추가적으로 가진다.\u003c/p\u003e\n\u003cp\u003e각 클래스에 적절한 접근 지정으로 멤버 변수와 함수, 생성자, 소멸자를 작성하고, 다음과 같이 실행되도록 전체 프로그램을 완성하라.\u003c/p\u003e","title":"명품 C++ programming 실습 문제 8장 8번"},{"content":"문제 :\n아래와 같은 BaseMemory 클래스를 상속받는 ROM(Read Only Memory), RAM 클래스를 작성하라.\nBaseMemory에 필요한 코드를 수정 추가하여 적절히 완성하라.\n1 2 3 4 5 class BaseMemory{ char *mem; protected: BaseMemory(int size) { mem = new char [size]; } }; ROM은 읽기 전용 메모리이므로 작동 중에 값을 쓸 수가 없기 때문에, 공장에서 생산할 때 생산자가 요청한 데이터로 초기화 하는데 이 작업을 굽는다(burn)라고 한다. 그러므로 ROM은 반드시 생성자에서 burn 작업이 일어나야 한다.\n다음은 ROM과 RAM 메모리를 생성하고 사용하는 사례이다.\nROM의 0번지에서 4번지까지 읽어 RAM 메모리의 0~4번지에 쓰고, 다시 RAM 메모리의 값을 화면에 출력한다.\n전체 프로그램을 완성하라.\n1 2 3 4 5 6 7 char x[5] = {\u0026lsquo;h\u0026rsquo;, \u0026rsquo;e\u0026rsquo;, \u0026rsquo;l\u0026rsquo;, \u0026rsquo;l\u0026rsquo;, \u0026lsquo;o\u0026rsquo;}; ROM biosROM(1024*10, x, 5); // 10KB의 ROM 메모리. 배열 x로 초기화됨 RAM mainMemory(1024*1024); // 1MB의 ROM 메모리 // 0 번지에서 4번지까지 biosRom에서 읽어 mainMemory에 복사 for(int i=0; i\u0026lt;5; i++) mainMemory.write(i, biosROM.read(i)); for(int i=0; i\u0026lt;5; i++) cout \u0026laquo; mainMemory.read(i); 실행 결과 :\n목적 및 힌트 :\n기본 클래스와 파생 클래스로 나누어 응용 작성\n코드 :\n1 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 #include using namespace std; class BaseMemory{ char *mem; protected: BaseMemory(int size) { mem = new char [size]; } void set_mem(char *x){ mem = x; } void put_mem(int i, char copy){ mem[i] = copy; } char get_mem(int i){ return mem[i]; } }; class ROM : public BaseMemory { public: ROM(long int mem_size, char *x, int arr_size) : BaseMemory(mem_size) { set_mem(x); } char read(int i){ char mem = get_mem(i); return mem; } }; class RAM : public BaseMemory { public: RAM(int mem_size) : BaseMemory(mem_size){;} void write(int i, char rom_mem){ put_mem(i, rom_mem); } char read(int i){ char mem = get_mem(i); return mem; } }; int main() { char x[5] = {\u0026lsquo;h\u0026rsquo;, \u0026rsquo;e\u0026rsquo;, \u0026rsquo;l\u0026rsquo;, \u0026rsquo;l\u0026rsquo;, \u0026lsquo;o\u0026rsquo;}; ROM biosROM(1024*10, x, 5); // 10KB의 ROM 메모리. 배열 x로 초기화됨 RAM mainMemory(1024*1024); // 1MB의 ROM 메모리 // 0 번지에서 4번지까지 biosRom에서 읽어 mainMemory에 복사 for(int i=0; i\u0026lt;5; i++) mainMemory.write(i, biosROM.read(i)); for(int i=0; i\u0026lt;5; i++) cout \u0026laquo; mainMemory.read(i); } 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 8장 9번 (4) 2020.03.09 명품 C++ programming 실습 문제 8장 8번 (1) 2020.03.09 명품 C++ programming 실습 문제 8장 6번 (1) 2020.03.09 명품 C++ programming 실습 문제 8장 5번 (1) 2020.03.09 명품 C++ programming 실습 문제 8장 4번 (3) 2020.03.09 ","permalink":"https://blog.sobamemil.com/posts/108-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-8%EC%9E%A5-7%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e아래와 같은 BaseMemory 클래스를 상속받는 ROM(Read Only Memory), RAM 클래스를 작성하라.\u003c/p\u003e\n\u003cp\u003eBaseMemory에 필요한 코드를 수정 추가하여 적절히 완성하라.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5\u003c/td\u003e\n          \u003ctd\u003eclass BaseMemory{  char *mem;  protected:  BaseMemory(int size) { mem = new char [size]; }  };\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eROM은 읽기 전용 메모리이므로 작동 중에 값을 쓸 수가 없기 때문에, 공장에서 생산할 때 생산자가 요청한 데이터로 초기화 하는데 이 작업을 굽는다(burn)라고 한다. 그러므로 ROM은 반드시 생성자에서 burn 작업이 일어나야 한다.\u003c/p\u003e","title":"명품 C++ programming 실습 문제 8장 7번"},{"content":"문제 :\n문제 5~6에 적용되는 BaseArray 클래스는 다음과 같다.\n1 2 3 4 5 6 7 8 9 10 11 12 class BaseArray { int capacity; // 배열의 크기 int *mem; // 정수 배열을 만들기 위한 메모리의 포인터 protected: // 생성자가 protected BaseArray(int capacity=100){ this-\u0026gt;capacity = capacity; mem = new int [capacity]; } ~BaseArray() { delete [] mem; } void put(int index, int val) { mem[index] = val; } int get(int index) { return mem[index]; } int getCapacity() { return capacity; } }; BaseArray 클래스를 상속받아 스택으로 작동하는 MyStack 클래스를 작성하라.\n1 2 3 4 5 6 7 8 9 10 11 12 13 MyStack mStack(100); int n; cout \u0026laquo; \u0026ldquo;스택에 삽입할 5개의 정수를 입력하라\u0026raquo; \u0026ldquo;; for(int i=0; i\u0026lt;5; i++){ cin \u0026raquo; n; mStack.push(n); // 스택에 푸시 } cout \u0026laquo; \u0026ldquo;스택 용량:\u0026rdquo; \u0026laquo; mStack.capacity() \u0026laquo; \u0026ldquo;, 스택 크기:\u0026rdquo; \u0026laquo; mStack.length() \u0026laquo; endl; cout \u0026laquo; \u0026ldquo;스택의 모든 원소를 팝하여 출력한다\u0026raquo; \u0026ldquo;; while(mStack.length() != 0){ cout \u0026laquo; mStack.pop() \u0026laquo; \u0026rsquo; \u0026lsquo;; // 스택에서 팝 } cout \u0026laquo; endl \u0026laquo; \u0026ldquo;스택의 현재 크기 : \u0026quot; \u0026laquo; mStack.length() \u0026laquo; endl; 실행 결과 :\n목적 및 힌트 :\n상속과 protected, 파생 클래스 작성\n코드 :\n1 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 #include using namespace std; class BaseArray { int capacity; int *mem; protected: BaseArray(int capacity=100){ this-\u0026gt;capacity = capacity; mem = new int [capacity]; } ~BaseArray() { delete [] mem; } void put(int index, int val) { mem[index] = val; } int get(int index) { return mem[index]; } int getCapacity() { return capacity; } }; class MyStack : public BaseArray{ int top=0; public: MyStack(int capacity) : BaseArray(capacity) {;} void push(int val){ put(top, val); top++; } int capacity() { return getCapacity(); } int length() { return top; } int pop() { top\u0026ndash;; return get(top); } }; int main() { MyStack mStack(100); int n; cout \u0026laquo; \u0026ldquo;스택에 삽입할 5개의 정수를 입력하라\u0026raquo; \u0026ldquo;; for(int i=0; i\u0026lt;5; i++){ cin \u0026raquo; n; mStack.push(n); // 스택에 푸시 } cout \u0026laquo; \u0026ldquo;스택 용량:\u0026rdquo; \u0026laquo; mStack.capacity() \u0026laquo; \u0026ldquo;, 스택 크기:\u0026rdquo; \u0026laquo; mStack.length() \u0026laquo; endl; cout \u0026laquo; \u0026ldquo;스택의 모든 원소를 팝하여 출력한다\u0026raquo; \u0026ldquo;; while(mStack.length() != 0){ cout \u0026laquo; mStack.pop() \u0026laquo; \u0026rsquo; \u0026lsquo;; // 스택에서 팝 } cout \u0026laquo; endl \u0026laquo; \u0026ldquo;스택의 현재 크기 : \u0026quot; \u0026laquo; mStack.length() \u0026laquo; endl; } 설명 :\n스택(Stack)은 제한적으로 접근할 수 있는 나열 구조입니다.\n그 접근 방법은 언제나 목록의 끝에서만 일어나고, 끝먼저내기 목록(Pushdown list)이라고도 한다.\n스택은 한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형 구조(LIFO - Last In First Out)으로 되어 있습니다.\n이처럼 나중에 넣은 값이 먼저 나오는 것을 LIFO 이라고 합니다.\n스택에 대한 자세한 내용은 아래 위키피디아 링크에 있습니다.\nhttps://ko.wikipedia.org/wiki/%EC%8A%A4%ED%83%9D\n[스택 - 위키백과, 우리 모두의 백과사전\n위키백과, 우리 모두의 백과사전. 스택(stack)은 제한적으로 접근할 수 있는 나열 구조이다. 그 접근 방법은 언제나 목록의 끝에서만 일어난다. 끝먼저내기 목록(Pushdown list)이라고도 한다. 스택은 한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형 구조(LIFO - Last In First Out)으로 되어 있다. 자료를 넣는 것을 \u0026lsquo;밀어넣는다\u0026rsquo; 하여 푸쉬(push)라고 하고 반대로 넣어둔 자료를 꺼내는 것을 팝(pop)이라고 하는데, 이때 꺼\nko.wikipedia.org](https://ko.wikipedia.org/wiki/%EC%8A%A4%ED%83%9D)\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 8장 8번 (1) 2020.03.09 명품 C++ programming 실습 문제 8장 7번 (1) 2020.03.09 명품 C++ programming 실습 문제 8장 5번 (1) 2020.03.09 명품 C++ programming 실습 문제 8장 4번 (3) 2020.03.09 명품 C++ programming 실습 문제 8장 3번 (9) 2020.03.09 ","permalink":"https://blog.sobamemil.com/posts/107-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-8%EC%9E%A5-6%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e문제 5~6에 적용되는 BaseArray 클래스는 다음과 같다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12\u003c/td\u003e\n          \u003ctd\u003eclass BaseArray {  int capacity; // 배열의 크기  int *mem; // 정수 배열을 만들기 위한 메모리의 포인터  protected: // 생성자가 protected  BaseArray(int capacity=100){  this-\u0026gt;capacity = capacity; mem = new int [capacity];  }  ~BaseArray() { delete [] mem; }  void put(int index, int val) { mem[index] = val; }  int get(int index) { return mem[index]; }  int getCapacity() { return capacity; }  };\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eBaseArray 클래스를 상속받아 스택으로 작동하는 MyStack 클래스를 작성하라.\u003c/p\u003e","title":"명품 C++ programming 실습 문제 8장 6번"},{"content":"문제 :\n문제 5~6에 적용되는 BaseArray 클래스는 다음과 같다.\n1 2 3 4 5 6 7 8 9 10 11 12 class BaseArray { int capacity; // 배열의 크기 int *mem; // 정수 배열을 만들기 위한 메모리의 포인터 protected: // 생성자가 protected BaseArray(int capacity=100){ this-\u0026gt;capacity = capacity; mem = new int [capacity]; } ~BaseArray() { delete [] mem; } void put(int index, int val) { mem[index] = val; } int get(int index) { return mem[index]; } int getCapacity() { return capacity; } }; BaseArray를 상속받아 큐처럼 작동하는 MyQueue 클래스를 작성하라.\nMyQueue를 활용하는 사례는 다음과 같다.\n1 2 3 4 5 6 7 8 9 10 11 12 13 MyQueue mQ(100); int n; cout \u0026laquo; \u0026ldquo;큐에 삽입할 5개의 정수를 입력하라\u0026raquo; \u0026ldquo;; for(int i=0; i\u0026lt;5; i++){ cin \u0026raquo; n; mQ.enqueue(n); // 큐에 삽입 } cout \u0026laquo; \u0026ldquo;큐의 용량:\u0026rdquo; \u0026laquo; mQ.capacity() \u0026laquo; \u0026ldquo;, 큐의 크기:\u0026rdquo; \u0026laquo; mQ.length() \u0026laquo; endl; cout \u0026laquo; \u0026ldquo;큐의 원소를 순서대로 제거하여 출력한다\u0026raquo; \u0026ldquo;; while(mQ.length() != 0){ cout \u0026laquo; mQ.dequeue() \u0026laquo; \u0026rsquo; \u0026lsquo;; // 큐에서 제거하여 출력 } cout \u0026laquo; endl \u0026laquo; \u0026ldquo;큐의 현재 크기 : \u0026quot; \u0026laquo; mQ.length() \u0026laquo; endl; 실행 결과 :\n목적 및 힌트 :\n상속과 protected, 파생 클래스 작성\n코드 :\n1 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 #include using namespace std; class BaseArray { int capacity; // 배열의 크기 int *mem; // 정수 배열을 만들기 위한 메모리의 포인터 protected: // 생성자가 protected BaseArray(int capacity=100){ this-\u0026gt;capacity = capacity; mem = new int [capacity]; } ~BaseArray() { delete [] mem; } void put(int index, int val) { mem[index] = val; } int get(int index) { return mem[index]; } int getCapacity() { return capacity; } }; class MyQueue : public BaseArray{ int front = 0; int rear = 0; public: MyQueue(int capacity) : BaseArray(capacity) {;} void enqueue(int n){ if(rear \u0026gt;= getCapacity()){ cout \u0026laquo; \u0026ldquo;Queue is full\u0026hellip;\\n\u0026rdquo;; exit(1); } rear++; put(rear, n); } int capacity() { return getCapacity(); } int length() { return rear; } int dequeue(){ if(rear \u0026lt; 0){ cout \u0026laquo; \u0026ldquo;Queue is empty\u0026hellip;\\n\u0026rdquo;; exit(1); } ++front; rear\u0026ndash;; return get(front); } }; int main() { MyQueue mQ(100); int n; cout \u0026laquo; \u0026ldquo;큐에 삽입할 5개의 정수를 입력하라\u0026raquo; \u0026ldquo;; for(int i=0; i\u0026lt;5; i++){ cin \u0026raquo; n; mQ.enqueue(n); // 큐에 삽입 } cout \u0026laquo; \u0026ldquo;큐의 용량:\u0026rdquo; \u0026laquo; mQ.capacity() \u0026laquo; \u0026ldquo;, 큐의 크기:\u0026rdquo; \u0026laquo; mQ.length() \u0026laquo; endl; cout \u0026laquo; \u0026ldquo;큐의 원소를 순서대로 제거하여 출력한다\u0026raquo; \u0026ldquo;; while(mQ.length() != 0){ cout \u0026laquo; mQ.dequeue() \u0026laquo; \u0026rsquo; \u0026lsquo;; // 큐에서 제거하여 출력 } cout \u0026laquo; endl \u0026laquo; \u0026ldquo;큐의 현재 크기 : \u0026quot; \u0026laquo; mQ.length() \u0026laquo; endl; } 설명 :\n큐(Queue)는 컴퓨터의 기본적인 자료 구조 중 한가지로, 먼저 집어 넣은 데이터가 먼저 나오는 FIFO(First In First Out)구조로 저장하는 형식을 말합니다.\n큐에대한 설명은 아래 위키피디아 링크에 있습니다.\nhttps://ko.wikipedia.org/wiki/%ED%81%90_(%EC%9E%90%EB%A3%8C_%EA%B5%AC%EC%A1%B0)\n[큐 (자료 구조) - 위키백과, 우리 모두의 백과사전\n위키백과, 우리 모두의 백과사전.\nko.wikipedia.org](https://ko.wikipedia.org/wiki/%ED%81%90_(%EC%9E%90%EB%A3%8C_%EA%B5%AC%EC%A1%B0))\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 8장 7번 (1) 2020.03.09 명품 C++ programming 실습 문제 8장 6번 (1) 2020.03.09 명품 C++ programming 실습 문제 8장 4번 (3) 2020.03.09 명품 C++ programming 실습 문제 8장 3번 (9) 2020.03.09 명품 C++ programming 실습 문제 8장 2번 (4) 2020.03.09 ","permalink":"https://blog.sobamemil.com/posts/106-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-8%EC%9E%A5-5%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e문제 5~6에 적용되는 BaseArray 클래스는 다음과 같다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12\u003c/td\u003e\n          \u003ctd\u003eclass BaseArray {  int capacity; // 배열의 크기  int *mem; // 정수 배열을 만들기 위한 메모리의 포인터  protected: // 생성자가 protected  BaseArray(int capacity=100){  this-\u0026gt;capacity = capacity; mem = new int [capacity];  }  ~BaseArray() { delete [] mem; }  void put(int index, int val) { mem[index] = val; }  int get(int index) { return mem[index]; }  int getCapacity() { return capacity; }  };\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eBaseArray를 상속받아 큐처럼 작동하는 MyQueue 클래스를 작성하라.\u003c/p\u003e","title":"명품 C++ programming 실습 문제 8장 5번"},{"content":"문제 :\n문제 3~4에 적용되는 2차원 상의 한 점을 표현하는 Point 클래스가 있다.\n1 2 3 4 5 6 7 8 9 class Point { int x,y; public: point(int x, int y) { this-\u0026gt;x = x; this-\u0026gt;y = y; } int getX(){ return x; } int getY(){ return y; } protected: void move(int x, int y) { this-\u0026gt;x = x; this-\u0026gt;y = y; } }; 다음 main() 함수가 실행되도록 Point 클래스를 상속받는 ColorPoint 클래스를 작성하고, 전체 프로그램을 완성하라.\n1 2 3 4 5 6 7 8 9 int main() { ColorPoint zeroPoint; // BLACK 색에 (0, 0) 위치의 점 zeroPoint.show(); // zeroPoint를 출력한다. ColorPoint cp(5, 5); cp.setPoint(10, 20); cp.setColor(\u0026ldquo;BLUE\u0026rdquo;); cp.show(); // cp를 출력한다. } 실행 결과 :\n목적 및 힌트 :\n상속, 파생 클래스와 생성자 작성 및 응용\n코드 :\n1 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 #include using namespace std; class Point { int x,y; public: point(int x, int y) { this-\u0026gt;x = x; this-\u0026gt;y = y; } int getX(){ return x; } int getY(){ return y; } protected: void move(int x, int y) { this-\u0026gt;x = x; this-\u0026gt;y = y; } }; class ColorPoint : public Point { string color; public: ColorPoint(int x=0, int y=0, string color=\u0026ldquo;BLACK\u0026rdquo;){ point(x, y); this-\u0026gt;color = color; } void setPoint(int x, int y){ move(x, y); } void setColor(string color){ this-\u0026gt;color = color; } void show(){ cout \u0026laquo; color \u0026laquo; \u0026ldquo;색으로 (\u0026rdquo; \u0026laquo; getX() \u0026laquo; \u0026ldquo;,\u0026rdquo; \u0026laquo; getY() \u0026laquo; \u0026ldquo;)에 위치한 점입니다.\\n\u0026rdquo;; } }; int main() { ColorPoint zeroPoint; // BLACK 색에 (0, 0) 위치의 점 zeroPoint.show(); // zeroPoint를 출력한다. ColorPoint cp(5, 5); cp.setPoint(10, 20); cp.setColor(\u0026ldquo;BLUE\u0026rdquo;); cp.show(); // cp를 출력한다. } 설명 :\nColorPoint 클래스의 생성자를 디폴트 매개 변수가 있는 생성자로 작성해주면 되는 문제입니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 8장 6번 (1) 2020.03.09 명품 C++ programming 실습 문제 8장 5번 (1) 2020.03.09 명품 C++ programming 실습 문제 8장 3번 (9) 2020.03.09 명품 C++ programming 실습 문제 8장 2번 (4) 2020.03.09 명품 C++ programming 실습 문제 8장 1번 (1) 2020.03.09 ","permalink":"https://blog.sobamemil.com/posts/105-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-8%EC%9E%A5-4%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e문제 3~4에 적용되는 2차원 상의 한 점을 표현하는 Point 클래스가 있다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9\u003c/td\u003e\n          \u003ctd\u003eclass Point {  int x,y;  public:  point(int x, int y) { this-\u0026gt;x = x; this-\u0026gt;y = y; }  int getX(){ return x; }  int getY(){ return y; }  protected:  void move(int x, int y) { this-\u0026gt;x = x; this-\u0026gt;y = y; }  };\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e다음 main() 함수가 실행되도록 Point 클래스를 상속받는 ColorPoint 클래스를 작성하고, 전체 프로그램을 완성하라.\u003c/p\u003e","title":"명품 C++ programming 실습 문제 8장 4번"},{"content":"문제 :\n문제 3~4에 적용되는 2차원 상의 한 점을 표현하는 Point 클래스가 있다.\n1 2 3 4 5 6 7 8 9 class Point { int x,y; public: point(int x, int y) { this-\u0026gt;x = x; this-\u0026gt;y = y; } int getX(){ return x; } int getY(){ return y; } protected: void move(int x, int y) { this-\u0026gt;x = x; this-\u0026gt;y = y; } }; 다음 main() 함수가 실행되도록 Point 클래스를 상속받은 ColorPoint 클래스를 작성하고, 전체 프로그램을 완성하라.\n1 2 3 4 5 6 int main() { ColorPoint cp(5, 5, \u0026ldquo;RED\u0026rdquo;); cp.setPoint(10, 20); cp.setColor(\u0026ldquo;BLUE\u0026rdquo;); cp.show(); } 실행 결과 :\n목적 및 힌트 :\n상속, 파생 클래스 작성\n코드 :\n1 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 #include using namespace std; class Point { int x,y; public: point(int x, int y) { this-\u0026gt;x = x; this-\u0026gt;y = y; } int getX(){ return x; } int getY(){ return y; } protected: void move(int x, int y) { this-\u0026gt;x = x; this-\u0026gt;y = y; } }; class ColorPoint : public Point { string color; public: ColorPoint(int x, int y, string color){ point(x, y); this-\u0026gt;color = color; } void setPoint(int x, int y){ move(x, y); } void setColor(string color){ this-\u0026gt;color = color; } void show(){ cout \u0026laquo; color \u0026laquo; \u0026ldquo;색으로 (\u0026rdquo; \u0026laquo; getX() \u0026laquo; \u0026ldquo;,\u0026rdquo; \u0026laquo; getY() \u0026laquo; \u0026ldquo;)에 위치한 점입니다.\u0026rdquo;; } }; int main() { ColorPoint cp(5, 5, \u0026ldquo;RED\u0026rdquo;); cp.setPoint(10, 20); cp.setColor(\u0026ldquo;BLUE\u0026rdquo;); cp.show(); } 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 8장 5번 (1) 2020.03.09 명품 C++ programming 실습 문제 8장 4번 (3) 2020.03.09 명품 C++ programming 실습 문제 8장 2번 (4) 2020.03.09 명품 C++ programming 실습 문제 8장 1번 (1) 2020.03.09 명품 C++ programming 실습 문제 7장 12번 (3) 2020.03.06 ","permalink":"https://blog.sobamemil.com/posts/104-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-8%EC%9E%A5-3%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e문제 3~4에 적용되는 2차원 상의 한 점을 표현하는 Point 클래스가 있다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9\u003c/td\u003e\n          \u003ctd\u003eclass Point {  int x,y;  public:  point(int x, int y) { this-\u0026gt;x = x; this-\u0026gt;y = y; }  int getX(){ return x; }  int getY(){ return y; }  protected:  void move(int x, int y) { this-\u0026gt;x = x; this-\u0026gt;y = y; }  };\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e다음 main() 함수가 실행되도록 Point 클래스를 상속받은 ColorPoint 클래스를 작성하고, 전체 프로그램을 완성하라.\u003c/p\u003e","title":"명품 C++ programming 실습 문제 8장 3번"},{"content":"문제 :\n문제 1~2에 적용되는 원을 추상화한 Circle 클래스가 있다.\n1 2 3 4 5 6 7 8 class Circle{ int radius; public: Circle(int radius=0) { this-\u0026gt;radius = radius; } int getRadius() { return radius; } void setRadius(int radius) { this-\u0026gt;radius = radius; } double getArea() { return 3.14*radius*radius; } }; 다음과 같이 배열을 선언하여 다음 실행 결과가 나오도록 Circle을 상속받은 NamedCircle 클래스와 main() 함수 등 필요한 함수를 작성하라.\n1 NamedCircle pizza[5]; 실행 결과 :\n목적 및 힌트 :\n상속, 파생 클래스 작성 및 응용\n코드 :\n1 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 #include using namespace std; class Circle{ int radius; public: Circle(int radius=0) { this-\u0026gt;radius = radius; } int getRadius() { return radius; } void setRadius(int radius) { this-\u0026gt;radius = radius; } double getArea() { return 3.14*radius*radius; } }; class NameCircle : public Circle{ string name; public: void setRN(int R, string N){ setRadius(R); this-\u0026gt;name = N; } string getName(){ return name; } }; int main() { string name; int radius,big; double size[5]; NameCircle pizza[5]; cout \u0026laquo; \u0026ldquo;5 개의 정수 반지름과 원의 이름을 입력하세요\\n\u0026rdquo;; for(int i=0; i\u0026lt;5; i++){ cout \u0026laquo; i+1 \u0026laquo; \u0026ldquo;\u0026raquo; \u0026ldquo;; cin \u0026raquo; radius \u0026raquo; name; pizza[i].setRN(radius,name); size[i] = pizza[i].getArea(); } big=0; for(int i=0; i\u0026lt;4; i++){ if(size[i] \u0026lt; size[i+1]) big = i+1; } cout \u0026laquo; \u0026ldquo;가장 면적이 큰 피자는 \u0026quot; \u0026laquo; pizza[big].getName() \u0026laquo; \u0026ldquo;입니다\u0026rdquo;; } 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 8장 4번 (3) 2020.03.09 명품 C++ programming 실습 문제 8장 3번 (9) 2020.03.09 명품 C++ programming 실습 문제 8장 1번 (1) 2020.03.09 명품 C++ programming 실습 문제 7장 12번 (3) 2020.03.06 명품 C++ programming 실습 문제 7장 11번 (2) 2020.03.06 ","permalink":"https://blog.sobamemil.com/posts/103-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-8%EC%9E%A5-2%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e문제 1~2에 적용되는 원을 추상화한 Circle 클래스가 있다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8\u003c/td\u003e\n          \u003ctd\u003eclass Circle{  int radius;  public:  Circle(int radius=0) { this-\u0026gt;radius = radius; }  int getRadius() { return radius; }  void setRadius(int radius) { this-\u0026gt;radius = radius; }  double getArea() { return 3.14*radius*radius; }  };\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e다음과 같이 배열을 선언하여 다음 실행 결과가 나오도록 Circle을 상속받은 NamedCircle 클래스와 main() 함수 등 필요한 함수를 작성하라.\u003c/p\u003e","title":"명품 C++ programming 실습 문제 8장 2번"},{"content":"문제 :\n문제 1~2에 적용되는 원을 추상화한 Circle 클래스가 있다.\n1 2 3 4 5 6 7 8 class Circle{ int radius; public: Circle(int radius=0) { this-\u0026gt;radius = radius; } int getRadius() { return radius; } void setRadius(int radius) { this-\u0026gt;radius = radius; } double getArea() { return 3.14*radius*radius; } }; 다음 코드가 실행되도록 Circle을 상속받은 NamedCircle 클래스를 작성하고 전체 프로그램을 완성하라.\n1 2 NamedCircle waffle(3, \u0026ldquo;waffle\u0026rdquo;); // 반지름이 3이고 이름이 waffle인 원 waffle.show(); 실행 결과 :\n목적 및 힌트 :\n상속, 파생 클래스와 생성자 작성\nNamedCircle 클래스에 디폴트 매개 변수를 가진 생성자를 작성해야 한다.\n코드 :\n1 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 #include using namespace std; class Circle{ int radius; public: Circle(int radius=0) { this-\u0026gt;radius = radius; } int getRadius() { return radius; } void setRadius(int radius) { this-\u0026gt;radius = radius; } double getArea() { return 3.14*radius*radius; } }; class NameCircle : public Circle{ string name; public: NameCircle(int radius, string name){ setRadius(radius); this-\u0026gt;name = name; } void show() { cout \u0026laquo; \u0026ldquo;반지름이 \u0026quot; \u0026laquo; getRadius() \u0026laquo; \u0026ldquo;인 \u0026quot; \u0026laquo; this-\u0026gt;name; } }; int main() { NameCircle waffle(3, \u0026ldquo;waffle\u0026rdquo;); // 반지름이 3이고 이름이 waffle인 원 waffle.show(); } 설명 :\nCircle 클래스를 상속받은 NameCircle 클래스의 객체를 만들어 Circle 클래스의 멤버들에 접근하는 문제입니다.\n상속 개념이 없다면 객체 지향 언어라고 말하지 않습니다. 많은 장점이 있는 기능이므로 잘 익혀두시면 좋습니다.\n접근지정자에 대한 내용은 아래 링크에서 자세히 다루고 있습니다.\nhttps://en.cppreference.com/w/cpp/language/access\n[access specifiers - cppreference.com\nIn a member-specification of a class/struct or union, define the accessibility of subsequent members. In a base-specifier of a derived class declaration, define the accessibility of inherited members of the subsequent base class. [edit] Syntax public : mem\nen.cppreference.com](https://en.cppreference.com/w/cpp/language/access)\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 8장 3번 (9) 2020.03.09 명품 C++ programming 실습 문제 8장 2번 (4) 2020.03.09 명품 C++ programming 실습 문제 7장 12번 (3) 2020.03.06 명품 C++ programming 실습 문제 7장 11번 (2) 2020.03.06 명품 C++ programming 실습 문제 7장 10번 (3) 2020.03.06 ","permalink":"https://blog.sobamemil.com/posts/102-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-8%EC%9E%A5-1%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e문제 1~2에 적용되는 원을 추상화한 Circle 클래스가 있다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8\u003c/td\u003e\n          \u003ctd\u003eclass Circle{  int radius;  public:  Circle(int radius=0) { this-\u0026gt;radius = radius; }  int getRadius() { return radius; }  void setRadius(int radius) { this-\u0026gt;radius = radius; }  double getArea() { return 3.14*radius*radius; }  };\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e다음 코드가 실행되도록 Circle을 상속받은 NamedCircle 클래스를 작성하고 전체 프로그램을 완성하라.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2\u003c/td\u003e\n          \u003ctd\u003eNamedCircle waffle(3, \u0026ldquo;waffle\u0026rdquo;); // 반지름이 3이고 이름이 waffle인 원  waffle.show();\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 8장 1번"},{"content":"문제 :\n정수 배열을 항상 증가 순으로 유지하는 SortedArray 클래스를 작성하려고 한다.\n아래의 main() 함수가 작동할 만큼만 SortedArray 클래스를 작성하고 +와 = 연산자도 작성하라.\n1 2 3 4 5 6 7 8 9 10 11 12 13 class SortedArray{ int size; // 현재 배열의 크기 int *p; // 정수 배열에 대한 포인터 void sort(); // 정수 배열을 오름차순으로 정렬 public: SortedArray(); // p는 NULL로 size는 0으로 초기화 SortedArray(SortedArray\u0026amp; src); // 복사 생성자 SortedArray(int p[], int size); // 생성자. 정수 배열과 크기를 전달받음 ~SortedArray(); // 소멸자 SortedArray operator+ (SortedArray\u0026amp; op2); // 현재 배열에 op2 배열 추가 SortedArray\u0026amp; operator= (const SortedArray\u0026amp; op2); // 현재 배열에 op2 배열 복사 void show(); // 배열의 원소 출력 }; 1 2 3 4 5 6 7 8 9 10 11 12 int main() { int n[] = { 2, 20, 6 }; int m[] = { 10, 7, 8, 30 }; SortedArray a(n, 3), b(m, 4), c; c = a + b; // +, = 연산자 작성 필요 // + 연산자가 SortedArray 객체를 리턴하므로 복사 생성자 필요 a.show(); b.show(); c.show(); } 실행 결과 :\n목적 및 힌트 :\n연산자 중복, 복사 생성자의 종합 응용\n연산자는 SortedArray 객체를 리턴하므로 복사 생성자가 반드시 필요하다. a=b; 연산에서 = 연산자는 객체a의 배열 메모리를 모두 delete 시키고 객체 b의 크기만큼 다시 할당받은 후 객체 b의 배열 내용을 복사하도록 작성되어야 한다.\n코드 :\n1 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 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 #include using namespace std; class SortedArray{ int size; // 현재 배열의 크기 int *p; // 정수 배열에 대한 포인터 void sort(); // 정수 배열을 오름차순으로 정렬 public: SortedArray(); // p는 NULL로 size는 0으로 초기화 SortedArray(SortedArray\u0026amp; src); // 복사 생성자 SortedArray(int p[], int size); // 생성자. 정수 배열과 크기를 전달받음 ~SortedArray(); // 소멸자 SortedArray operator+ (SortedArray\u0026amp; op2); // 현재 배열에 op2 배열 추가 SortedArray\u0026amp; operator= (const SortedArray\u0026amp; op2); // 현재 배열에 op2 배열 복사 void show(); // 배열의 원소 출력 }; void SortedArray::show() { sort(); cout \u0026laquo; \u0026ldquo;배열 출력 : \u0026ldquo;; for(int i=0; i\u0026lt;size; i++) cout \u0026laquo; p[i] \u0026laquo; \u0026rsquo; \u0026lsquo;; cout \u0026laquo; endl; } SortedArray::SortedArray(){ size = 0; p = NULL; } SortedArray::SortedArray(int p[], int size){ this-\u0026gt;p = new int [size]; this-\u0026gt;size = size; for(int i=0; i\u0026lt;size; i++) this-\u0026gt;p[i] = p[i]; } SortedArray::SortedArray(SortedArray\u0026amp; src){ this-\u0026gt;size = src.size; this-\u0026gt;p = new int [this-\u0026gt;size]; for(int i=0; isize; i++) this-\u0026gt;p[i] = src.p[i]; } SortedArray\u0026amp; SortedArray::operator= (const SortedArray\u0026amp; op2){ delete [] p; // 배열 메모리 delete this-\u0026gt;size = op2.size; this-\u0026gt;p = new int [this-\u0026gt;size]; // 객체 op2의 크기만큼 다시 동적 할당 for(int i=0; isize; i++) this-\u0026gt;p[i] = op2.p[i]; return *this; } SortedArray SortedArray::operator+ ( SortedArray\u0026amp; op2){ SortedArray test; test.size = this-\u0026gt;size + op2.size; test.p = new int [test.size]; for(int i=0; i\u0026lt;test.size; i++){ if(i \u0026lt; this-\u0026gt;size) test.p[i] = this-\u0026gt;p[i]; else test.p[i] = op2.p[i-(test.size-op2.size)]; //total size - op2.size = this-\u0026gt;size } return test; } void SortedArray::sort(){ int swp; for(int i=0; i\u0026lt;size; i++){ //p[0] ~ p[size] sequential sort for(int j=i; j\u0026lt;size; j++){ if(p[i]\u0026lt;p[j] 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 8장 2번 (4) 2020.03.09 명품 C++ programming 실습 문제 8장 1번 (1) 2020.03.09 명품 C++ programming 실습 문제 7장 11번 (2) 2020.03.06 명품 C++ programming 실습 문제 7장 10번 (3) 2020.03.06 명품 C++ programming 실습 문제 7장 9번 (1) 2020.03.06 ","permalink":"https://blog.sobamemil.com/posts/101-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-7%EC%9E%A5-12%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e정수 배열을 항상 증가 순으로 유지하는 SortedArray 클래스를 작성하려고 한다.\u003c/p\u003e\n\u003cp\u003e아래의 main() 함수가 작동할 만큼만 SortedArray 클래스를 작성하고 +와 = 연산자도 작성하라.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13\u003c/td\u003e\n          \u003ctd\u003eclass SortedArray{  int size; // 현재 배열의 크기  int *p; // 정수 배열에 대한 포인터  void sort(); // 정수 배열을 오름차순으로 정렬  public:  SortedArray(); // p는 NULL로 size는 0으로 초기화  SortedArray(SortedArray\u0026amp; src); // 복사 생성자  SortedArray(int p[], int size); // 생성자. 정수 배열과 크기를 전달받음  ~SortedArray(); // 소멸자  SortedArray operator+ (SortedArray\u0026amp; op2); // 현재 배열에 op2 배열 추가  SortedArray\u0026amp; operator= (const SortedArray\u0026amp; op2); // 현재 배열에 op2 배열 복사  void show(); // 배열의 원소 출력  };\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12\u003c/td\u003e\n          \u003ctd\u003eint main() {  int n[] = { 2, 20, 6 };  int m[] = { 10, 7, 8, 30 };  SortedArray a(n, 3), b(m, 4), c;    c = a + b; // +, = 연산자 작성 필요  // + 연산자가 SortedArray 객체를 리턴하므로 복사 생성자 필요    a.show();  b.show();  c.show();  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 7장 12번"},{"content":"문제 :\n스택 클래스 Stack을 만들고 푸시(push)용으로 \u0026laquo; 연산자를, 팝(pop)을 위해 \u0026raquo; 연산자를, 비어 있는 스택인지를 알기 위해 ! 연산자를 작성하라.\n다음 코드를 main()으로 작성하라.\n1 2 3 4 5 6 7 8 9 Stack stack; stack \u0026laquo; 3 \u0026laquo; 5 \u0026laquo; 10; // 3,5,10 순서대로 push while(true){ if(!stack) break; //stack empty int x; stack \u0026raquo; x; //stack의 top에 있는 정수 pop cout \u0026laquo; x \u0026laquo; \u0026rsquo; \u0026lsquo;; } cout \u0026laquo; endl; 실행 결과 :\n목적 및 힌트 :\n참조 리턴 등 참조자(\u0026amp;) 사용이 필요한 연산자 종합 응용\n코드 :\n1 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 #include using namespace std; class Stack{ int stack[10]; int top; public: Stack(){ top=0; } Stack\u0026amp; operator\u0026laquo; (int num){ stack[top] = num; top++; return *this; } bool operator! (){ if(top) return false; return true; //top이 empty면 true 반환 } Stack operator\u0026raquo; (int\u0026amp; x){ x = stack[top-1]; top\u0026ndash;; return *this; } }; int main() { Stack stack; stack \u0026laquo; 3 \u0026laquo; 5 \u0026laquo; 10; // 3,5,10 순서대로 push while(true){ if(!stack) break; //stack empty int x; stack \u0026raquo; x; //stack의 top에 있는 정수 pop cout \u0026laquo; x \u0026laquo; \u0026rsquo; \u0026lsquo;; } cout \u0026laquo; endl; } 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 8장 1번 (1) 2020.03.09 명품 C++ programming 실습 문제 7장 12번 (3) 2020.03.06 명품 C++ programming 실습 문제 7장 10번 (3) 2020.03.06 명품 C++ programming 실습 문제 7장 9번 (1) 2020.03.06 명품 C++ programming 실습 문제 7장 8번 (1) 2020.03.06 ","permalink":"https://blog.sobamemil.com/posts/100-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-7%EC%9E%A5-11%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e스택 클래스 Stack을 만들고 푸시(push)용으로 \u0026laquo; 연산자를, 팝(pop)을 위해 \u0026raquo; 연산자를, 비어 있는 스택인지를 알기 위해 ! 연산자를 작성하라.\u003c/p\u003e\n\u003cp\u003e다음 코드를 main()으로 작성하라.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9\u003c/td\u003e\n          \u003ctd\u003eStack stack;  stack \u0026laquo; 3 \u0026laquo; 5 \u0026laquo; 10; // 3,5,10 순서대로 push  while(true){  if(!stack) break; //stack empty  int x;  stack \u0026raquo; x; //stack의 top에 있는 정수 pop  cout \u0026laquo; x \u0026laquo; \u0026rsquo; \u0026lsquo;;  }  cout \u0026laquo; endl;\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 7장 11번"},{"content":"문제 :\n통계를 내는 Statistics 클래스를 만들려고 한다.\n데이터는 Statistics 클래스 내부에 int 배열을 동적으로 할당받아 유지한다.\n다음과 같은 연산이 잘 이루어지도록 Statistics 클래스와 !, \u0026raquo;, \u0026laquo;, ~ 연산자 함수를 작성하라.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 int main() { Statistics stat; if(!stat) cout \u0026laquo; \u0026ldquo;현재 통계 데이타가 없습니다.\u0026rdquo; \u0026laquo; endl; int x[5]; cout \u0026laquo; \u0026ldquo;5 개의 정수를 입력하라\u0026raquo;\u0026rdquo;; for(int i=0; i\u0026lt;5; i++) cin \u0026raquo; x[i]; // x[i]에 정수 입력 for(int i=0; i\u0026lt;5; i++) stat \u0026laquo; x[i]; // x[i] 값을 통계 객체에 삽입한다. stat \u0026laquo; 100 \u0026laquo; 200; // 100, 200을 통계 객체에 삽입한다. ~stat; // 통계 데이터를 모두 출력한다. int avg; stat \u0026raquo; avg; // 통계 객체로부터 평균을 받는다. cout \u0026laquo; \u0026ldquo;avg=\u0026rdquo; \u0026laquo; avg \u0026laquo; endl; // 평균을 출력한다. } 실행 결과 :\n목적 및 힌트 :\n참조 리턴 등 참조자(\u0026amp;) 사용이 필요한 연산자 종합 응용\n코드 :\n1 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 #include using namespace std; class Statistics{ int *a; int cnt; //배열의 원소 개수 public: Statistics() { a = new int[8]; cnt=0; } bool operator! (){ if( this-\u0026gt;a \u0026amp;\u0026amp; this-\u0026gt;cnt==0) return true; return false; } Statistics\u0026amp; operator\u0026laquo; (int num){ this-\u0026gt;a[cnt] = num; cnt ++; return *this; } void operator~ (){ for(int i=0; i\u0026lt;cnt; i++) cout \u0026laquo; this-\u0026gt;a[i] \u0026laquo; \u0026rsquo; \u0026lsquo;; cout \u0026laquo; endl; } void operator\u0026raquo; (int\u0026amp; avg){ avg = 0; for(int i=0; i\u0026lt;cnt; i++) avg += a[i]; avg /= cnt; } ~Statistics(){ delete [] a; } }; int main() { Statistics stat; if(!stat) cout \u0026laquo; \u0026ldquo;현재 통계 데이타가 없습니다.\u0026rdquo; \u0026laquo; endl; int x[5]; cout \u0026laquo; \u0026ldquo;5 개의 정수를 입력하라\u0026raquo;\u0026rdquo;; for(int i=0; i\u0026lt;5; i++) cin \u0026raquo; x[i]; // x[i]에 정수 입력 for(int i=0; i\u0026lt;5; i++) stat \u0026laquo; x[i]; // x[i] 값을 통계 객체에 삽입한다. stat \u0026laquo; 100 \u0026laquo; 200; // 100, 200을 통계 객체에 삽입한다. ~stat; // 통계 데이터를 모두 출력한다. int avg; stat \u0026raquo; avg; // 통계 객체로부터 평균을 받는다. cout \u0026laquo; \u0026ldquo;avg=\u0026rdquo; \u0026laquo; avg \u0026laquo; endl; // 평균을 출력한다. } 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 7장 12번 (3) 2020.03.06 명품 C++ programming 실습 문제 7장 11번 (2) 2020.03.06 명품 C++ programming 실습 문제 7장 9번 (1) 2020.03.06 명품 C++ programming 실습 문제 7장 8번 (1) 2020.03.06 명품 C++ programming 실습 문제 7장 7번 (3) 2020.03.06 ","permalink":"https://blog.sobamemil.com/posts/099-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-7%EC%9E%A5-10%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e통계를 내는 Statistics 클래스를 만들려고 한다.\u003c/p\u003e\n\u003cp\u003e데이터는 Statistics 클래스 내부에 int 배열을 동적으로 할당받아 유지한다.\u003c/p\u003e\n\u003cp\u003e다음과 같은 연산이 잘 이루어지도록 Statistics 클래스와 !, \u0026raquo;, \u0026laquo;, ~ 연산자 함수를 작성하라.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16\u003c/td\u003e\n          \u003ctd\u003eint main() {  Statistics stat;  if(!stat) cout \u0026laquo; \u0026ldquo;현재 통계 데이타가 없습니다.\u0026rdquo; \u0026laquo; endl;    int x[5];  cout \u0026laquo; \u0026ldquo;5 개의 정수를 입력하라\u0026raquo;\u0026rdquo;;  for(int i=0; i\u0026lt;5; i++) cin \u0026raquo; x[i]; // x[i]에 정수 입력    for(int i=0; i\u0026lt;5; i++) stat \u0026laquo; x[i]; // x[i] 값을 통계 객체에 삽입한다.  stat \u0026laquo; 100 \u0026laquo; 200; // 100, 200을 통계 객체에 삽입한다.  ~stat; // 통계 데이터를 모두 출력한다.    int avg;  stat \u0026raquo; avg; // 통계 객체로부터 평균을 받는다.  cout \u0026laquo; \u0026ldquo;avg=\u0026rdquo; \u0026laquo; avg \u0026laquo; endl;  // 평균을 출력한다.  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 7장 10번"},{"content":"문제 :\n문제 8번의 Circle 객체에 대해 다음 연산이 가능하도록 연산자를 구현하라.\n1 2 3 4 Circle a(5), b(4); b = 1+a; // b의 반지름을 a의 반지름에 1을 더한 것으로 변경 a.show(); b.show(); 2020/03/06 - [C++/명품 C++ programming] - 명품 C++ programming 실습 문제 7장 8번\n[명품 C++ programming 실습 문제 7장 8번\n문제 : 원을 추상화한 Circle 클래스는 간단히 아래와 같다. 1 2 3 4 5 6 class Circle{ int radius; public: Circle(int radius=0) { this-\u0026gt;radius = radius; } void show() { cout \u0026laquo; \u0026ldquo;radius = \u0026quot; \u0026laquo; radius \u0026laquo;..\nsobamemil.tistory.com](https://sobamemil.tistory.com/97)\n실행 결과 :\n목적 및 힌트 :\n프렌드 함수로 연산자 구현 연습\n코드 :\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #include using namespace std; class Circle{ int radius; public: Circle(int radius=0) { this-\u0026gt;radius = radius; } void show() { cout \u0026laquo; \u0026ldquo;radius = \u0026quot; \u0026laquo; radius \u0026laquo; \u0026quot; 인 원\u0026rdquo; \u0026laquo; endl; } friend Circle operator+ (int x, Circle c); }; Circle operator+ (int x, Circle c){ c.radius += x; return c; } int main() { Circle a(5), b(4); b = 1+a; // b의 반지름을 a의 반지름에 1을 더한 것으로 변경 a.show(); b.show(); } 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 7장 11번 (2) 2020.03.06 명품 C++ programming 실습 문제 7장 10번 (3) 2020.03.06 명품 C++ programming 실습 문제 7장 8번 (1) 2020.03.06 명품 C++ programming 실습 문제 7장 7번 (3) 2020.03.06 명품 C++ programming 실습 문제 7장 6번 (1) 2020.03.06 ","permalink":"https://blog.sobamemil.com/posts/098-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-7%EC%9E%A5-9%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e문제 8번의 Circle 객체에 대해 다음 연산이 가능하도록 연산자를 구현하라.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4\u003c/td\u003e\n          \u003ctd\u003eCircle a(5), b(4);  b = 1+a; // b의 반지름을 a의 반지름에 1을 더한 것으로 변경  a.show();  b.show();\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003ca href=\"https://sobamemil.tistory.com/97\"\u003e2020/03/06 - [C++/명품 C++ programming] - 명품 C++ programming 실습 문제 7장 8번\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e[명품 C++ programming 실습 문제 7장 8번\u003c/p\u003e\n\u003cp\u003e문제 : 원을 추상화한 Circle 클래스는 간단히 아래와 같다. 1 2 3 4 5 6 class Circle{ int radius; public: Circle(int radius=0) { this-\u0026gt;radius = radius; } void show() { cout \u0026laquo; \u0026ldquo;radius = \u0026quot; \u0026laquo; radius \u0026laquo;..\u003c/p\u003e","title":"명품 C++ programming 실습 문제 7장 9번"},{"content":"문제 :\n원을 추상화한 Circle 클래스는 간단히 아래와 같다.\n1 2 3 4 5 6 class Circle{ int radius; public: Circle(int radius=0) { this-\u0026gt;radius = radius; } void show() { cout \u0026laquo; \u0026ldquo;radius = \u0026quot; \u0026laquo; radius \u0026laquo; \u0026quot; 인 원\u0026rdquo; \u0026laquo; endl; } }; 다음 연산이 가능하도록 연산자를 프렌드 함수로 작성하라.\n1 2 3 4 5 Circle a(5), b(4); ++a; // 반지름을 1 증가 시킨다. b = a++; // 반지름을 1 증가 시킨다. a.show(); b.show(); 실행 결과 :\n목적 및 힌트 :\n프렌드 함수로 연산자 구현 연습\n코드 :\n1 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 #include using namespace std; class Circle{ int radius; public: Circle(int radius=0) { this-\u0026gt;radius = radius; } void show() { cout \u0026laquo; \u0026ldquo;radius = \u0026quot; \u0026laquo; radius \u0026laquo; \u0026quot; 인 원\u0026rdquo; \u0026laquo; endl; } friend Circle\u0026amp; operator++(Circle\u0026amp; c); friend Circle operator++(Circle\u0026amp; c, int x); }; Circle\u0026amp; operator++(Circle\u0026amp; c){ c.radius++; return c; } Circle operator++(Circle\u0026amp; c, int x){ Circle test = c; c.radius++; return test; } int main() { Circle a(5), b(4); ++a; // 반지름을 1 증가 시킨다. b = a++; // 반지름을 1 증가 시킨다. a.show(); b.show(); } 설명 :\n전위 ++ 연산과 후위 ++ 연산 모두 참조 매개 변수를 사용하고 전위 연산자의 경우 참조를 리턴합니다.\n참조 매개 변수를 사용하지 않는다면, 매개 변수에 복사본이 전달되므로 본래의 값은 변하지 않습니다.\n후위 연산자의 int x 매개 변수는 의미 없는 값이고, 이는 후위 연산자와 전위 연산자를 구분하기 위해 전달해주는 매개 변수입니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 7장 10번 (3) 2020.03.06 명품 C++ programming 실습 문제 7장 9번 (1) 2020.03.06 명품 C++ programming 실습 문제 7장 7번 (3) 2020.03.06 명품 C++ programming 실습 문제 7장 6번 (1) 2020.03.06 명품 C++ programming 실습 문제 7장 5번 (1) 2020.03.06 ","permalink":"https://blog.sobamemil.com/posts/097-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-7%EC%9E%A5-8%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e원을 추상화한 Circle 클래스는 간단히 아래와 같다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6\u003c/td\u003e\n          \u003ctd\u003eclass Circle{  int radius;  public:  Circle(int radius=0) { this-\u0026gt;radius = radius; }  void show() { cout \u0026laquo; \u0026ldquo;radius = \u0026quot; \u0026laquo; radius \u0026laquo; \u0026quot; 인 원\u0026rdquo; \u0026laquo; endl; }  };\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e다음 연산이 가능하도록 연산자를 프렌드 함수로 작성하라.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5\u003c/td\u003e\n          \u003ctd\u003eCircle a(5), b(4);  ++a; // 반지름을 1 증가 시킨다.  b = a++; // 반지름을 1 증가 시킨다.  a.show();  b.show();\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 7장 8번"},{"content":"문제 :\n2차원 행렬을 추상화한 Matrix 클래스를 활용하는 다음 코드가 있다.\n1 2 3 4 5 6 7 8 Matrix a(4,3,2,1), b; int x[4], y[4]={1,2,3,4}; // 2차원 행렬의 4 개의 원소 값 a \u0026raquo; x; // a의 각 원소를 배열 x에 복사. x[]는 {4,3,2,1} b \u0026laquo; y; // 배열 y의 원소 값을 b의 각 원소에 설정 for(int i=0; i\u0026lt;4; i++) cout \u0026laquo; x[i] \u0026laquo; \u0026rsquo; \u0026lsquo;; // x[] 출력 cout \u0026laquo; endl; b.show(); (1) \u0026laquo;, \u0026raquo; 연산자 함수를 Matrix의 멤버 함수로 구현하라.\n(2) \u0026laquo;, \u0026raquo; 연산자 함수를 Matrix의 프렌드 함수로 구현하라.\n실행 결과 :\n목적 및 힌트 :\n\u0026laquo;, \u0026raquo; 연산자와 클래스 구현 연습\n코드 :\n● 문제 (1)\n1 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 #include using namespace std; class Matrix{ int arr[4]; public: Matrix(){;} Matrix(int a, int b, int c, int d) { arr[0]=a; arr[1]=b; arr[2]=c; arr[3]=d; } void show(); void operator\u0026raquo; (int x[]); void operator\u0026laquo; (int y[]); }; void Matrix::show() { cout \u0026laquo; \u0026ldquo;Matrix\u0026rdquo; \u0026laquo; \u0026quot; = { \u0026ldquo;; for(int i=0; i\u0026lt;4; i++) cout \u0026laquo; this-\u0026gt;arr[i] \u0026laquo; \u0026rsquo; \u0026lsquo;; cout \u0026laquo; \u0026ldquo;}\u0026rdquo; \u0026laquo; endl; } void Matrix::operator\u0026raquo; (int x[]){ for(int i=0; i\u0026lt;4; i++){ x[i] = this-\u0026gt;arr[i]; } } void Matrix::operator\u0026laquo; (int y[]){ for(int i=0; i\u0026lt;4; i++){ this-\u0026gt;arr[i] = y[i]; } } int main() { Matrix a(4,3,2,1), b; int x[4], y[4]={1,2,3,4}; // 2차원 행렬의 4 개의 원소 값 a \u0026raquo; x; // a의 각 원소를 배열 x에 복사. x[]는 {4,3,2,1} b \u0026laquo; y; // 배열 y의 원소 값을 b의 각 원소에 설정 for(int i=0; i\u0026lt;4; i++) cout \u0026laquo; x[i] \u0026laquo; \u0026rsquo; \u0026lsquo;; // x[] 출력 cout \u0026laquo; endl; b.show(); } ● 문제 (2)\n1 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 #include using namespace std; class Matrix{ int arr[4]; public: Matrix(){;} Matrix(int a, int b, int c, int d) { arr[0]=a; arr[1]=b; arr[2]=c; arr[3]=d; } void show(); friend void operator\u0026raquo; (Matrix\u0026amp; a, int x[]); friend void operator\u0026laquo; (Matrix\u0026amp; b, int y[]); }; void Matrix::show() { cout \u0026laquo; \u0026ldquo;Matrix\u0026rdquo; \u0026laquo; \u0026quot; = { \u0026ldquo;; for(int i=0; i\u0026lt;4; i++) cout \u0026laquo; this-\u0026gt;arr[i] \u0026laquo; \u0026rsquo; \u0026lsquo;; cout \u0026laquo; \u0026ldquo;}\u0026rdquo; \u0026laquo; endl; } void operator\u0026raquo; (Matrix\u0026amp; a, int x[]){ for(int i=0; i\u0026lt;4; i++){ x[i] = a.arr[i]; } } void operator\u0026laquo; (Matrix\u0026amp; b, int y[]){ for(int i=0; i\u0026lt;4; i++){ b.arr[i] = y[i]; } } int main() { Matrix a(4,3,2,1), b; int x[4], y[4]={1,2,3,4}; // 2차원 행렬의 4 개의 원소 값 a \u0026raquo; x; // a의 각 원소를 배열 x에 복사. x[]는 {4,3,2,1} b \u0026laquo; y; // 배열 y의 원소 값을 b의 각 원소에 설정 for(int i=0; i\u0026lt;4; i++) cout \u0026laquo; x[i] \u0026laquo; \u0026rsquo; \u0026lsquo;; // x[] 출력 cout \u0026laquo; endl; b.show(); } 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 7장 9번 (1) 2020.03.06 명품 C++ programming 실습 문제 7장 8번 (1) 2020.03.06 명품 C++ programming 실습 문제 7장 6번 (1) 2020.03.06 명품 C++ programming 실습 문제 7장 5번 (1) 2020.03.06 명품 C++ programming 실습 문제 7장 4번 (3) 2020.03.06 ","permalink":"https://blog.sobamemil.com/posts/096-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-7%EC%9E%A5-7%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e2차원 행렬을 추상화한 Matrix 클래스를 활용하는 다음 코드가 있다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8\u003c/td\u003e\n          \u003ctd\u003eMatrix a(4,3,2,1), b;  int x[4], y[4]={1,2,3,4}; // 2차원 행렬의 4 개의 원소 값  a \u0026raquo; x; // a의 각 원소를 배열 x에 복사. x[]는 {4,3,2,1}  b \u0026laquo; y; // 배열 y의 원소 값을 b의 각 원소에 설정    for(int i=0; i\u0026lt;4; i++) cout \u0026laquo; x[i] \u0026laquo; \u0026rsquo; \u0026lsquo;; // x[] 출력  cout \u0026laquo; endl;  b.show();\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e(1) \u0026laquo;, \u0026raquo; 연산자 함수를 Matrix의 멤버 함수로 구현하라.\u003c/p\u003e","title":"명품 C++ programming 실습 문제 7장 7번"},{"content":"문제 :\n2차원 행렬을 추상화한 Matrix 클래스를 작성하고, show() 멤버 함수와 다음 연산이 가능하도록 연산자를 모두 구현하라.\n1 2 3 4 5 6 Matrix a(1,2,3,4), b(2,3,4,5), c; c = a + b; a += b; a.show(); b.show(); c.show(); if(a==c) cout \u0026laquo; \u0026ldquo;a and c are the same\u0026rdquo; \u0026laquo; endl; (1) 연산자 함수를 Matrix의 멤버 함수로 구현하라.\n(2) 연산자 함수를 Matrix의 프렌드 함수로 구현하라.\n실행 결과 :\n목적 및 힌트 :\n연산자와 클래스 구현 연습\n코드 :\n● 문제 (1)\n1 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 using namespace std; class Matrix{ int num[4]; public: Matrix(){;} Matrix(int a, int b, int c, int d){ num[0] = a; num[1] = b; num[2] = c; num[3] = d; }; void show(); Matrix operator+ (Matrix b); Matrix operator+= (Matrix \u0026amp;b); bool operator== (Matrix b); }; Matrix Matrix::operator+ (Matrix b){ Matrix t; for(int i=0; i\u0026lt;4; i++) t.num[i] = this-\u0026gt;num[i] + b.num[i]; return t; } Matrix Matrix::operator+= (Matrix \u0026amp;b){ for(int i=0; i\u0026lt;4; i++) this-\u0026gt;num[i] += b.num[i]; return *this; } bool Matrix::operator== (Matrix c){ for(int i=0; i\u0026lt;4; i++){ if(this-\u0026gt;num[i] == c.num[i]); else return false; } return true; } void Matrix::show(){ cout \u0026laquo; \u0026ldquo;Matrix = { \u0026ldquo;; for(int i=0; i\u0026lt;4; i++){ cout \u0026laquo; this-\u0026gt;num[i] \u0026laquo; \u0026rsquo; \u0026lsquo;; } cout \u0026laquo; \u0026ldquo;}\u0026rdquo; \u0026laquo; endl; } int main() { Matrix a(1,2,3,4), b(2,3,4,5), c; c = a + b; a += b; a.show(); b.show(); c.show(); if(a==c) cout \u0026laquo; \u0026ldquo;a and c are the same\u0026rdquo; \u0026laquo; endl; } Colored by Color Scripter ● 문제 (2)\n1 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 #include using namespace std; class Matrix{ int num[4]; public: Matrix(){;} Matrix(int a, int b, int c, int d){ num[0] = a; num[1] = b; num[2] = c; num[3] = d; }; void show(); friend Matrix operator+ (Matrix a, Matrix b); friend void operator+= (Matrix \u0026amp;a, Matrix \u0026amp;b); friend bool operator== (Matrix a, Matrix b); }; Matrix operator+ (Matrix a, Matrix b){ Matrix t; for(int i=0; i\u0026lt;4; i++) t.num[i] = a.num[i] + b.num[i]; return t; } void operator+= (Matrix \u0026amp;a, Matrix \u0026amp;b){ for(int i=0; i\u0026lt;4; i++) a.num[i] += b.num[i]; } bool operator== (Matrix a, Matrix c){ for(int i=0; i\u0026lt;4; i++){ if(a.num[i] == c.num[i]); else return false; } return true; } void Matrix::show(){ cout \u0026laquo; \u0026ldquo;Matrix = { \u0026ldquo;; for(int i=0; i\u0026lt;4; i++){ cout \u0026laquo; this-\u0026gt;num[i] \u0026laquo; \u0026rsquo; \u0026lsquo;; } cout \u0026laquo; \u0026ldquo;}\u0026rdquo; \u0026laquo; endl; } int main() { Matrix a(1,2,3,4), b(2,3,4,5), c; c = a + b; a += b; a.show(); b.show(); c.show(); if(a==c) cout \u0026laquo; \u0026ldquo;a and c are the same\u0026rdquo; \u0026laquo; endl; } 설명 :\n이 문제를 해결하기 위해서는 +, +=, == 연산자를 구현하여야 합니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 7장 8번 (1) 2020.03.06 명품 C++ programming 실습 문제 7장 7번 (3) 2020.03.06 명품 C++ programming 실습 문제 7장 5번 (1) 2020.03.06 명품 C++ programming 실습 문제 7장 4번 (3) 2020.03.06 명품 C++ programming 실습 문제 7장 3번 (1) 2020.03.06 ","permalink":"https://blog.sobamemil.com/posts/095-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-7%EC%9E%A5-6%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e2차원 행렬을 추상화한 Matrix 클래스를 작성하고, show() 멤버 함수와 다음 연산이 가능하도록 연산자를 모두 구현하라.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6\u003c/td\u003e\n          \u003ctd\u003eMatrix a(1,2,3,4), b(2,3,4,5), c;  c = a + b;  a += b;  a.show(); b.show(); c.show();  if(a==c)  cout \u0026laquo; \u0026ldquo;a and c are the same\u0026rdquo; \u0026laquo; endl;\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e(1) 연산자 함수를 Matrix의 멤버 함수로 구현하라.\u003c/p\u003e\n\u003cp\u003e(2) 연산자 함수를 Matrix의 프렌드 함수로 구현하라.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/95/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 7장 6번"},{"content":"문제 :\n다음 main()에서 Color 클래스는 3요소(빨강, 초록, 파랑)로 하나의 색을 나타내는 클래스이다(4장 실습 문제 1번 참고).\n연산자로 색을 더하고, == 연산자로 색을 비교하고자 한다. 실행 결과를 참고하여 Color 클래스와 연산자, 그리고 프로그램을 완성하라.\n1 2 3 4 5 6 7 8 9 10 11 int main() { Color red(255, 0, 0), blue(0, 0, 255), c; c = red + blue; c.show(); // 색 값 출력 Color fuchsia(255,0,255); if(c == fuchsia) cout \u0026laquo; \u0026ldquo;보라색 맞음\u0026rdquo;; else cout \u0026laquo; \u0026ldquo;보라색 아님\u0026rdquo;; } (1) +와 == 연산자를 Color 클래스의 멤버 함수로 구현하라.\n(2) +와 == 연산자를 Color 클래스의 프렌드 함수로 구현하라.\n2020/03/04 - [C++/명품 C++ programming] - 명품 C++ programming 실습 문제 4장 1번\n[명품 C++ programming 실습 문제 4장 1번\n문제 : 다음은 색의 3요소인 red, green, blue로 색을 추상화한 Color 클래스를 선언하고 활용하는 코드이다. 빈칸을 채워라. red, green, blue는 0~255의 값만 가진다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1..\nsobamemil.tistory.com](https://sobamemil.tistory.com/55)\n실행 결과 :\n목적 및 힌트 :\n연산자를 클래스의 멤버 함수와 프렌드로 각각 중복\n코드 :\n● 문제 (1)\n1 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 #include using namespace std; class Color{ int red, blue, green; public: Color(){;} Color(int a, int b, int c) { red = a; green = b; blue = c; } show() { cout \u0026laquo; red \u0026laquo; \u0026rsquo; \u0026rsquo; \u0026laquo; green \u0026laquo; \u0026rsquo; \u0026rsquo; \u0026laquo; blue \u0026laquo; endl; } Color operator+ (Color b); bool operator== (Color a); }; Color Color::operator+ (Color b){ Color a; a.red = this-\u0026gt;red + b.red; a.green = this-\u0026gt;green + b.green; a.blue = this-\u0026gt;blue + b.blue; return a; } bool Color::operator== (Color a){ if(this-\u0026gt;red == a.red \u0026amp;\u0026amp; this-\u0026gt;blue == a.blue) return true; return false; } int main() { Color red(255, 0, 0), blue(0, 0, 255), c; c = red + blue; c.show(); // 색 값 출력 Color fuchsia(255,0,255); if(c == fuchsia) cout \u0026laquo; \u0026ldquo;보라색 맞음\u0026rdquo;; else cout \u0026laquo; \u0026ldquo;보라색 아님\u0026rdquo;; } ● 문제 (2)\n1 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 #include using namespace std; class Color{ int red, blue, green; public: Color(){;} Color(int a, int b, int c) { red = a; green = b; blue = c; } show() { cout \u0026laquo; red \u0026laquo; \u0026rsquo; \u0026rsquo; \u0026laquo; green \u0026laquo; \u0026rsquo; \u0026rsquo; \u0026laquo; blue \u0026laquo; endl; } friend Color operator+ (Color a, Color b); friend bool operator== (Color a, Color b); }; Color operator+ (Color a, Color b){ Color c; c.red = a.red + b.red; c.green = a.green + b.green; c.blue = a.blue + b.blue; return c; } bool operator== (Color a, Color b){ if(a.red == b.red \u0026amp;\u0026amp; a.blue == b.blue) return true; return false; } int main() { Color red(255, 0, 0), blue(0, 0, 255), c; c = red + blue; c.show(); // 색 값 출력 Color fuchsia(255,0,255); if(c == fuchsia) cout \u0026laquo; \u0026ldquo;보라색 맞음\u0026rdquo;; else cout \u0026laquo; \u0026ldquo;보라색 아님\u0026rdquo;; } 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 7장 7번 (3) 2020.03.06 명품 C++ programming 실습 문제 7장 6번 (1) 2020.03.06 명품 C++ programming 실습 문제 7장 4번 (3) 2020.03.06 명품 C++ programming 실습 문제 7장 3번 (1) 2020.03.06 명품 C++ programming 실습 문제 7장 2번 (3) 2020.03.06 ","permalink":"https://blog.sobamemil.com/posts/094-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-7%EC%9E%A5-5%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e다음 main()에서 Color 클래스는 3요소(빨강, 초록, 파랑)로 하나의 색을 나타내는 클래스이다(4장 실습 문제 1번 참고).\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e연산자로 색을 더하고, == 연산자로 색을 비교하고자 한다.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e실행 결과를 참고하여 Color 클래스와 연산자, 그리고 프로그램을 완성하라.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11\u003c/td\u003e\n          \u003ctd\u003eint main() {  Color red(255, 0, 0), blue(0, 0, 255), c;  c = red + blue;  c.show(); // 색 값 출력    Color fuchsia(255,0,255);  if(c == fuchsia)  cout \u0026laquo; \u0026ldquo;보라색 맞음\u0026rdquo;;  else  cout \u0026laquo; \u0026ldquo;보라색 아님\u0026rdquo;;  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e(1) +와 == 연산자를 Color 클래스의 멤버 함수로 구현하라.\u003c/p\u003e","title":"명품 C++ programming 실습 문제 7장 5번"},{"content":"문제 :\n1번 ~ 4번 문제까지 사용될 Book 클래스는 다음과 같습니다.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 class Book{ string title; int price, pages; public: Book(string title=\u0026quot;\u0026quot;, int price=0, int pages=0){ this-\u0026gt;title = title; this-\u0026gt;price = price; this-\u0026gt;pages = pages; } void show() { cout \u0026laquo; title \u0026laquo; \u0026quot; \u0026quot; \u0026laquo; price \u0026laquo; \u0026ldquo;원 \u0026quot; \u0026laquo; pages \u0026laquo; \u0026quot; 페이지\u0026rdquo; \u0026laquo; endl; } string getTitle() { return title; } }; 다음 연산을 통해 책의 제목을 사전 순으로 비교하고자 한다.\n\u0026lt; 연산자를 작성하라.\n1 2 3 4 5 6 7 8 int main() { Book a(\u0026ldquo;청춘\u0026rdquo; , 2000 , 300); string b; cout \u0026laquo; \u0026ldquo;책 이름을 입력하세요\u0026raquo;\u0026rdquo;; getline(cin, b); // 키보드로부터 문자열로 책 이름을 입력 받음 if(b \u0026lt; a) cout \u0026laquo; a.getTitle() \u0026laquo; \u0026ldquo;이 \u0026quot; \u0026laquo; b \u0026laquo; \u0026ldquo;보다 뒤에 있구나!\u0026rdquo; \u0026laquo; endl; } 실행 결과 :\n목적 및 힌트 :\n\u0026lt; 연산자 구현 연습\n코드 :\n1 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 #include using namespace std; class Book{ string title; int price, pages; public: Book(string title=\u0026rdquo;\u0026quot;, int price=0, int pages=0){ this-\u0026gt;title = title; this-\u0026gt;price = price; this-\u0026gt;pages = pages; } void show() { cout \u0026laquo; title \u0026laquo; \u0026quot; \u0026quot; \u0026laquo; price \u0026laquo; \u0026ldquo;원 \u0026quot; \u0026laquo; pages \u0026laquo; \u0026quot; 페이지\u0026rdquo; \u0026laquo; endl; } string getTitle() { return title; } friend bool operator\u0026lt; (string b, Book\u0026amp; a); }; bool operator\u0026lt; (string b, Book\u0026amp; a){ if(b \u0026lt; a.title) return true; return false; } int main() { Book a(\u0026ldquo;청춘\u0026rdquo; , 2000 , 300); string b; cout \u0026laquo; \u0026ldquo;책 이름을 입력하세요\u0026raquo;\u0026rdquo;; getline(cin, b); // 키보드로부터 문자열로 책 이름을 입력 받음 if(b \u0026lt; a) cout \u0026laquo; a.getTitle() \u0026laquo; \u0026ldquo;이 \u0026quot; \u0026laquo; b \u0026laquo; \u0026ldquo;보다 뒤에 있구나!\u0026rdquo; \u0026laquo; endl; } 설명 :\n\u0026lt; 연산자 함수를 클래스 외부 함수로 작성하고 클래스 내부에서 friend로 선언을 해주었습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 7장 6번 (1) 2020.03.06 명품 C++ programming 실습 문제 7장 5번 (1) 2020.03.06 명품 C++ programming 실습 문제 7장 3번 (1) 2020.03.06 명품 C++ programming 실습 문제 7장 2번 (3) 2020.03.06 명품 C++ programming 실습 문제 7장 1번 (3) 2020.03.06 ","permalink":"https://blog.sobamemil.com/posts/093-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-7%EC%9E%A5-4%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e1번 ~ 4번 문제까지 사용될 Book 클래스는 다음과 같습니다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14\u003c/td\u003e\n          \u003ctd\u003eclass Book{  string title;  int price, pages;  public:  Book(string title=\u0026quot;\u0026quot;, int price=0, int pages=0){  this-\u0026gt;title = title; this-\u0026gt;price = price; this-\u0026gt;pages = pages;  }  void show() {  cout \u0026laquo; title \u0026laquo; \u0026quot; \u0026quot; \u0026laquo; price \u0026laquo; \u0026ldquo;원 \u0026quot; \u0026laquo; pages \u0026laquo; \u0026quot; 페이지\u0026rdquo; \u0026laquo; endl;  }  string getTitle() {  return title;  }  };\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e다음 연산을 통해 책의 제목을 사전 순으로 비교하고자 한다.\u003c/p\u003e","title":"명품 C++ programming 실습 문제 7장 4번"},{"content":"문제 :\n1번 ~ 4번 문제까지 사용될 Book 클래스는 다음과 같습니다.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 class Book{ string title; int price, pages; public: Book(string title=\u0026quot;\u0026quot;, int price=0, int pages=0){ this-\u0026gt;title = title; this-\u0026gt;price = price; this-\u0026gt;pages = pages; } void show() { cout \u0026laquo; title \u0026laquo; \u0026quot; \u0026quot; \u0026laquo; price \u0026laquo; \u0026ldquo;원 \u0026quot; \u0026laquo; pages \u0026laquo; \u0026quot; 페이지\u0026rdquo; \u0026laquo; endl; } string getTitle() { return title; } }; 다음 연산을 통해 공짜 책인지를 판별하도록 ! 연산자를 작성하라.\n1 2 Book book(\u0026ldquo;벼룩시장\u0026rdquo; , 0 , 50); // 가격은 0 if(!book) cout \u0026laquo; \u0026ldquo;공짜다\u0026rdquo; \u0026laquo; endl; 실행 결과 :\n목적 및 힌트 :\n! 연산자 구현 연습\n코드 :\n1 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 #include using namespace std; class Book{ string title; int price, pages; public: Book(string title=\u0026quot;\u0026quot;, int price=0, int pages=0){ this-\u0026gt;title = title; this-\u0026gt;price = price; this-\u0026gt;pages = pages; } void show() { cout \u0026laquo; title \u0026laquo; \u0026quot; \u0026quot; \u0026laquo; price \u0026laquo; \u0026ldquo;원 \u0026quot; \u0026laquo; pages \u0026laquo; \u0026quot; 페이지\u0026rdquo; \u0026laquo; endl; } string getTitle() { return title; } bool operator! (); }; bool Book::operator!(){ if(price == 0) return true; return false; } int main() { Book book(\u0026ldquo;벼룩시장\u0026rdquo; , 0 , 50); // 가격은 0 if(!book) cout \u0026laquo; \u0026ldquo;공짜다\u0026rdquo; \u0026laquo; endl; } 설명 :\n! 연산자 함수를 클래스의 멤버 함수로 구현 하였습니다.\n가격을 비교하여 0이면 true를 return하고 0이 아니면 false를 return하면 됩니다.\n가격은 음수가 아니라고 가정했습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 7장 5번 (1) 2020.03.06 명품 C++ programming 실습 문제 7장 4번 (3) 2020.03.06 명품 C++ programming 실습 문제 7장 2번 (3) 2020.03.06 명품 C++ programming 실습 문제 7장 1번 (3) 2020.03.06 명품 C++ programming 실습 문제 6장 9번 (2) 2020.03.06 ","permalink":"https://blog.sobamemil.com/posts/092-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-7%EC%9E%A5-3%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e1번 ~ 4번 문제까지 사용될 Book 클래스는 다음과 같습니다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14\u003c/td\u003e\n          \u003ctd\u003eclass Book{  string title;  int price, pages;  public:  Book(string title=\u0026quot;\u0026quot;, int price=0, int pages=0){  this-\u0026gt;title = title; this-\u0026gt;price = price; this-\u0026gt;pages = pages;  }  void show() {  cout \u0026laquo; title \u0026laquo; \u0026quot; \u0026quot; \u0026laquo; price \u0026laquo; \u0026ldquo;원 \u0026quot; \u0026laquo; pages \u0026laquo; \u0026quot; 페이지\u0026rdquo; \u0026laquo; endl;  }  string getTitle() {  return title;  }  };\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e다음 연산을 통해 공짜 책인지를 판별하도록 ! 연산자를 작성하라.\u003c/p\u003e","title":"명품 C++ programming 실습 문제 7장 3번"},{"content":"문제 :\n1번 ~ 4번 문제까지 사용될 Book 클래스는 다음과 같습니다.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 class Book{ string title; int price, pages; public: Book(string title=\u0026quot;\u0026quot;, int price=0, int pages=0){ this-\u0026gt;title = title; this-\u0026gt;price = price; this-\u0026gt;pages = pages; } void show() { cout \u0026laquo; title \u0026laquo; \u0026quot; \u0026quot; \u0026laquo; price \u0026laquo; \u0026ldquo;원 \u0026quot; \u0026laquo; pages \u0026laquo; \u0026quot; 페이지\u0026rdquo; \u0026laquo; endl; } string getTitle() { return title; } }; Book 객체를 활용하는 사례이다.\n1 2 3 4 Book a(\u0026ldquo;명품 C++\u0026rdquo; , 30000, 500), b(\u0026ldquo;고품 C++\u0026quot;, 30000, 500); if(a == 30000) cout \u0026laquo; \u0026ldquo;정가 30000원\u0026rdquo; \u0026laquo; endl; // price 비교 if(a == \u0026ldquo;명품 C++\u0026quot;) cout \u0026laquo; \u0026ldquo;명품 C++ 입니다.\u0026rdquo; \u0026laquo; endl; // 책 title 비교 if(a == b) cout \u0026laquo; \u0026ldquo;두 책이 같은 책입니다.\u0026rdquo; \u0026laquo; endl; // title, price, pages 모두 비교 (1) 세 개의 == 연산자 함수를 가진 Book 클래스를 작성하라.\n(2) 세 개의 == 연산자를 프렌드 함수로 작성하라.\n실행 결과 :\n목적 및 힌트 :\n== 연산자 구현 연습\n코드 :\n● 문제 (1)\n1 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 #include using namespace std; class Book{ string title; int price, pages; public: Book(string title=\u0026rdquo;\u0026quot;, int price=0, int pages=0){ this-\u0026gt;title = title; this-\u0026gt;price = price; this-\u0026gt;pages = pages; } void show() { cout \u0026laquo; title \u0026laquo; \u0026quot; \u0026quot; \u0026laquo; price \u0026laquo; \u0026ldquo;원 \u0026quot; \u0026laquo; pages \u0026laquo; \u0026quot; 페이지\u0026rdquo; \u0026laquo; endl; } string getTitle() { return title; } bool operator== (int a); bool operator== (string a); bool operator== (Book\u0026amp; a); }; bool Book::operator==(int a){ if(price == a) return true; return false; } bool Book::operator==(string a){ if(title == a) return true; return false; } bool Book::operator==(Book\u0026amp; a){ if(this-\u0026gt;price == a.price \u0026amp;\u0026amp; this-\u0026gt;title == a.title) return true; return false; } int main() { Book a(\u0026ldquo;명품 C++\u0026rdquo; , 30000, 500), b(\u0026ldquo;고품 C++\u0026quot;, 30000, 500); if(a == 30000) cout \u0026laquo; \u0026ldquo;정가 30000원\u0026rdquo; \u0026laquo; endl; // price 비교 if(a == \u0026ldquo;명품 C++\u0026quot;) cout \u0026laquo; \u0026ldquo;명품 C++ 입니다.\u0026rdquo; \u0026laquo; endl; // 책 title 비교 if(a == b) cout \u0026laquo; \u0026ldquo;두 책이 같은 책입니다.\u0026rdquo; \u0026laquo; endl; // title, price, pages 모두 비교 } ● 문제 (2)\n1 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 #include using namespace std; class Book{ string title; int price, pages; public: Book(string title=\u0026rdquo;\u0026quot;, int price=0, int pages=0){ this-\u0026gt;title = title; this-\u0026gt;price = price; this-\u0026gt;pages = pages; } void show() { cout \u0026laquo; title \u0026laquo; \u0026quot; \u0026quot; \u0026laquo; price \u0026laquo; \u0026ldquo;원 \u0026quot; \u0026laquo; pages \u0026laquo; \u0026quot; 페이지\u0026rdquo; \u0026laquo; endl; } string getTitle() { return title; } friend bool operator== (Book\u0026amp; b, int a); friend bool operator== (Book\u0026amp; b, string a); friend bool operator== (Book\u0026amp; b, Book\u0026amp; a); }; bool operator==(Book\u0026amp; b, int a){ if(b.price == a) return true; return false; } bool operator==(Book\u0026amp; b, string a){ if(b.title == a) return true; return false; } bool operator==(Book\u0026amp; b, Book\u0026amp; a){ if(b.price == a.price \u0026amp;\u0026amp; b.title == a.title) return true; return false; } int main() { Book a(\u0026ldquo;명품 C++\u0026rdquo; , 30000, 500), b(\u0026ldquo;고품 C++\u0026quot;, 30000, 500); if(a == 30000) cout \u0026laquo; \u0026ldquo;정가 30000원\u0026rdquo; \u0026laquo; endl; // price 비교 if(a == \u0026ldquo;명품 C++\u0026quot;) cout \u0026laquo; \u0026ldquo;명품 C++ 입니다.\u0026rdquo; \u0026laquo; endl; // 책 title 비교 if(a == b) cout \u0026laquo; \u0026ldquo;두 책이 같은 책입니다.\u0026rdquo; \u0026laquo; endl; // title, price, pages 모두 비교 } 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 7장 4번 (3) 2020.03.06 명품 C++ programming 실습 문제 7장 3번 (1) 2020.03.06 명품 C++ programming 실습 문제 7장 1번 (3) 2020.03.06 명품 C++ programming 실습 문제 6장 9번 (2) 2020.03.06 명품 C++ programming 실습 문제 6장 8번 (1) 2020.03.06 ","permalink":"https://blog.sobamemil.com/posts/091-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-7%EC%9E%A5-2%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e1번 ~ 4번 문제까지 사용될 Book 클래스는 다음과 같습니다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14\u003c/td\u003e\n          \u003ctd\u003eclass Book{  string title;  int price, pages;  public:  Book(string title=\u0026quot;\u0026quot;, int price=0, int pages=0){  this-\u0026gt;title = title; this-\u0026gt;price = price; this-\u0026gt;pages = pages;  }  void show() {  cout \u0026laquo; title \u0026laquo; \u0026quot; \u0026quot; \u0026laquo; price \u0026laquo; \u0026ldquo;원 \u0026quot; \u0026laquo; pages \u0026laquo; \u0026quot; 페이지\u0026rdquo; \u0026laquo; endl;  }  string getTitle() {  return title;  }  };\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eBook 객체를 활용하는 사례이다.\u003c/p\u003e","title":"명품 C++ programming 실습 문제 7장 2번"},{"content":"문제 :\n1번 ~ 4번 문제까지 사용될 Book 클래스는 다음과 같습니다.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 class Book{ string title; int price, pages; public: Book(string title=\u0026quot;\u0026quot;, int price=0, int pages=0){ this-\u0026gt;title = title; this-\u0026gt;price = price; this-\u0026gt;pages = pages; } void show() { cout \u0026laquo; title \u0026laquo; \u0026quot; \u0026quot; \u0026laquo; price \u0026laquo; \u0026ldquo;원 \u0026quot; \u0026laquo; pages \u0026laquo; \u0026quot; 페이지\u0026rdquo; \u0026laquo; endl; } string getTitle() { return title; } }; Book 객체에 대해 다음 연산을 하고자 한다.\n1 2 3 4 5 Book a(\u0026ldquo;청춘\u0026rdquo;, 20000, 300) , b(\u0026ldquo;미래\u0026rdquo;, 30000, 500); a += 500; // 책 a의 가격 500원 증가 b -= 500; // 책 b의 가격 500원 감소 a.show(); b.show(); (1) +=, -= 연산자 함수를 Book 클래스의 멤버 함수로 구현하라.\n(2) +=, -= 연산자 함수를 Book 클래스 외부 함수로 구현하라.\n실행 결과 :\n목적 및 힌트 :\n+=, -=, 참조 매개 변수, 참조 리턴의 연산자 구현 연습\n코드 :\n● 문제 (1)\n1 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 #include using namespace std; class Book{ string title; int price, pages; public: Book(string title=\u0026quot;\u0026quot;, int price=0, int pages=0){ this-\u0026gt;title = title; this-\u0026gt;price = price; this-\u0026gt;pages = pages; } void show() { cout \u0026laquo; title \u0026laquo; \u0026quot; \u0026quot; \u0026laquo; price \u0026laquo; \u0026ldquo;원 \u0026quot; \u0026laquo; pages \u0026laquo; \u0026quot; 페이지\u0026rdquo; \u0026laquo; endl; } string getTitle() { return title; } Book\u0026amp; operator+= (int a); Book\u0026amp; operator-= (int a); }; Book\u0026amp; Book::operator+=(int a) { price += a; return *this; } Book\u0026amp; Book::operator-=(int a) { price -= a; return *this; } int main() { Book a(\u0026ldquo;청춘\u0026rdquo;, 20000, 300) , b(\u0026ldquo;미래\u0026rdquo;, 30000, 500); a += 500; b -= 500; a.show(); b.show(); } ● 문제 (2)\n1 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 #include using namespace std; class Book{ string title; int price, pages; public: Book(string title=\u0026quot;\u0026quot;, int price=0, int pages=0){ this-\u0026gt;title = title; this-\u0026gt;price = price; this-\u0026gt;pages = pages; } void show() { cout \u0026laquo; title \u0026laquo; \u0026quot; \u0026quot; \u0026laquo; price \u0026laquo; \u0026ldquo;원 \u0026quot; \u0026laquo; pages \u0026laquo; \u0026quot; 페이지\u0026rdquo; \u0026laquo; endl; } string getTitle() { return title; } friend Book operator+= (Book\u0026amp; b,int a); friend Book operator-= (Book\u0026amp; b,int a); }; Book operator+=(Book\u0026amp; b, int a) { b.price += a; return b; } Book operator-=(Book\u0026amp; b,int a) { b.price -= a; return b; } int main() { Book a(\u0026ldquo;청춘\u0026rdquo;, 20000, 300) , b(\u0026ldquo;미래\u0026rdquo;, 30000, 500); a += 500; b -= 500; a.show(); b.show(); } 설명 :\n문제 1번에서는 +=, -= 연산자 함수를 Book 클래스의 멤버 함수로 구현하였고,\n문제 2번에서는 +=, -= 연산자 함수를 Book 클래스 외부 함수로 구현하였습니다.\n연산자 함수를 클래스 외부 함수로 구현하기 위해 클래스 내부에서 friend로 선언을 해주었습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 7장 3번 (1) 2020.03.06 명품 C++ programming 실습 문제 7장 2번 (3) 2020.03.06 명품 C++ programming 실습 문제 6장 9번 (2) 2020.03.06 명품 C++ programming 실습 문제 6장 8번 (1) 2020.03.06 명품 C++ programming 실습 문제 6장 7번 (1) 2020.03.06 ","permalink":"https://blog.sobamemil.com/posts/090-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-7%EC%9E%A5-1%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e1번 ~ 4번 문제까지 사용될 Book 클래스는 다음과 같습니다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14\u003c/td\u003e\n          \u003ctd\u003eclass Book{  string title;  int price, pages;  public:  Book(string title=\u0026quot;\u0026quot;, int price=0, int pages=0){  this-\u0026gt;title = title; this-\u0026gt;price = price; this-\u0026gt;pages = pages;  }  void show() {  cout \u0026laquo; title \u0026laquo; \u0026quot; \u0026quot; \u0026laquo; price \u0026laquo; \u0026ldquo;원 \u0026quot; \u0026laquo; pages \u0026laquo; \u0026quot; 페이지\u0026rdquo; \u0026laquo; endl;  }  string getTitle() {  return title;  }  };\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eBook 객체에 대해 다음 연산을 하고자 한다.\u003c/p\u003e","title":"명품 C++ programming 실습 문제 7장 1번"},{"content":"문제 :\n게시판 프로그램을 작성해보자. 멀티태스킹의 경우 여러 사용자들이 게시판에 글을 올리기 때문에 게시판 객체는 전체 하나만 있어야 한다. 그러므로 게시판 객체의 멤버들은 static으로 작성한다.\n다음은 게시판 기능을 하는 Board 클래스를 활용하는 main() 코드이다. 실행 결과를 참고하여 Board 클래스를 만들고 전체 프로그램을 완성하라.\nstatic 연습이 목적이기 때문에 게시판 기능을 글을 올리는 기능과 게시글을 모두 출력하는 기능으로 제한하고 main()도 단순화하였다.\n1 2 3 4 5 6 7 8 int main() { // Board myBoard; // 객체 생성은 컴파일 오류입니다. Board::add(\u0026ldquo;중간고사는 감독 없는 자율 시험입니다.\u0026rdquo;); Board::add(\u0026ldquo;코딩 라운지 많이 이용해 주세요.\u0026rdquo;); Board::print(); Board::add(\u0026ldquo;진소린 학생이 경진대회 입상하였습니다. 축하해주세요\u0026rdquo;); Board::print(); } 실행 결과 :\n목적 및 힌트 :\nstatic 멤버를 가진 클래스 만들기 종합 응용\nBoard 클래스에는 게시글을 저장하기 위한 string 배열과 다음 저장할 위치 정보를 가진 static 멤버 변수가 필요하다.\nstatic 멤버 변수는 전역 변수로 선언하는 것이 반드시 필요하다.\n코드 :\n1 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 #include #include using namespace std; class Board{ public: static int cnt; // static 멤버 변수 선언 static string *coment; // static 멤버 변수 선언 static void add(string str); static void print(); }; // static 변수 공간 할당. //반드시 프로그램의 전역 공간에 선언 int Board::cnt = 0; string *Board::coment = new string [100]; void Board::add(string str){ coment[cnt] = str; cnt++; } void Board::print(){ cout \u0026laquo; \u0026ldquo;************* 게시판입니다. *************\\n\u0026rdquo;; for(int i=0; i\u0026lt;cnt; i++) cout \u0026laquo; i \u0026laquo; \u0026ldquo;: \u0026quot; \u0026laquo; coment[i] \u0026laquo; endl; cout \u0026laquo; endl; } int main() { // Board myBoard; // 객체 생성은 컴파일 오류입니다. Board::add(\u0026ldquo;중간고사는 감독 없는 자율 시험입니다.\u0026rdquo;); Board::add(\u0026ldquo;코딩 라운지 많이 이용해 주세요.\u0026rdquo;); Board::print(); Board::add(\u0026ldquo;진소린 학생이 경진대회 입상하였습니다. 축하해주세요\u0026rdquo;); Board::print(); } 설명 :\nstatic 멤버 변수는 변수의 공간을 할당받는 선언문이 추가적으로 필요합니다.\n이 선언문은 클래스 바깥의 전역 공간에 선언되어야 하며 그렇지 않을 시 링크 오류가 발생합니다.\nclass의 객체가 생성되지 않아도 프로그램이 시작되면 static 멤버는 class와 상관없이 생성됩니다.\n클래스 내부의 static 멤버라고 할 지라도 static 멤버는 객체 내부가 아닌 별도의 공간에 생성됩니다.\n또한 static 멤버 함수는 오직 static 멤버들만 접근이 가능하고 static 멤버 함수에서 non-static 멤버에 접근하는 것은 허용되지 않습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 7장 2번 (3) 2020.03.06 명품 C++ programming 실습 문제 7장 1번 (3) 2020.03.06 명품 C++ programming 실습 문제 6장 8번 (1) 2020.03.06 명품 C++ programming 실습 문제 6장 7번 (1) 2020.03.06 명품 C++ programming 실습 문제 6장 6번 (2) 2020.03.06 ","permalink":"https://blog.sobamemil.com/posts/089-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-6%EC%9E%A5-9%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e게시판 프로그램을 작성해보자. 멀티태스킹의 경우 여러 사용자들이 게시판에 글을 올리기 때문에 게시판 객체는 전체 하나만 있어야 한다. 그러므로 게시판 객체의 멤버들은 static으로 작성한다.\u003c/p\u003e\n\u003cp\u003e다음은 게시판 기능을 하는 Board 클래스를 활용하는 main() 코드이다. 실행 결과를 참고하여 Board 클래스를 만들고 전체 프로그램을 완성하라.\u003c/p\u003e\n\u003cp\u003estatic 연습이 목적이기 때문에 게시판 기능을 글을 올리는 기능과 게시글을 모두 출력하는 기능으로 제한하고 main()도 단순화하였다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8\u003c/td\u003e\n          \u003ctd\u003eint main() {  // Board myBoard; // 객체 생성은 컴파일 오류입니다.  Board::add(\u0026ldquo;중간고사는 감독 없는 자율 시험입니다.\u0026rdquo;);  Board::add(\u0026ldquo;코딩 라운지 많이 이용해 주세요.\u0026rdquo;);  Board::print();  Board::add(\u0026ldquo;진소린 학생이 경진대회 입상하였습니다. 축하해주세요\u0026rdquo;);  Board::print();  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 6장 9번"},{"content":"문제 :\n디버깅에 필요한 정보를 저장하는 Trace 클래스를 만들어보자. 저자의 경험에 의하면, 멀티태스크 프로그램을 개발하거나 특별한 환경에서 작업할 때, Visual Studio의 디버거와 같은 소스 레벨 디버거를 사용하지 못하는 경우가 더러 있었고, 이때 실행 도중 정보를 저장하기 위해 Trace 클래스를 만들어 사용하였다.\nTrace 클래스를 활용하는 다음 프로그램과 결과를 참고하여 Trace 클래스를 작성하고 전체 프로그램을 완성하라.\n디버깅 정보는 100개로 제한한다.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 void f() { int a, b, c; cout \u0026laquo; \u0026ldquo;두 개의 정수를 입력하세요\u0026raquo;\u0026rdquo;; cin \u0026raquo; a \u0026raquo; b; Trace::put(\u0026ldquo;f()\u0026quot;, \u0026ldquo;정수를 입력 받았음\u0026rdquo;); // 디버깅 정보 저장 c = a + b; Trace::put(\u0026ldquo;f()\u0026quot;, \u0026ldquo;합 계산\u0026rdquo;); // 디버깅 정보 저장 cout \u0026laquo; \u0026ldquo;합은 \u0026quot; \u0026laquo; c \u0026laquo; endl; } int main() { Trace::put(\u0026ldquo;main()\u0026quot;, \u0026ldquo;프로그램을 시작합니다\u0026rdquo;); // 디버깅 정보 저장 f(); Trace::put(\u0026ldquo;main()\u0026quot;, \u0026ldquo;종료\u0026rdquo;); // put()의 첫 번째 매개 변수는 태그이고 // 두 번째 매개 변수는 디버깅 정보이다. Trace::print(\u0026ldquo;f()\u0026rdquo;); // \u0026ldquo;f()\u0026rdquo; 태그를 가진 디버깅 정보를 모두 출력한다. Trace::print(); // 모든 디버깅 정보를 출력한다. } 실행 결과 :\n목적 및 힌트 :\nstatic 멤버를 가진 클래스 만들기 종합 응용\n코드 :\n1 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 #include #include using namespace std; class Trace{ public: static string tagInf[100]; static string debugInf[100]; static int count; static void put(string tag, string debug); static void print(string tag = \u0026ldquo;all\u0026rdquo;); }; int Trace::count = 0; string Trace::tagInf[100]; string Trace::debugInf[100]; void f() { int a, b, c; cout \u0026laquo; \u0026ldquo;두 개의 정수를 입력하세요\u0026raquo;\u0026rdquo;; cin \u0026raquo; a \u0026raquo; b; Trace::put(\u0026ldquo;f()\u0026quot;, \u0026ldquo;정수를 입력 받았음\u0026rdquo;); // 디버깅 정보 저장 c = a + b; Trace::put(\u0026ldquo;f()\u0026quot;, \u0026ldquo;합 계산\u0026rdquo;); // 디버깅 정보 저장 cout \u0026laquo; \u0026ldquo;합은 \u0026quot; \u0026laquo; c \u0026laquo; endl; } void Trace::put(string tag, string debug){ tagInf[count] = tag; debugInf[count] = debug; count++; } void Trace::print(string tag){ if(tag == \u0026ldquo;all\u0026rdquo;){ cout \u0026laquo; \u0026ldquo;\u0026mdash;\u0026ndash; 모든 Trace 정보를 출력합니다. \u0026mdash;\u0026ndash;\\n\u0026rdquo;; for(int i=0; i\u0026lt;count ; i++){ cout \u0026laquo; tagInf[i] \u0026laquo; \u0026ldquo;:\u0026rdquo; \u0026laquo; debugInf[i] \u0026laquo; endl; } } else { cout \u0026laquo; \u0026ldquo;\u0026mdash;\u0026ndash; \u0026quot; \u0026laquo; tag \u0026laquo; \u0026ldquo;태그의 Trace 정보를 출력합니다. \u0026mdash;\u0026ndash;\\n\u0026rdquo;; for(int i=0; i\u0026lt;count; i++){ if(tagInf[i] == tag) cout \u0026laquo; tagInf[i] \u0026laquo; \u0026ldquo;:\u0026rdquo; \u0026laquo; debugInf[i] \u0026laquo; endl; } } } int main() { Trace::put(\u0026ldquo;main()\u0026quot;, \u0026ldquo;프로그램을 시작합니다\u0026rdquo;); // 디버깅 정보 저장 f(); Trace::put(\u0026ldquo;main()\u0026quot;, \u0026ldquo;종료\u0026rdquo;); // put()의 첫 번째 매개 변수는 태그이고 // 두 번째 매개 변수는 디버깅 정보이다. Trace::print(\u0026ldquo;f()\u0026rdquo;); // \u0026ldquo;f()\u0026rdquo; 태그를 가진 디버깅 정보를 모두 출력한다. Trace::print(); // 모든 디버깅 정보를 출력한다. } 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 7장 1번 (3) 2020.03.06 명품 C++ programming 실습 문제 6장 9번 (2) 2020.03.06 명품 C++ programming 실습 문제 6장 7번 (1) 2020.03.06 명품 C++ programming 실습 문제 6장 6번 (2) 2020.03.06 명품 C++ programming 실습 문제 6장 5번 (1) 2020.03.06 ","permalink":"https://blog.sobamemil.com/posts/088-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-6%EC%9E%A5-8%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e디버깅에 필요한 정보를 저장하는 Trace 클래스를 만들어보자. 저자의 경험에 의하면, 멀티태스크 프로그램을 개발하거나 특별한 환경에서 작업할 때, Visual Studio의 디버거와 같은 소스 레벨 디버거를 사용하지 못하는 경우가 더러 있었고, 이때 실행 도중 정보를 저장하기 위해 Trace 클래스를 만들어 사용하였다.\u003c/p\u003e\n\u003cp\u003eTrace 클래스를 활용하는 다음 프로그램과 결과를 참고하여 Trace 클래스를 작성하고 전체 프로그램을 완성하라.\u003c/p\u003e\n\u003cp\u003e디버깅 정보는 100개로 제한한다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18\u003c/td\u003e\n          \u003ctd\u003evoid f() {  int a, b, c;  cout \u0026laquo; \u0026ldquo;두 개의 정수를 입력하세요\u0026raquo;\u0026rdquo;;  cin \u0026raquo; a \u0026raquo; b;  Trace::put(\u0026ldquo;f()\u0026quot;, \u0026ldquo;정수를 입력 받았음\u0026rdquo;); // 디버깅 정보 저장  c = a + b;  Trace::put(\u0026ldquo;f()\u0026quot;, \u0026ldquo;합 계산\u0026rdquo;); // 디버깅 정보 저장  cout \u0026laquo; \u0026ldquo;합은 \u0026quot; \u0026laquo; c \u0026laquo; endl;  }    int main() {  Trace::put(\u0026ldquo;main()\u0026quot;, \u0026ldquo;프로그램을 시작합니다\u0026rdquo;); // 디버깅 정보 저장  f();  Trace::put(\u0026ldquo;main()\u0026quot;, \u0026ldquo;종료\u0026rdquo;);    // put()의 첫 번째 매개 변수는 태그이고  // 두 번째 매개 변수는 디버깅 정보이다.  Trace::print(\u0026ldquo;f()\u0026rdquo;); // \u0026ldquo;f()\u0026rdquo; 태그를 가진 디버깅 정보를 모두 출력한다.  Trace::print(); // 모든 디버깅 정보를 출력한다.  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 6장 8번"},{"content":"문제 :\n다음과 같은 static 멤버를 가진 Random 클래스를 완성하라(Open Challenge 힌트 참고).\n그리고 Random 클래스를 이용하여 다음과 같이 랜덤한 값을 출력하는 main() 함수도 작성하라.\nmain()에서 Random 클래스의 seed() 함수를 활용하라.\n실행 결과 :\n목적 및 힌트 :\nstatic 멤버를 가진 클래스 만들기 및 사용 연습\n정수를 랜덤하게 생성하는 코드는 다음을 이용하면 됩니다.\n1 2 3 srand((unsigned)time(0)); // 항상 다른 랜덤수를 방생시키기 위한 seed 설정 int n = rand(); // 0에서 RAND_MAX(32767) 사이의 랜덤한 정수가 n에 발생 n = n % 100; // n은 0에서 99 사이의 정수 코드 :\n1 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 #include #include #include using namespace std; class Random{ public: static void seed() { srand((unsigned)time(0)); } static int nextInt(int min=0, int max=32767); static char nextAlphabet(); static double nextDouble(); }; int Random::nextInt(int min, int max){ int a=0; while(true){ a = rand() % (max+1); if(min\u0026lt;=a) break; } return a; } char Random::nextAlphabet(){ char b = 0; while(true){ b = rand() % \u0026lsquo;z\u0026rsquo;; if( b\u0026gt;=\u0026lsquo;a\u0026rsquo; 설명 :\n랜덤한 정수를 생성하는 문제들을 많이 풀었었는데, 그것을 응용하여 정수 뿐 아니라 ASCII 코드와 실수를 다루는 문제입니다.\n방식은 동일하기 때문에 크게 어렵지는 않습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 6장 9번 (2) 2020.03.06 명품 C++ programming 실습 문제 6장 8번 (1) 2020.03.06 명품 C++ programming 실습 문제 6장 6번 (2) 2020.03.06 명품 C++ programming 실습 문제 6장 5번 (1) 2020.03.06 명품 C++ programming 실습 문제 6장 4번 (2) 2020.03.06 ","permalink":"https://blog.sobamemil.com/posts/087-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-6%EC%9E%A5-7%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e다음과 같은 static 멤버를 가진 Random 클래스를 완성하라(Open Challenge 힌트 참고).\u003c/p\u003e\n\u003cp\u003e그리고 Random 클래스를 이용하여 다음과 같이 랜덤한 값을 출력하는 main() 함수도 작성하라.\u003c/p\u003e\n\u003cp\u003emain()에서 Random 클래스의 seed() 함수를 활용하라.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/87/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003estatic 멤버를 가진 클래스 만들기 및 사용 연습\u003c/p\u003e\n\u003cp\u003e정수를 랜덤하게 생성하는 코드는 다음을 이용하면 됩니다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3\u003c/td\u003e\n          \u003ctd\u003esrand((unsigned)time(0)); // 항상 다른 랜덤수를 방생시키기 위한 seed 설정  int n = rand(); // 0에서 RAND_MAX(32767) 사이의 랜덤한 정수가 n에 발생  n = n % 100; // n은 0에서 99 사이의 정수\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e코드 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 6장 7번"},{"content":"문제 :\n동일한 크기의 배열을 변환하는 다음 2개의 static 멤버 함수를 가진 ArrayUtiliry2 클래스를 만들고, 이 클래스를 이용하여 아래 결과와 같이 출력되도록 프로그램을 완성하라.\n1 2 3 4 5 6 // s1과 s2를 연결한 새로운 배열을 동적 생성하고 포인터 리턴 static int* concat(int s1[], int s2[], int size); // s1에서 s2에 있는 숫자를 모두 삭제한 새로운 배열을 동적 생성하여 리턴 // 리턴하는 배열의 크기는 retSize에 전달. retSize가 0인 경우 NULL 리턴 static int* remove(int s1[], int s2[], int size, int\u0026amp; retSize); 실행 결과 :\n목적 및 힌트 :\nstatic 멤버를 가진 클래스 만들기 및 사용 연습\n코드 :\n1 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 #include using namespace std; class ArrayUtility2{ public: // s1과 s2를 연결한 새로운 배열을 동적 생성하고 포인터 리턴 static int* concat(int s1[], int s2[], int size); // s1에서 s2에 있는 숫자를 모두 삭제한 새로운 배열을 동적 생성하여 리턴 // 리턴하는 배열의 크기는 retSize에 전달. retSize가 0인 경우 NULL 리턴 static int* remove(int s1[], int s2[], int size, int\u0026amp; retSize); }; int* ArrayUtility2::concat(int s1[], int s2[], int size){ int* tot = new int [size]; // 새로운 배열 동적 생성 for(int i=0; i\u0026lt;size/2; i++) { tot[i] = s1[i]; } for(int i=size/2, j=0; i\u0026lt;size; i++,j++){ tot[i] = s2[j]; } return tot; } int* ArrayUtility2::remove(int s1[], int s2[], int size, int\u0026amp; retSize){ int* rmtot = new int [size/2]; int cnt; for(int i=0; i\u0026lt;size/2; i++){ cnt = 0; for(int j=0; j\u0026lt;size/2; j++){ if(s1[i] == s2[j]) { cnt++; } } if(cnt == 0) { rmtot[i] = s1[i]; retSize++; } } if(retSize == 0) return NULL; return rmtot; } int main() { int x[5], y[5]; int size,retSize = 0; int *p; cout \u0026laquo; \u0026ldquo;정수 5 개 입력하라. 배열 x에 삽입한다\u0026raquo;\u0026rdquo;; for(int i=0; i\u0026lt;5; i++){ cin \u0026raquo; x[i]; } cout \u0026laquo; \u0026ldquo;정수 5 개 입력하라. 배열 y에 삽입한다\u0026raquo;\u0026rdquo;; for(int i=0; i\u0026lt;5; i++){ cin \u0026raquo; y[i]; } size = (sizeof(x) + sizeof(y)) / sizeof(int); cout \u0026laquo; \u0026ldquo;합친 정수 배열을 출력한다\\n\u0026rdquo;; p = ArrayUtility2::concat(x,y,size); for(int i=0; i\u0026lt;size; i++){ cout \u0026laquo; p[i] \u0026laquo; \u0026rsquo; \u0026lsquo;; } cout \u0026laquo; endl \u0026laquo; \u0026ldquo;배열 x[]에서 y[]를 뺀 결과를 출력한다. 개수는 \u0026ldquo;; p = ArrayUtility2::remove(x,y,size,retSize); cout \u0026laquo; retSize \u0026laquo; endl; for(int i=0; i\u0026lt;retSize; i++){ cout \u0026laquo; p[i] \u0026laquo; \u0026rsquo; \u0026lsquo;; } } 설명 :\nstatic 멤버 함수를 작성하여 ArrayUtility2 클래스의 객체를 생성하지 않고도 함수를 호출하여 사용 하였습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 6장 8번 (1) 2020.03.06 명품 C++ programming 실습 문제 6장 7번 (1) 2020.03.06 명품 C++ programming 실습 문제 6장 5번 (1) 2020.03.06 명품 C++ programming 실습 문제 6장 4번 (2) 2020.03.06 명품 C++ programming 실습 문제 6장 3번 (1) 2020.03.05 ","permalink":"https://blog.sobamemil.com/posts/086-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-6%EC%9E%A5-6%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e동일한 크기의 배열을 변환하는 다음 2개의 static 멤버 함수를 가진 ArrayUtiliry2 클래스를 만들고, 이 클래스를 이용하여 아래 결과와 같이 출력되도록 프로그램을 완성하라.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6\u003c/td\u003e\n          \u003ctd\u003e// s1과 s2를 연결한 새로운 배열을 동적 생성하고 포인터 리턴  static int* concat(int s1[], int s2[], int size);    // s1에서 s2에 있는 숫자를 모두 삭제한 새로운 배열을 동적 생성하여 리턴  // 리턴하는 배열의 크기는 retSize에 전달. retSize가 0인 경우 NULL 리턴  static int* remove(int s1[], int s2[], int size, int\u0026amp; retSize);\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 6장 6번"},{"content":"문제 :\n동일한 크기로 배열을 변환하는 다음 2개의 static 멤버 함수를 가진 ArrayUtility 클래스를 만들어라.\n1 2 3 4 static void intToDouble(int source[], double dest[], int size); // int[]을 double[]로 변환 static void doubleToInt(double source[], int dest[], int size); // double[]을 int[]로 변환 ArrayUtility를 활용하는 main()은 다음과 같다.\n1 2 3 4 5 6 7 8 9 10 11 12 13 int main() { int x[] = {1,2,3,4,5}; double y[5]; double z[] = {9.9,8.8,7.7,6.6,5.6}; ArrayUtility::intToDouble(x, y, 5); // x[] -\u0026gt; y[] for(int i=0; i\u0026lt;5; i++) cout \u0026laquo; y[i] \u0026laquo; \u0026rsquo; \u0026lsquo;; cout \u0026laquo; endl; ArrayUtility::doubleToInt(z, x, 5); // z[] -\u0026gt; x[] for(int i=0; i\u0026lt;5; i++) cout \u0026laquo; x[i] \u0026laquo; \u0026rsquo; \u0026lsquo;; cout \u0026laquo; endl; } 실행 결과 :\n목적 및 힌트 :\nstatic 멤버 함수 만들기\n코드 :\n1 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 #include using namespace std; class ArrayUtility{ public: static void intToDouble(int source[], double dest[], int size); static void doubleToInt(double source[], int dest[], int size); }; void ArrayUtility::intToDouble(int source[], double dest[], int size){ for(int i=0; i\u0026lt;size; i++) dest[i] = (double)source[i]; } void ArrayUtility::doubleToInt(double source[], int dest[], int size){ for(int i=0; i\u0026lt;size; i++) dest[i] = (int)source[i]; } int main() { int x[] = {1,2,3,4,5}; double y[5]; double z[] = {9.9,8.8,7.7,6.6,5.6}; ArrayUtility::intToDouble(x, y, 5); // x[] -\u0026gt; y[] for(int i=0; i\u0026lt;5; i++) cout \u0026laquo; y[i] \u0026laquo; \u0026rsquo; \u0026lsquo;; cout \u0026laquo; endl; ArrayUtility::doubleToInt(z, x, 5); // z[] -\u0026gt; x[] for(int i=0; i\u0026lt;5; i++) cout \u0026laquo; x[i] \u0026laquo; \u0026rsquo; \u0026lsquo;; cout \u0026laquo; endl; } 설명 :\nstatic 멤버 함수를 만들어서 사용하는 문제입니다.\nstatic 멤버 함수는 클래스의 객체가 생성되지 않아도 범위 지정 연산자(Scope Operator) :: 를 사용해서 접근할 수 있습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 6장 7번 (1) 2020.03.06 명품 C++ programming 실습 문제 6장 6번 (2) 2020.03.06 명품 C++ programming 실습 문제 6장 4번 (2) 2020.03.06 명품 C++ programming 실습 문제 6장 3번 (1) 2020.03.05 명품 C++ programming 실습 문제 6장 2번 (3) 2020.03.05 ","permalink":"https://blog.sobamemil.com/posts/085-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-6%EC%9E%A5-5%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e동일한 크기로 배열을 변환하는 다음 2개의 static 멤버 함수를 가진 ArrayUtility 클래스를 만들어라.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4\u003c/td\u003e\n          \u003ctd\u003estatic void intToDouble(int source[], double dest[], int size);  // int[]을 double[]로 변환  static void doubleToInt(double source[], int dest[], int size);  // double[]을 int[]로 변환\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eArrayUtility를 활용하는 main()은 다음과 같다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13\u003c/td\u003e\n          \u003ctd\u003eint main() {  int x[] = {1,2,3,4,5};  double y[5];  double z[] = {9.9,8.8,7.7,6.6,5.6};    ArrayUtility::intToDouble(x, y, 5); // x[] -\u0026gt; y[]  for(int i=0; i\u0026lt;5; i++) cout \u0026laquo; y[i] \u0026laquo; \u0026rsquo; \u0026lsquo;;  cout \u0026laquo; endl;    ArrayUtility::doubleToInt(z, x, 5); // z[] -\u0026gt; x[]  for(int i=0; i\u0026lt;5; i++) cout \u0026laquo; x[i] \u0026laquo; \u0026rsquo; \u0026lsquo;;  cout \u0026laquo; endl;  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 6장 5번"},{"content":"문제 :\n다음 클래스에 중복된 생성자를 디폴트 매개 변수를 가진 하나의 생성자로 작성하고 테스트 프로그램을 작성하라.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 class MyVector{ int *mem; int size; public: MyVector(); MyVector(int n, int val); ~MyVector() { delete [] mem; } }; MyVector::MyVector() { mem = new int [100]; size = 100; for(int i=0; i\u0026lt;size; i++) mem[i] = 0; } MyVector::MyVector(int n, int val) { mem = new int [n]; size = n; for(int i=0; i\u0026lt;size; i++) mem[i] = val; } 실행 결과 :\n목적 및 힌트 :\n디폴트 매개 변수 연습\n코드 :\n1 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 #include using namespace std; class MyVector{ int *mem; int size; public: MyVector(int n = 100, int val = 0); void show(); ~MyVector() { delete [] mem; } }; MyVector::MyVector(int n, int val) { mem = new int [n]; size = n; for(int i=0; i\u0026lt;size; i++) mem[i] = val; } void MyVector::show(){ cout \u0026laquo; \u0026ldquo;size = \u0026quot; \u0026laquo; size \u0026laquo; endl; for(int i=0; i\u0026lt;size; i++) cout \u0026laquo; mem[i] \u0026laquo; \u0026rsquo; \u0026lsquo;; cout \u0026laquo; endl; } int main() { MyVector a; MyVector b(10, 50); cout \u0026laquo; \u0026ldquo;testing \u0026hellip;\u0026rdquo; \u0026laquo; endl \u0026laquo; endl; a.show(); cout \u0026laquo; endl; b.show(); } 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 6장 6번 (2) 2020.03.06 명품 C++ programming 실습 문제 6장 5번 (1) 2020.03.06 명품 C++ programming 실습 문제 6장 3번 (1) 2020.03.05 명품 C++ programming 실습 문제 6장 2번 (3) 2020.03.05 명품 C++ programming 실습 문제 6장 1번 (1) 2020.03.05 ","permalink":"https://blog.sobamemil.com/posts/084-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-6%EC%9E%A5-4%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e다음 클래스에 중복된 생성자를 디폴트 매개 변수를 가진 하나의 생성자로 작성하고 테스트 프로그램을 작성하라.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20\u003c/td\u003e\n          \u003ctd\u003eclass MyVector{  int *mem;  int size;  public:  MyVector();  MyVector(int n, int val);  ~MyVector() { delete [] mem; }  };    MyVector::MyVector() {  mem = new int [100];  size = 100;  for(int i=0; i\u0026lt;size; i++) mem[i] = 0;  }    MyVector::MyVector(int n, int val) {  mem = new int [n];  size = n;  for(int i=0; i\u0026lt;size; i++) mem[i] = val;  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 6장 4번"},{"content":"문제 :\n함수 big()을 호출하는 경우는 다음과 같다.\n1 2 3 4 5 6 int main() { int x = big(3, 5); // 3과 5중 큰 값은 5는 최대값 100보다 작으므로, 5 리턴 int y = big(300, 60); // 300과 60 중 큰 값 300이 최대값 100보다 크므로, 100리턴 int z = big(30, 60, 50); // 30과 60 중 큰 값 60이 최대값 50보다 크므로, 50리턴 cout \u0026laquo; x \u0026laquo; \u0026rsquo; \u0026rsquo; \u0026laquo; y \u0026laquo; \u0026rsquo; \u0026rsquo; \u0026laquo; z \u0026laquo; endl; } (1) big() 함수를 2개 중복하여 작성하고 프로그램을 완성하라.\n(2) 디폴트 매개 변수를 가진 하나의 함수로 big()을 작성하고 프로그램을 완성하라.\n실행 결과 :\n목적 및 힌트 :\n함수 중복, 디폴트 매개 변수 연습\n코드 :\n● 문제 (1)\n1 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 #include using namespace std; int big(int a, int b){ int max = 100; int big = a; if(big\u0026lt;b) big = b; if(big\u0026gt;max) big = max; return big; } int big(int a, int b, int c){ int max = c; int big = a; if(big\u0026lt;b) big = b; if(big\u0026gt;max) big = max; return big; } int main() { int x = big(3, 5); // 3과 5중 큰 값은 5는 최대값 100보다 작으므로, 5 리턴 int y = big(300, 60); // 300과 60 중 큰 값 300이 최대값 100보다 크므로, 100리턴 int z = big(30, 60, 50); // 30과 60 중 큰 값 60이 최대값 50보다 크므로, 50리턴 cout \u0026laquo; x \u0026laquo; \u0026rsquo; \u0026rsquo; \u0026laquo; y \u0026laquo; \u0026rsquo; \u0026rsquo; \u0026laquo; z \u0026laquo; endl; } ● 문제 (2)\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #include using namespace std; int big(int a, int b, int c = 100){ int max = c; int big = a; if(big\u0026lt;b) big = b; if(big\u0026gt;max) big = max; return big; } int main() { int x = big(3, 5); // 3과 5중 큰 값은 5는 최대값 100보다 작으므로, 5 리턴 int y = big(300, 60); // 300과 60 중 큰 값 300이 최대값 100보다 크므로, 100리턴 int z = big(30, 60, 50); // 30과 60 중 큰 값 60이 최대값 50보다 크므로, 50리턴 cout \u0026laquo; x \u0026laquo; \u0026rsquo; \u0026rsquo; \u0026laquo; y \u0026laquo; \u0026rsquo; \u0026rsquo; \u0026laquo; z \u0026laquo; endl; } 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 6장 5번 (1) 2020.03.06 명품 C++ programming 실습 문제 6장 4번 (2) 2020.03.06 명품 C++ programming 실습 문제 6장 2번 (3) 2020.03.05 명품 C++ programming 실습 문제 6장 1번 (1) 2020.03.05 명품 C++ programming 실습 문제 5장 12번 (2) 2020.03.05 ","permalink":"https://blog.sobamemil.com/posts/083-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-6%EC%9E%A5-3%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e함수 big()을 호출하는 경우는 다음과 같다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6\u003c/td\u003e\n          \u003ctd\u003eint main() {  int x = big(3, 5); // 3과 5중 큰 값은 5는 최대값 100보다 작으므로, 5 리턴  int y = big(300, 60); // 300과 60 중 큰 값 300이 최대값 100보다 크므로, 100리턴  int z = big(30, 60, 50); // 30과 60 중 큰 값 60이 최대값 50보다 크므로, 50리턴  cout \u0026laquo; x \u0026laquo; \u0026rsquo; \u0026rsquo; \u0026laquo; y \u0026laquo; \u0026rsquo; \u0026rsquo; \u0026laquo; z \u0026laquo; endl;  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e(1) big() 함수를 2개 중복하여 작성하고 프로그램을 완성하라.\u003c/p\u003e","title":"명품 C++ programming 실습 문제 6장 3번"},{"content":"문제 :\nPerson 클래스의 객체를 생성하는 main() 함수는 다음과 같다.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 class Person { int id; double weight; string name; public: void show() { cout \u0026laquo; id \u0026laquo; \u0026rsquo; \u0026rsquo; \u0026laquo; weight \u0026laquo; \u0026rsquo; \u0026rsquo; \u0026laquo; name \u0026laquo; endl; } }; int main() { Person grace, ashley(2, \u0026ldquo;Ashley\u0026rdquo;), helen(3, \u0026ldquo;Helen\u0026rdquo;, 32.5); grace.show(); ashley.show(); helen.show(); } (1) 생성자를 중복 작성하고 프로그램을 완성하라.\n(2) 디폴트 매개 변수를 가진 하나의 생성자를 작성하고 프로그램을 완성하라.\n실행 결과 :\n목적 및 힌트 :\n함수 중복, 디폴트 매개 변수 연습\n코드 :\n● 문제 (1)\n1 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 #include #include using namespace std; class Person { int id; double weight; string name; public: Person(); Person(int id, string name); Person(int id, string name, double weight); void show() { cout \u0026laquo; id \u0026laquo; \u0026rsquo; \u0026rsquo; \u0026laquo; weight \u0026laquo; \u0026rsquo; \u0026rsquo; \u0026laquo; name \u0026laquo; endl; } }; Person::Person() { id = 1; weight = 20.5; name = \u0026ldquo;Grace\u0026rdquo;; } Person::Person(int id, string name) { this-\u0026gt;id = id; weight = 20.5; this-\u0026gt;name = name; } Person::Person(int id, string name, double weight) { this-\u0026gt;id = id; this-\u0026gt;weight = weight; this-\u0026gt;name = name; } int main() { Person grace, ashley(2, \u0026ldquo;Ashley\u0026rdquo;), helen(3, \u0026ldquo;Helen\u0026rdquo;, 32.5); grace.show(); ashley.show(); helen.show(); } ● 문제 (2)\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #include #include using namespace std; class Person { int id; double weight; string name; public: Person(int id = 1, string name = \u0026ldquo;Grace\u0026rdquo;, double weight = 20.5); void show() { cout \u0026laquo; id \u0026laquo; \u0026rsquo; \u0026rsquo; \u0026laquo; weight \u0026laquo; \u0026rsquo; \u0026rsquo; \u0026laquo; name \u0026laquo; endl; } }; Person::Person(int id, string name, double weight){ this-\u0026gt;id = id; this-\u0026gt;weight = weight; this-\u0026gt;name = name; } int main() { Person grace, ashley(2, \u0026ldquo;Ashley\u0026rdquo;), helen(3, \u0026ldquo;Helen\u0026rdquo;, 32.5); grace.show(); ashley.show(); helen.show(); } 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 6장 4번 (2) 2020.03.06 명품 C++ programming 실습 문제 6장 3번 (1) 2020.03.05 명품 C++ programming 실습 문제 6장 1번 (1) 2020.03.05 명품 C++ programming 실습 문제 5장 12번 (2) 2020.03.05 명품 C++ programming 실습 문제 5장 11번 (1) 2020.03.05 ","permalink":"https://blog.sobamemil.com/posts/082-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-6%EC%9E%A5-2%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003ePerson 클래스의 객체를 생성하는 main() 함수는 다음과 같다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14\u003c/td\u003e\n          \u003ctd\u003eclass Person {  int id;  double weight;  string name;  public:  void show() { cout \u0026laquo; id \u0026laquo; \u0026rsquo; \u0026rsquo; \u0026laquo; weight \u0026laquo; \u0026rsquo; \u0026rsquo; \u0026laquo; name \u0026laquo; endl; }  };    int main() {  Person grace, ashley(2, \u0026ldquo;Ashley\u0026rdquo;), helen(3, \u0026ldquo;Helen\u0026rdquo;, 32.5);  grace.show();  ashley.show();  helen.show();  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e(1) 생성자를 중복 작성하고 프로그램을 완성하라.\u003c/p\u003e","title":"명품 C++ programming 실습 문제 6장 2번"},{"content":"문제 :\nadd() 함수를 호출하는 main() 함수는 다음과 같다.\n1 2 3 4 5 6 7 8 int main() { int a[] = {1,2,3,4,5}; int b[] = {6,7,8,9,10}; int c = add(a, 5); // 배열 a의 정수를 모두 더한 값 리턴 int d = add(a, 5, b); // 배열 a와 b의 정수를 모두 더한 값 리턴 cout \u0026laquo; c \u0026laquo; endl; // 15 출력 cout \u0026laquo; d \u0026laquo; endl; // 55 출력 } (1) add() 함수를 중복 작성하고 프로그램을 완성하라.\n(2) 디폴트 매개 변수를 가진 하나의 add() 함수를 작성하고 프로그램을 완성하라.\n실행 결과 :\n목적 및 힌트 :\n함수 중복, 디폴트 매개 변수 연습\n코드 :\n● 문제 (1)\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #include using namespace std; int add(int *a, int b){ int sum = 0; for(int i=0; i\u0026lt;b; i++) sum += a[i]; return sum; } int add(int *a, int b, int *c){ int sum = 0; for(int i=0; i\u0026lt;b; i++) sum += a[i] + c[i]; return sum; } int main() { int a[] = {1,2,3,4,5}; int b[] = {6,7,8,9,10}; int c = add(a, 5); // 배열 a의 정수를 모두 더한 값 리턴 int d = add(a, 5, b); // 배열 a와 b의 정수를 모두 더한 값 리턴 cout \u0026laquo; c \u0026laquo; endl; // 15 출력 cout \u0026laquo; d \u0026laquo; endl; // 55 출력 } ● 문제 (2)\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #include using namespace std; int add(int *a, int b, int *c = NULL) { int sum = 0; for(int i=0; i\u0026lt;b; i++) { sum += a[i]; if(c != NULL) sum += c[i]; } return sum; } int main() { int a[] = {1,2,3,4,5}; int b[] = {6,7,8,9,10}; int c = add(a, 5); // 배열 a의 정수를 모두 더한 값 리턴 int d = add(a, 5, b); // 배열 a와 b의 정수를 모두 더한 값 리턴 cout \u0026laquo; c \u0026laquo; endl; // 15 출력 cout \u0026laquo; d \u0026laquo; endl; // 55 출력 } 설명 :\n디폴트 매개변수를 가진 함수를 작성하여 코드의 길이를 줄일 수 있습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 6장 3번 (1) 2020.03.05 명품 C++ programming 실습 문제 6장 2번 (3) 2020.03.05 명품 C++ programming 실습 문제 5장 12번 (2) 2020.03.05 명품 C++ programming 실습 문제 5장 11번 (1) 2020.03.05 명품 C++ programming 실습 문제 5장 10번 (3) 2020.03.05 ","permalink":"https://blog.sobamemil.com/posts/081-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-6%EC%9E%A5-1%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eadd() 함수를 호출하는 main() 함수는 다음과 같다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8\u003c/td\u003e\n          \u003ctd\u003eint main() {  int a[] = {1,2,3,4,5};  int b[] = {6,7,8,9,10};  int c = add(a, 5); // 배열 a의 정수를 모두 더한 값 리턴  int d = add(a, 5, b); // 배열 a와 b의 정수를 모두 더한 값 리턴  cout \u0026laquo; c \u0026laquo; endl; // 15 출력  cout \u0026laquo; d \u0026laquo; endl; // 55 출력  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e(1) add() 함수를 중복 작성하고 프로그램을 완성하라.\u003c/p\u003e","title":"명품 C++ programming 실습 문제 6장 1번"},{"content":"문제 :\n다음은 학과를 나타내는 Dept 클래스와 이를 활용하는 main()을 보여 준다.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 class Dept { int size; // scores 배열의 크기 int* scores; // 동적 할당 받을 정수 배열의 주소 public: Dept(int size) { // 생성자 this-\u0026gt;size = size; scores = new int[size]; } Dept(const Dept\u0026amp; dept); // 복사 생성자 ~Dept(); // 소멸자 int getSize() { return size; } void read(); // size 만큼 키보드에서 정수를 읽어 scores 배열에 저장 bool isOver60(int index); // index의 학생의 성적이 60보다 크면 true 리턴 }; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 int countPass(Dept dept) { // dept 학과에 60점 이상으로 통과하는 학생의 수 리턴 int count = 0; for (int i = 0; i \u0026lt; dept.getSize(); i++) { if (dept.isOver60(i)) count++; } return count; } int main() { Dept com(10); // 총 10명이 있는 학과 com com.read(); // 총 10명의 학생들의 성적을 키보드로부터 읽어 scores 배열에 저장 int n = countPass(com); // com 학과에 60점 이상으로 통과한 학생의 수를 리턴 cout \u0026laquo; \u0026ldquo;60점 이상은 \u0026quot; \u0026laquo; n \u0026laquo; \u0026ldquo;명\u0026rdquo;; } (1) main()의 실행 결과가 다음과 같이 되도록 Dept 클래스에 멤버들을 모두 구현하고, 전체 프로그램을 완성하라.\n(2) Dept 클래스에 복사 생성자 Dept(const Dept\u0026amp; dept); 가 작성되어 있지 않은 경우, 컴파일은 되지만 프로그램 실행 끝에 실행 시간 오류가 발생한다(복사 생성자를 뺀 채 실행해보라).\n위의 코드 어느 부분이 실행될 때 복사 생성자가 호출되는지 설명하고, 복사 생성자가 없으면 왜 실행 오류가 발생하는지 설명하라.\n(3) Dept 클래스에 복사 생성자를 제거하라. 복사 생성자가 없는 상황에서도 실행 오류가 발생하지 않게 하려면 어느 부분을 수정하면 될까? 극히 일부분의 수정으로 해결된다.\n코드를 수정해보라.\n목적 및 힌트 :\nC++ 프로그램의 실행 과정과 복사 생성자, 참조 매개 변수에 대한 이해\n코드 :\n● 문제 (1)\n1 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 #include using namespace std; class Dept { int size; // scores 배열의 크기 int* scores; // 동적 할당 받을 정수 배열의 주소 public: Dept(int size) { // 생성자 this-\u0026gt;size = size; scores = new int[size]; } Dept(Dept\u0026amp; dept); // 복사 생성자 ~Dept(); // 소멸자 int getSize() { return size; } void read(); // size 만큼 키보드에서 정수를 읽어 scores 배열에 저장 bool isOver60(int index); // index의 학생의 성적이 60보다 크면 true 리턴 }; int countPass(Dept dept) { // dept 학과에 60점 이상으로 통과하는 학생의 수 리턴 int count = 0; for (int i = 0; i \u0026lt; dept.getSize(); i++) { if (dept.isOver60(i)) count++; } return count; } Dept::Dept(Dept\u0026amp; dept) { this-\u0026gt;size = dept.size; this-\u0026gt;scores = new int[this-\u0026gt;size]; for (int i=0; isize; i++){ this-\u0026gt;scores[i] = dept.scores[i]; } } Dept::~Dept() { delete[] scores; } void Dept::read() { cout \u0026laquo; size \u0026laquo;\u0026ldquo;개 점수 입력\u0026raquo; \u0026ldquo;; for (int i = 0; i \u0026lt; size; ++i) { cin \u0026raquo; scores[i]; } } bool Dept::isOver60(int index) { if (scores[index]\u0026gt;60) return true; else return false; } int main() { Dept com(10); // 총 10명이 있는 학과 com com.read(); // 총 10명의 학생들의 성적을 키보드로부터 읽어 scores 배열에 저장 int n = countPass(com); // com 학과에 60점 이상으로 통과한 학생의 수를 리턴 cout \u0026laquo; \u0026ldquo;60점 이상은 \u0026quot; \u0026laquo; n \u0026laquo; \u0026ldquo;명\u0026rdquo;; } ● 문제 (2)\n복사 생성자는 main() 함수의 int n = countPass(com); 부분에서 호출이 된다.\nDept 클래스에서 복사 생성자 Dept(const Dept\u0026amp; dept); 가 작성되어 있지 않은 경우 디폴트 복사 생성자가 호출되는데 이때 기존 클래스 멤버 변수들이 복사된 객체 멤버 변수로 얕은 복사가 되기 때문에 동일한 메모리를 가르키게 되고, 소멸자에 의해 소멸될 때 나중에 생성된 객체가 먼저 메모리를 반환한다.\n그리고 먼저 생성된 객체가 그 다음에 소멸되는데 이때 먼저 생성된 객체와 나중에 생성된 객체는 같은 메모리를 가르키고 있으므로 이미 반환한 메모리를 다시 반환하게 된다. 따라서 실행 시간 오류가 발생하고 프로그램이 비정상 종료되기 때문에 동적할당 시에는 깊은 복사를 사용해야 한다.\n● 문제 (3)\n1 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 #include using namespace std; class Dept { int size; int* scores; public: Dept(int size) { this-\u0026gt;size = size; scores = new int[size]; } ~Dept(); int getSize() { return size; } void read(); bool isOver60(int index); }; int countPass(Dept\u0026amp; dept) { // 참조에 의한 호출로 변경 int count = 0; for (int i = 0; i \u0026lt; dept.getSize(); i++) { if (dept.isOver60(i)) count++; } return count; } Dept::~Dept() { delete[] scores; } void Dept::read() { cout \u0026laquo; size \u0026laquo;\u0026ldquo;개 점수 입력\u0026raquo; \u0026ldquo;; for (int i = 0; i \u0026lt; size; ++i) { cin \u0026raquo; scores[i]; } } bool Dept::isOver60(int index) { if (scores[index]\u0026gt;60) return true; else return false; } int main() { Dept com(10); com.read(); int n = countPass(com); cout \u0026laquo; \u0026ldquo;60점 이상은 \u0026quot; \u0026laquo; n \u0026laquo; \u0026ldquo;명\u0026rdquo;; } 설명 :\n문제 (3)에서 int countPass(Dept\u0026amp; dept); 처럼 참조 연산자만 추가하여 참조에 의한 호출을 사용하면 복사 생성자를 제거하여도 실행 오류가 발생하지 않게 됩니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 6장 2번 (3) 2020.03.05 명품 C++ programming 실습 문제 6장 1번 (1) 2020.03.05 명품 C++ programming 실습 문제 5장 11번 (1) 2020.03.05 명품 C++ programming 실습 문제 5장 10번 (3) 2020.03.05 명품 C++ programming 실습 문제 5장 9번 (3) 2020.03.05 ","permalink":"https://blog.sobamemil.com/posts/080-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-5%EC%9E%A5-12%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e다음은 학과를 나타내는 Dept 클래스와 이를 활용하는 main()을 보여 준다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14\u003c/td\u003e\n          \u003ctd\u003eclass Dept {  int size; // scores 배열의 크기  int* scores; // 동적 할당 받을 정수 배열의 주소  public:  Dept(int size) { // 생성자  this-\u0026gt;size = size;  scores = new int[size];  }  Dept(const Dept\u0026amp; dept); // 복사 생성자  ~Dept(); // 소멸자  int getSize() { return size; }  void read(); // size 만큼 키보드에서 정수를 읽어 scores 배열에 저장  bool isOver60(int index); // index의 학생의 성적이 60보다 크면 true 리턴  };\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14\u003c/td\u003e\n          \u003ctd\u003eint countPass(Dept dept) { // dept 학과에 60점 이상으로 통과하는 학생의 수 리턴  int count = 0;  for (int i = 0; i \u0026lt; dept.getSize(); i++) {  if (dept.isOver60(i)) count++;  }  return count;  }    int main() {  Dept com(10); // 총 10명이 있는 학과 com  com.read();  // 총 10명의 학생들의 성적을 키보드로부터 읽어 scores 배열에 저장  int n = countPass(com); // com 학과에 60점 이상으로 통과한 학생의 수를 리턴  cout \u0026laquo; \u0026ldquo;60점 이상은 \u0026quot; \u0026laquo; n \u0026laquo; \u0026ldquo;명\u0026rdquo;;  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e(1) main()의 실행 결과가 다음과 같이 되도록 Dept 클래스에 멤버들을 모두 구현하고, 전체 프로그램을 완성하라.\u003c/p\u003e","title":"명품 C++ programming 실습 문제 5장 12번"},{"content":"문제 :\n책의 이름과 가격을 저장하는 다음 Book 클래스에 대해 물음에 답하여라.\n1 2 3 4 5 6 7 8 9 class Book { char *title; // 제목 문자열 int price; // 가격 public: Book(const char* title, int price); ~Book(); void set(char* title, int price); void show() { cout \u0026laquo; title \u0026laquo; \u0026rsquo; \u0026rsquo; \u0026laquo; price \u0026laquo; \u0026ldquo;원\u0026rdquo; \u0026laquo; endl; } }; (1) Book 클래스의 생성자, 소멸자, set() 함수를 작성하라. set() 함수는 멤버 변수 title에 할당된 메모리가 있으면 먼저 반환한다. 그러고 나서 새로운 메모리를 할당받고 이곳에 매개 변수로 전달받은 책이름을 저장한다.\n(2) 컴파일러가 삽입하는 디폴트 복사 생성자 코드는 무엇인가?\n(3) 디폴트 복사 생성자만 있을 때 아래 main() 함수는 실행 오류가 발생한다.\n1 2 3 4 5 6 7 int main() { Book cpp(\u0026ldquo;명품 C++\u0026quot;, 10000); Book java = cpp; // 복사 생성자 호출됨 java.set(\u0026ldquo;명품자바\u0026rdquo;, 12000); cpp.show(); java.show(); } 다음과 같이 실행 오류가 발생하지 않도록 깊은 복사 생성자를 작성하라.\n(4) 문제 (3)에서 실행 오류가 발생하는 원인은 Book 클래스에서 C-스트링(char* title) 방식으로 문자열을 다루었기 때문이다.\n복사 생성자를 작성하지 말고 문자열을 string 클래스를 사용하여, 문제 (3)의 실행 오류가 발생하지 않도록 Book 클래스를 수정하라.\n이 문제를 풀고 나면 문자열을 다룰 때, string을 사용해야하는 이유를 명확히 알게 될 것이다.\n목적 및 힌트 :\n복사 생성자의 필요성 이해\n코드 :\n● 문제 (1)\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Book::Book(const char* title, int price){ this-\u0026gt;price = price; int size = strlen(title) + 1; this-\u0026gt;title = new char[size]; strcpy(this-\u0026gt;title, title); } Book::~Book() { delete [] title; } void Book::set(const char* title, int price) { if(this-\u0026gt;title) delete [] this-\u0026gt;title; this-\u0026gt;price = price; int size = strlen(title) + 1; this-\u0026gt;title = new char[size]; strcpy(this-\u0026gt;title, title); } ● 문제 (2)\n1 2 3 4 Book::Book(const Book\u0026amp; b){ this-\u0026gt;title = b.title; this-\u0026gt;price = b.price; } ● 문제 (3)\n1 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 #include #include using namespace std; class Book { char *title; // 제목 문자열 int price; // 가격 public: Book(const Book\u0026amp; b); Book(const char* title, int price); ~Book(); void set(const char* title, int price); void show() { cout \u0026laquo; title \u0026laquo; \u0026rsquo; \u0026rsquo; \u0026laquo; price \u0026laquo; \u0026ldquo;원\u0026rdquo; \u0026laquo; endl; } }; Book::Book(const char* title, int price){ this-\u0026gt;price = price; int size = strlen(title) + 1; this-\u0026gt;title = new char[size]; strcpy(this-\u0026gt;title, title); } Book::Book(const Book\u0026amp; b){ this-\u0026gt;price = b.price; int size = strlen(b.title) + 1; this-\u0026gt;title = new char[size]; strcpy(this-\u0026gt;title, b.title); } Book::~Book() { delete [] title; } void Book::set(const char* title, int price) { if(this-\u0026gt;title) delete [] this-\u0026gt;title; this-\u0026gt;price = price; int size = strlen(title) + 1; this-\u0026gt;title = new char[size]; strcpy(this-\u0026gt;title, title); } int main() { Book cpp(\u0026ldquo;명품 C++\u0026quot;, 10000); Book java = cpp; // 복사 생성자 호출됨 java.set(\u0026ldquo;명품자바\u0026rdquo;, 12000); cpp.show(); java.show(); } ● 문제 (4)\n1 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 #include #include #include using namespace std; class Book { string title; int price; public: Book(string title, int price); void set(string title, int price); void show() {cout \u0026laquo; title \u0026laquo; \u0026rsquo; \u0026rsquo; \u0026laquo; price \u0026laquo; \u0026ldquo;원\u0026rdquo; \u0026laquo; endl;} }; Book::Book(string title, int price){ this-\u0026gt;price = price; this-\u0026gt;title = title; } void Book::set(string title, int price) { this-\u0026gt;price = price; this-\u0026gt;title = title; } int main() { Book cpp(\u0026ldquo;명품 C++\u0026quot;, 10000); Book java = cpp; java.set(\u0026ldquo;명품자바\u0026rdquo;, 12000); cpp.show(); java.show(); } 설명 :\n문자열을 다룰 때 char* 방식이 아닌 string 클래스를 사용하면 훨씬 간단하고 쉽게 다룰 수 있습니다.\n또한 얕은 복사 생성자는 오류를 유발할 가능성이 농후하므로 되도록이면 깊은 복사 생성자를 작성하는 습관을 들이면 좋습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 6장 1번 (1) 2020.03.05 명품 C++ programming 실습 문제 5장 12번 (2) 2020.03.05 명품 C++ programming 실습 문제 5장 10번 (3) 2020.03.05 명품 C++ programming 실습 문제 5장 9번 (3) 2020.03.05 명품 C++ programming 실습 문제 5장 8번 (9) 2020.03.05 ","permalink":"https://blog.sobamemil.com/posts/079-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-5%EC%9E%A5-11%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e책의 이름과 가격을 저장하는 다음 Book 클래스에 대해 물음에 답하여라.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9\u003c/td\u003e\n          \u003ctd\u003eclass Book {  char *title; // 제목 문자열  int price; // 가격  public:  Book(const char* title, int price);  ~Book();  void set(char* title, int price);  void show() { cout \u0026laquo; title \u0026laquo; \u0026rsquo; \u0026rsquo; \u0026laquo; price \u0026laquo; \u0026ldquo;원\u0026rdquo; \u0026laquo; endl; }  };\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e(1) Book 클래스의 생성자, 소멸자, set() 함수를 작성하라. set() 함수는 멤버 변수 title에 할당된 메모리가 있으면 먼저 반환한다. 그러고 나서 새로운 메모리를 할당받고 이곳에 매개 변수로 전달받은 책이름을 저장한다.\u003c/p\u003e","title":"명품 C++ programming 실습 문제 5장 11번"},{"content":"문제 :\n참조를 리턴하는 코드를 작성해보자. 다음 코드와 실행 결과를 참고하여 append() 함수를 작성하고 전체 프로그램을 완성하라.\nappend()는 Buffer 객체에 문자열을 추가하고 Buffer 객체에 대한 참조를 반환하는 함수이다.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 class Buffer{ string text; public: Buffer(string text) { this-\u0026gt;text = text; } void add(string next) { text += next; } // text에 next 문자열 덧붙이기 void print() { cout \u0026laquo; text \u0026laquo; endl; } }; int main() { Buffer buf(\u0026ldquo;Hello\u0026rdquo;); Buffer\u0026amp; temp = append(buf, \u0026ldquo;Guys\u0026rdquo;); // buf의 문자열에 \u0026ldquo;Guys\u0026rdquo; 덧붙임 temp.print(); // \u0026ldquo;HelloGuys\u0026rdquo; 출력 buf.print(); // \u0026ldquo;HelloGuys\u0026rdquo; 출력 } 실행 결과 :\n목적 및 힌트 :\n참조 매개 변수와 참조 리턴 이해\n코드 :\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 #include #include using namespace std; class Buffer{ string text; public: Buffer(string text) { this-\u0026gt;text = text; } void add(string next) { text += next; } // text에 next 문자열 덧붙이기 void print() { cout \u0026laquo; text \u0026laquo; endl; } }; Buffer\u0026amp; append(Buffer\u0026amp; s, string g){ s.add(g); return s; } int main() { Buffer buf(\u0026ldquo;Hello\u0026rdquo;); Buffer\u0026amp; temp = append(buf, \u0026ldquo;Guys\u0026rdquo;); // buf의 문자열에 \u0026ldquo;Guys\u0026rdquo; 덧붙임 temp.print(); // \u0026ldquo;HelloGuys\u0026rdquo; 출력 buf.print(); // \u0026ldquo;HelloGuys\u0026rdquo; 출력 } 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 5장 12번 (2) 2020.03.05 명품 C++ programming 실습 문제 5장 11번 (1) 2020.03.05 명품 C++ programming 실습 문제 5장 9번 (3) 2020.03.05 명품 C++ programming 실습 문제 5장 8번 (9) 2020.03.05 명품 C++ programming 실습 문제 5장 7번 (1) 2020.03.05 ","permalink":"https://blog.sobamemil.com/posts/078-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-5%EC%9E%A5-10%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e참조를 리턴하는 코드를 작성해보자. 다음 코드와  실행 결과를 참고하여 append() 함수를 작성하고 전체 프로그램을 완성하라.\u003c/p\u003e\n\u003cp\u003eappend()는 Buffer 객체에 문자열을 추가하고 Buffer 객체에 대한 참조를 반환하는 함수이다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14\u003c/td\u003e\n          \u003ctd\u003eclass Buffer{  string text;  public:  Buffer(string text) { this-\u0026gt;text = text; }  void add(string next) { text += next; } // text에 next 문자열 덧붙이기  void print() { cout \u0026laquo; text \u0026laquo; endl; }  };    int main() {  Buffer buf(\u0026ldquo;Hello\u0026rdquo;);  Buffer\u0026amp; temp = append(buf, \u0026ldquo;Guys\u0026rdquo;); // buf의 문자열에 \u0026ldquo;Guys\u0026rdquo; 덧붙임  temp.print(); // \u0026ldquo;HelloGuys\u0026rdquo; 출력  buf.print(); // \u0026ldquo;HelloGuys\u0026rdquo; 출력  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 5장 10번"},{"content":"문제 :\n클래스 Accumulator는 add() 함수를 통해 계속 값을 누적하는 클래스로서, 다음과 같이 선언된다.\nAccumulator 클래스를 구현하라.\n1 2 3 4 5 6 7 class Accumulator{ int value; public: Accumulator(int value); // 매개 변수 value로 멤버 value를 초기화한다. Accumulator\u0026amp; add(int n); // value에 n을 더해 값을 누적한다. int get(); // 누적된 값 value를 리턴한다. }; Accumulator는 다음과 같이 main() 함수에 의해 활용된다.\n1 2 3 4 5 int main() { Accumulator acc(10); acc.add(5).add(6).add(7); // acc의 value 멤버가 28이 된다. cout \u0026laquo; acc.get(); // 28 출력 } 실행 결과 :\n목적 및 힌트 :\n참조 리턴의 의미 이해\n코드 :\n1 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 #include using namespace std; class Accumulator{ int value; public: Accumulator(int value); // 매개 변수 value로 멤버 value를 초기화한다. Accumulator\u0026amp; add(int n); // value에 n을 더해 값을 누적한다. int get(); // 누적된 값 value를 리턴한다. }; Accumulator::Accumulator(int value){ this-\u0026gt;value = value; // 매개 변수 value로 멤버 value를 초기화. } Accumulator\u0026amp; Accumulator::add(int n){ value += n; // value에 n을 더해 값을 누적한다. return *this; // 자기 자신의 참조 리턴 } int Accumulator::get(){ return value; // 누적된 값 value를 리턴한다. } int main() { Accumulator acc(10); acc.add(5).add(6).add(7); // acc의 value 멤버가 28이 된다. cout \u0026laquo; acc.get(); // 28 출력 } 설명 :\nAccumulator 클래스의 add() 멤버 함수에서 자신의 참조를 리턴해 acc.add(5).add(6).add(7); 에서 처럼 연속으로 함수를 호출해도 프로그래머의 목적대로 실행될 수 있도록 하였습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 5장 11번 (1) 2020.03.05 명품 C++ programming 실습 문제 5장 10번 (3) 2020.03.05 명품 C++ programming 실습 문제 5장 8번 (9) 2020.03.05 명품 C++ programming 실습 문제 5장 7번 (1) 2020.03.05 명품 C++ programming 실습 문제 5장 6번 (1) 2020.03.05 ","permalink":"https://blog.sobamemil.com/posts/077-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-5%EC%9E%A5-9%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e클래스 Accumulator는 add() 함수를 통해 계속 값을 누적하는 클래스로서, 다음과 같이 선언된다.\u003c/p\u003e\n\u003cp\u003eAccumulator 클래스를 구현하라.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7\u003c/td\u003e\n          \u003ctd\u003eclass Accumulator{  int value;  public:  Accumulator(int value); // 매개 변수 value로 멤버 value를 초기화한다.  Accumulator\u0026amp; add(int n); // value에 n을 더해 값을 누적한다.  int get(); // 누적된 값 value를 리턴한다.  };\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eAccumulator는 다음과 같이 main() 함수에 의해 활용된다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5\u003c/td\u003e\n          \u003ctd\u003eint main() {  Accumulator acc(10);  acc.add(5).add(6).add(7); // acc의 value 멤버가 28이 된다.  cout \u0026laquo; acc.get(); // 28 출력  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 5장 9번"},{"content":"문제 :\n문제 7번의 MyIntStack을 수정하여 다음과 같이 선언하였다.\n스택에 저장할 수 있는 정수의 최대 개수는 생성자에서 주어지고 size 멤버에 유지한다.\nMyIntStack 클래스를 작성하라.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 class MyIntStack{ int *p; // 스택 메모리로 사용할 포인터 int size; // 스택의 최대 크기 int tos; // 스택의 탑을 가리키는 인덱스 public: MyIntStack(); MyIntStack(int size); MyIntStack(const MyIntStack\u0026amp; s); // 복사 생성자 ~MyIntStack(); bool push(int n); // 정수 n을 스택에 푸시한다. // 스택이 꽉 차 있으면 false를, 아니면 true 리턴 bool pop(int \u0026amp;n); // 스택의 탑에 있는 값을 n에 팝한다. // 만일 스택이 비어 있으면 false를, 아니면 true 리턴 }; MyIntStack 클래스를 활용하는 코드와 실행 결과는 다음과 같다.\n1 2 3 4 5 6 7 8 9 10 11 12 13 int main () { MyIntStack a(10); a.push(10); a.push(20); MyIntStack b = a; // 복사 생성 b.push(30); int n; a.pop(n); // 스택 a 팝 cout \u0026laquo; \u0026ldquo;스택 a에서 팝한 값 \u0026quot; \u0026laquo; n \u0026laquo; endl; b.pop(n); // 스택 b 팝 cout \u0026laquo; \u0026ldquo;스택 b에서 팝한 값 \u0026quot; \u0026laquo; n \u0026laquo; endl; } 실행 결과 :\n2020/03/05 - [C++/명품 C++ programming] - 명품 C++ programming 실습 문제 5장 7번\n[명품 C++ programming 실습 문제 5장 7번\n문제 : 다음과 같이 선언된 정수를 저장하는 스택 클래스 MyIntStack을 구현하라. MyIntStack 스택에 저장할 수 있는 정수의 최대 개수는 10이다. 1 2 3 4 5 6 7 8 class MyIntStack{ int p[10]; // 최대 10개의..\nsobamemil.tistory.com](https://sobamemil.tistory.com/75)\n목적 및 힌트 :\n복사 생성자 활용\n코드 :\n1 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 #include #include using namespace std; class MyIntStack{ int *p; // 스택 메모리로 사용할 포인터 int size; // 스택의 최대 크기 int tos; // 스택의 탑을 가리키는 인덱스 public: MyIntStack(); MyIntStack(int size); MyIntStack(const MyIntStack\u0026amp; s); // 복사 생성자 ~MyIntStack(); bool push(int n); // 정수 n을 스택에 푸시한다. // 스택이 꽉 차 있으면 false를, 아니면 true 리턴 bool pop(int \u0026amp;n); // 스택의 탑에 있는 값을 n에 팝한다. // 만일 스택이 비어 있으면 false를, 아니면 true 리턴 }; MyIntStack::MyIntStack(int size){ this-\u0026gt;size = size; p = new int [size]; tos = 0; } MyIntStack::MyIntStack(const MyIntStack\u0026amp; s){ this-\u0026gt;p = new int [s.size]; this-\u0026gt;size = s.size; this-\u0026gt;tos = s.tos; for(int i=0; i \u0026lt;= s.tos; i++) this-\u0026gt;p[i] = s.p[i]; } bool MyIntStack::push(int n){ if(tos\u0026gt;size) return false; else { p[tos++] = n; return true; } } bool MyIntStack::pop(int \u0026amp;n){ if(tos\u0026lt;0) return false; else { n = p[\u0026ndash;tos]; return true; } } MyIntStack::~MyIntStack(){ delete [] p; p = NULL; } int main () { MyIntStack a(10); a.push(10); a.push(20); MyIntStack b = a; // 복사 생성 b.push(30); int n; a.pop(n); // 스택 a 팝 cout \u0026laquo; \u0026ldquo;스택 a에서 팝한 값 \u0026quot; \u0026laquo; n \u0026laquo; endl; b.pop(n); // 스택 b 팝 cout \u0026laquo; \u0026ldquo;스택 b에서 팝한 값 \u0026quot; \u0026laquo; n \u0026laquo; endl; } 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 5장 10번 (3) 2020.03.05 명품 C++ programming 실습 문제 5장 9번 (3) 2020.03.05 명품 C++ programming 실습 문제 5장 7번 (1) 2020.03.05 명품 C++ programming 실습 문제 5장 6번 (1) 2020.03.05 명품 C++ programming 실습 문제 5장 5번 (1) 2020.03.05 ","permalink":"https://blog.sobamemil.com/posts/076-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-5%EC%9E%A5-8%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e문제 7번의 MyIntStack을 수정하여 다음과 같이 선언하였다.\u003c/p\u003e\n\u003cp\u003e스택에 저장할 수 있는 정수의 최대 개수는 생성자에서 주어지고 size 멤버에 유지한다.\u003c/p\u003e\n\u003cp\u003eMyIntStack 클래스를 작성하라.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14\u003c/td\u003e\n          \u003ctd\u003eclass MyIntStack{  int *p; // 스택 메모리로 사용할 포인터  int size; // 스택의 최대 크기  int tos; // 스택의 탑을 가리키는 인덱스  public:  MyIntStack();  MyIntStack(int size);  MyIntStack(const MyIntStack\u0026amp; s); // 복사 생성자  ~MyIntStack();  bool push(int n); // 정수 n을 스택에 푸시한다.  // 스택이 꽉 차 있으면 false를, 아니면 true 리턴  bool pop(int \u0026amp;n); // 스택의 탑에 있는 값을 n에 팝한다.  // 만일 스택이 비어 있으면 false를, 아니면 true 리턴  };\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eMyIntStack 클래스를 활용하는 코드와 실행 결과는 다음과 같다.\u003c/p\u003e","title":"명품 C++ programming 실습 문제 5장 8번"},{"content":"문제 :\n다음과 같이 선언된 정수를 저장하는 스택 클래스 MyIntStack을 구현하라.\nMyIntStack 스택에 저장할 수 있는 정수의 최대 개수는 10이다.\n1 2 3 4 5 6 7 8 class MyIntStack{ int p[10]; // 최대 10개의 정수 저장 int tos; // 스택의 꼭대기를 가리키는 인덱스 public: MyIntStack(); bool push(int n); // 정수 n 푸시. 꽉 차 있으면 false, 아니면 true 리턴 bool pop(int \u0026amp;n); // 팝하여 n에 저장. 스택이 비어 있으면 false, 아니면 true 리턴 }; MyIntStack 클래스를 활용하는 코드와 실행 결과는 다음과 같다.\n1 2 3 4 5 6 7 8 9 10 11 12 13 int main() { MyIntStack a; for(int i=0; i\u0026lt;11; i++) { // 11개를 푸시하면, 마지막에는 stack full이 된다. if(a.push(i)) cout \u0026laquo; i \u0026laquo; \u0026rsquo; \u0026lsquo;; // 푸시된 값 에코 else cout \u0026laquo; endl \u0026laquo; i+1 \u0026laquo; \u0026quot; 번째 stack full\u0026quot; \u0026laquo; endl; } int n; for(int i=0; i\u0026lt;11; i++) { // 11개를 팝하면, 마지막에는 stack empty가 된다. if(a.pop(n)) cout \u0026laquo; n \u0026laquo; \u0026rsquo; \u0026lsquo;; // 팝 한 값 출력 else cout \u0026laquo; endl \u0026laquo; i+1 \u0026laquo; \u0026quot; 번째 stack empty\u0026quot;; } cout \u0026laquo; endl; } 실행 결과 :\n목적 및 힌트 :\n참조에 의한 호출로 효율적인 클래스 만들기\n코드 :\n1 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 #include using namespace std; class MyIntStack{ int p[10]; // 최대 10개의 정수 저장 int tos; // 스택의 꼭대기를 가리키는 인덱스 public: MyIntStack(); bool push(int n); // 정수 n 푸시. 꽉 차 있으면 false, 아니면 true 리턴 bool pop(int \u0026amp;n); // 팝하여 n에 저장. 스택이 비어 있으면 false, 아니면 true 리턴 }; MyIntStack::MyIntStack(){ tos = 0; // 생성자에서 변수 초기화 } bool MyIntStack::push(int n){ if(tos\u0026gt;9) return false; else { p[tos] = n; tos++; return true; } } bool MyIntStack::pop(int\u0026amp; n){ // 참조에 의한 호출 tos\u0026ndash;; if(tos\u0026lt;0) return false; else { n = p[tos]; return true; } } int main() { MyIntStack a; for(int i=0; i\u0026lt;11; i++) { // 11개를 푸시하면, 마지막에는 stack full이 된다. if(a.push(i)) cout \u0026laquo; i \u0026laquo; \u0026rsquo; \u0026lsquo;; // 푸시된 값 에코 else cout \u0026laquo; endl \u0026laquo; i+1 \u0026laquo; \u0026quot; 번째 stack full\u0026quot; \u0026laquo; endl; } int n; for(int i=0; i\u0026lt;11; i++) { // 11개를 팝하면, 마지막에는 stack empty가 된다. if(a.pop(n)) cout \u0026laquo; n \u0026laquo; \u0026rsquo; \u0026lsquo;; // 팝 한 값 출력 else cout \u0026laquo; endl \u0026laquo; i+1 \u0026laquo; \u0026quot; 번째 stack empty\u0026quot;; } cout \u0026laquo; endl; } 설명 :\n참조에 의한 호출을 잘 사용하면 메모리 낭비를 줄이고 코드가 단순해져 효율적은 코드를 작성할 수 있습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 5장 9번 (3) 2020.03.05 명품 C++ programming 실습 문제 5장 8번 (9) 2020.03.05 명품 C++ programming 실습 문제 5장 6번 (1) 2020.03.05 명품 C++ programming 실습 문제 5장 5번 (1) 2020.03.05 명품 C++ programming 실습 문제 5장 4번 (1) 2020.03.05 ","permalink":"https://blog.sobamemil.com/posts/075-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-5%EC%9E%A5-7%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e다음과 같이 선언된 정수를 저장하는 스택 클래스 MyIntStack을 구현하라.\u003c/p\u003e\n\u003cp\u003eMyIntStack 스택에 저장할 수 있는 정수의 최대 개수는 10이다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8\u003c/td\u003e\n          \u003ctd\u003eclass MyIntStack{  int p[10]; // 최대 10개의 정수 저장  int tos; // 스택의 꼭대기를 가리키는 인덱스  public:  MyIntStack();  bool push(int n); // 정수 n 푸시. 꽉 차 있으면 false, 아니면 true 리턴  bool pop(int \u0026amp;n); // 팝하여 n에 저장. 스택이 비어 있으면 false, 아니면 true 리턴  };\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eMyIntStack 클래스를 활용하는 코드와 실행 결과는 다음과 같다.\u003c/p\u003e","title":"명품 C++ programming 실습 문제 5장 7번"},{"content":"문제 :\nfind() 함수의 원형은 다음과 같다. 문자열 a에서 문자 c를 찾아, 문자 c가 있는 공간에 대한 참조를 리턴한다.\n만일 문자 c를 찾을 수 없다면 success 참조 매개 변수에 false를 설정한다.\n물론 찾게 되면 success에 true를 설정한다.\n1 char\u0026amp; find(char a[], char c, bool\u0026amp; success); 다음 main()이 잘 실행되도록 find()를 작성하라.\n1 2 3 4 5 6 7 8 9 10 11 int main() { char s[] = \u0026ldquo;Mike\u0026rdquo;; bool b = false; char\u0026amp; loc = find(s, \u0026lsquo;M\u0026rsquo;, b); if(b == false) { cout \u0026laquo; \u0026ldquo;M을 발견할 수 없다\u0026rdquo; \u0026laquo; endl; return 0; } loc = \u0026rsquo;m\u0026rsquo;; // \u0026lsquo;M\u0026rsquo; 위치에 \u0026rsquo;m\u0026rsquo; 기록 cout \u0026laquo; s \u0026laquo; endl; // \u0026ldquo;mike\u0026quot;가 출력됨 } 실행 결과 :\n목적 및 힌트 :\n참조에 의한 호출과 참조를 리턴하는 함수 작성\n코드 :\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #include using namespace std; char\u0026amp; find(char a[], char c, bool\u0026amp; success){ int len = sizeof(a); for(int i=0; i\u0026lt;len; i++){ if(a[i]==c) { success = true; return a[i]; } } } int main() { char s[] = \u0026ldquo;Mike\u0026rdquo;; bool b = false; char\u0026amp; loc = find(s, \u0026lsquo;M\u0026rsquo;, b); if(b == false) { cout \u0026laquo; \u0026ldquo;M을 발견할 수 없다\u0026rdquo; \u0026laquo; endl; return 0; } loc = \u0026rsquo;m\u0026rsquo;; // \u0026lsquo;M\u0026rsquo; 위치에 \u0026rsquo;m\u0026rsquo; 기록 cout \u0026laquo; s \u0026laquo; endl; // \u0026ldquo;mike\u0026quot;가 출력됨 } 설명 :\n참조에 의한 호출 뿐 아니라 참조를 리턴하는 함수를 작성 하였습니다.\n원하는 문자를 찾을 시 그 위치의 참조를 리턴해 참조변수 loc에 넣고 나중에 그 값을 변경 하였습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 5장 8번 (9) 2020.03.05 명품 C++ programming 실습 문제 5장 7번 (1) 2020.03.05 명품 C++ programming 실습 문제 5장 5번 (1) 2020.03.05 명품 C++ programming 실습 문제 5장 4번 (1) 2020.03.05 명품 C++ programming 실습 문제 5장 3번 (1) 2020.03.05 ","permalink":"https://blog.sobamemil.com/posts/074-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-5%EC%9E%A5-6%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003efind() 함수의 원형은 다음과 같다. 문자열 a에서 문자 c를 찾아, 문자 c가 있는 공간에 대한 참조를 리턴한다.\u003c/p\u003e\n\u003cp\u003e만일 문자 c를 찾을 수 없다면 success 참조 매개 변수에 false를 설정한다.\u003c/p\u003e\n\u003cp\u003e물론 찾게 되면 success에 true를 설정한다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1\u003c/td\u003e\n          \u003ctd\u003echar\u0026amp; find(char a[], char c, bool\u0026amp; success);\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e다음 main()이 잘 실행되도록 find()를 작성하라.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11\u003c/td\u003e\n          \u003ctd\u003eint main() {  char s[] = \u0026ldquo;Mike\u0026rdquo;;  bool b = false;  char\u0026amp; loc = find(s, \u0026lsquo;M\u0026rsquo;, b);  if(b == false) {  cout \u0026laquo; \u0026ldquo;M을 발견할 수 없다\u0026rdquo; \u0026laquo; endl;  return 0;  }  loc = \u0026rsquo;m\u0026rsquo;; // \u0026lsquo;M\u0026rsquo; 위치에 \u0026rsquo;m\u0026rsquo; 기록  cout \u0026laquo; s \u0026laquo; endl; // \u0026ldquo;mike\u0026quot;가 출력됨  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 5장 6번"},{"content":"문제 :\n다음 Circle 클래스가 있다.\n1 2 3 4 5 6 7 8 class Circle{ int radius; public: Circle(int r) {radius =r;} int getRadius() {return radius;} void setRadius(int r) {radius = r;} void show() {cout \u0026laquo; \u0026ldquo;반지름이 \u0026quot; \u0026laquo; radius \u0026laquo; \u0026ldquo;인 원\u0026rdquo; \u0026laquo; endl;} }; Circle 객체 b를 a에 더하여 a를 키우고자 다음 함수를 작성하였다.\n1 2 3 4 void increaseBy(Circle a, Circle b) { int r = a.getRadius() + b.getRadius(); a.setRadius(r); } 다음 코드를 실행하면 increaseBy() 함수는 목적대로 실행되는가?\n1 2 3 4 5 int main() { Circle x(10), y(5); increaseBy(x, y); // x의 반지름이 15인 원을 만들고자 한다. x.show(); // \u0026ldquo;반지름이 15인 원\u0026quot;을 출력한다. } main() 함수의 목적을 달성하도록 increaseBy() 함수를 수정하라.\n실행 결과 :\n목적 및 힌트 :\n참조에 의한 호출 연습\n코드 :\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #include using namespace std; class Circle{ int radius; public: Circle(int r) {radius =r;} int getRadius() {return radius;} void setRadius(int r) {radius = r;} void show() {cout \u0026laquo; \u0026ldquo;반지름이 \u0026quot; \u0026laquo; radius \u0026laquo; \u0026ldquo;인 원\u0026rdquo; \u0026laquo; endl;} }; void increaseBy(Circle \u0026amp;a, Circle \u0026amp;b) { int r = a.getRadius() + b.getRadius(); a.setRadius(r); } int main() { Circle x(10), y(5); increaseBy(x, y); // x의 반지름이 15인 원을 만들고자 한다. x.show(); // \u0026ldquo;반지름이 15인 원\u0026quot;을 출력한다. } 설명 :\n문제에 나와있는 코드대로 작성하여 실행해보면 객체 x에는 아무런 변화가 없이 \u0026ldquo;반지름이 10인 원\u0026quot;이 출력될 것입니다.\n문제에서는 값에 의한 호출을 사용하였기 때문에 increaseBy() 함수의 목적대로 실행되지 않은것 입니다.\n따라서 increaseBy() 함수의 매개변수를 참조에 의한 호출을 사용하여 받으면 main() 함수의 목적을 달성할 수 있을 것입니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 5장 7번 (1) 2020.03.05 명품 C++ programming 실습 문제 5장 6번 (1) 2020.03.05 명품 C++ programming 실습 문제 5장 4번 (1) 2020.03.05 명품 C++ programming 실습 문제 5장 3번 (1) 2020.03.05 명품 C++ programming 실습 문제 5장 2번 (1) 2020.03.05 ","permalink":"https://blog.sobamemil.com/posts/073-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-5%EC%9E%A5-5%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e다음 Circle 클래스가 있다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8\u003c/td\u003e\n          \u003ctd\u003eclass Circle{  int radius;  public:  Circle(int r) {radius =r;}  int getRadius() {return radius;}  void setRadius(int r) {radius = r;}  void show() {cout \u0026laquo; \u0026ldquo;반지름이 \u0026quot; \u0026laquo; radius \u0026laquo; \u0026ldquo;인 원\u0026rdquo; \u0026laquo; endl;}  };\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eCircle 객체 b를 a에 더하여 a를 키우고자 다음 함수를 작성하였다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4\u003c/td\u003e\n          \u003ctd\u003evoid increaseBy(Circle a, Circle b) {  int r = a.getRadius() + b.getRadius();  a.setRadius(r);  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e다음 코드를 실행하면 increaseBy() 함수는 목적대로 실행되는가?\u003c/p\u003e","title":"명품 C++ programming 실습 문제 5장 5번"},{"content":"문제 :\n아래와 같이 원형이 주어진 bigger()를 작성하고 사용자로부터 2개의 정수를 입력받아 큰 값을 출력하는 main()을 작성하라.\nbigger()는 인자로 주어진 a, b가 같으면 true, 아니면 false를 리턴하고 큰 수는 big에 전달한다.\n1 bool bigger(int a, int b, int\u0026amp; big); 실행 결과 :\n목적 및 힌트 :\n참조에 의한 호출 연습\n코드 :\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #include using namespace std; bool bigger(int a, int b, int\u0026amp; big){ if(a==b) return true; else { if(a\u0026gt;b) big = a; else big = b; return false; } } int main() { int a, b, big; cout \u0026laquo; \u0026ldquo;두개의 정수를 입력하세요\u0026raquo;\u0026rdquo;; cin \u0026raquo; a \u0026raquo; b; if(!bigger(a, b, big)) cout \u0026laquo; \u0026ldquo;큰 수는 : \u0026quot; \u0026laquo; big; else cout \u0026laquo; \u0026ldquo;두 정수가 같습니다.\u0026rdquo;; } 설명 :\n이 문제와 같이 2개 이상의 값을 return 하고 싶을 때 참조에 의한 호출을 사용하면 원하는대로 작동하게 할 수 있습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 5장 6번 (1) 2020.03.05 명품 C++ programming 실습 문제 5장 5번 (1) 2020.03.05 명품 C++ programming 실습 문제 5장 3번 (1) 2020.03.05 명품 C++ programming 실습 문제 5장 2번 (1) 2020.03.05 명품 C++ programming 실습 문제 5장 1번 (4) 2020.03.05 ","permalink":"https://blog.sobamemil.com/posts/072-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-5%EC%9E%A5-4%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e아래와 같이 원형이 주어진 bigger()를 작성하고 사용자로부터 2개의 정수를 입력받아 큰 값을 출력하는 main()을 작성하라.\u003c/p\u003e\n\u003cp\u003ebigger()는 인자로 주어진 a, b가 같으면 true, 아니면 false를 리턴하고 큰 수는 big에 전달한다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1\u003c/td\u003e\n          \u003ctd\u003ebool bigger(int a, int b, int\u0026amp; big);\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/72/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e참조에 의한 호출 연습\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e코드 :\u003c/strong\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24\u003c/td\u003e\n          \u003ctd\u003e#include\u003ciostream\u003e  using namespace std;    bool bigger(int a, int b, int\u0026amp; big){  if(a==b)  return true;  else {  if(a\u0026gt;b)  big = a;  else  big = b;  return false;  }  }    int main() {  int a, b, big;  cout \u0026laquo; \u0026ldquo;두개의 정수를 입력하세요\u0026raquo;\u0026rdquo;;  cin \u0026raquo; a \u0026raquo; b;  if(!bigger(a, b, big))  cout \u0026laquo; \u0026ldquo;큰 수는 : \u0026quot; \u0026laquo; big;  else  cout \u0026laquo; \u0026ldquo;두 정수가 같습니다.\u0026rdquo;;  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e설명 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 5장 4번"},{"content":"문제 :\n다음과 같이 작동하도록 combine() 함수를 작성하라.\n1 2 3 4 5 6 int main() { string text1(\u0026ldquo;I love you\u0026rdquo;), text2(\u0026ldquo;very much\u0026rdquo;); string text3; // 비어있는 문자열 combine(text1, text2, text3); // text1과 \u0026quot; \u0026ldquo;, 그리고 text2를 덧붙여 text3 만들기 cout \u0026laquo; text3; // \u0026ldquo;I love you very much\u0026rdquo; 출력 } 실행 결과 :\n목적 및 힌트 :\nstring 클래스와 참조 사용 연습\n코드 :\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include #include using namespace std; void combine(string t1, string t2, string \u0026amp;t3){ t3 = t1 + \u0026quot; \u0026quot; + t2; } int main() { string text1(\u0026ldquo;I love you\u0026rdquo;), text2(\u0026ldquo;very much\u0026rdquo;); string text3; // 비어있는 문자열 combine(text1, text2, text3); // text1과 \u0026quot; \u0026ldquo;, 그리고 text2를 덧붙여 text3 만들기 cout \u0026laquo; text3; // \u0026ldquo;I love you very much\u0026rdquo; 출력 } 설명 :\ncombine() 함수에서 매개변수인 t1과 t2도 참조에 의한 호출을 사용하여 받아와도 됩니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 5장 5번 (1) 2020.03.05 명품 C++ programming 실습 문제 5장 4번 (1) 2020.03.05 명품 C++ programming 실습 문제 5장 2번 (1) 2020.03.05 명품 C++ programming 실습 문제 5장 1번 (4) 2020.03.05 명품 C++ programming 실습 문제 4장 14번 (1) 2020.03.04 ","permalink":"https://blog.sobamemil.com/posts/071-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-5%EC%9E%A5-3%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e다음과 같이 작동하도록 combine() 함수를 작성하라.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6\u003c/td\u003e\n          \u003ctd\u003eint main() {  string text1(\u0026ldquo;I love you\u0026rdquo;), text2(\u0026ldquo;very much\u0026rdquo;);  string text3; // 비어있는 문자열  combine(text1, text2, text3); // text1과 \u0026quot; \u0026ldquo;, 그리고 text2를 덧붙여 text3 만들기  cout \u0026laquo; text3; // \u0026ldquo;I love you very much\u0026rdquo; 출력  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/71/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003estring 클래스와 참조 사용 연습\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e코드 :\u003c/strong\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14\u003c/td\u003e\n          \u003ctd\u003e#include\u003ciostream\u003e  #include\u003cstring\u003e  using namespace std;    void combine(string t1, string t2, string \u0026amp;t3){  t3 = t1 + \u0026quot; \u0026quot; + t2;  }    int main() {  string text1(\u0026ldquo;I love you\u0026rdquo;), text2(\u0026ldquo;very much\u0026rdquo;);  string text3; // 비어있는 문자열  combine(text1, text2, text3); // text1과 \u0026quot; \u0026ldquo;, 그리고 text2를 덧붙여 text3 만들기  cout \u0026laquo; text3; // \u0026ldquo;I love you very much\u0026rdquo; 출력  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e설명 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 5장 3번"},{"content":"문제 :\n다음 main() 함수와 실행 결과를 참고하여 half() 함수를 작성하라.\n1 2 3 4 5 int main() { double n = 20; half(n); // n의 반값을 구해 n을 바꾼다. cout \u0026laquo; n; // 10이 출력된다. } 실행 결과 :\n목적 및 힌트 :\n참조 연습\n코드 :\n1 2 3 4 5 6 7 8 9 10 11 12 #include using namespace std; half(double \u0026amp;num){ // 참조에 의한 호출 num /= 2; // num으로 넘어온 본래의 값이 바뀜 } int main() { double n = 20; half(n); // n의 반값을 구해 n을 바꾼다. cout \u0026laquo; n; // 10이 출력된다. } 설명 :\n참조에 의한 호출을 사용해 매개변수의 본래의 값도 변경 되었습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 5장 4번 (1) 2020.03.05 명품 C++ programming 실습 문제 5장 3번 (1) 2020.03.05 명품 C++ programming 실습 문제 5장 1번 (4) 2020.03.05 명품 C++ programming 실습 문제 4장 14번 (1) 2020.03.04 명품 C++ programming 실습 문제 4장 13번 (3) 2020.03.04 ","permalink":"https://blog.sobamemil.com/posts/070-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-5%EC%9E%A5-2%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e다음 main() 함수와 실행 결과를 참고하여 half() 함수를 작성하라.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5\u003c/td\u003e\n          \u003ctd\u003eint main() {  double n = 20;  half(n); // n의 반값을 구해 n을 바꾼다.  cout \u0026laquo; n; // 10이 출력된다.  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/70/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e참조 연습\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e코드 :\u003c/strong\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12\u003c/td\u003e\n          \u003ctd\u003e#include\u003ciostream\u003e  using namespace std;    half(double \u0026amp;num){ // 참조에 의한 호출  num /= 2; // num으로 넘어온 본래의 값이 바뀜  }    int main() {  double n = 20;  half(n); // n의 반값을 구해 n을 바꾼다.  cout \u0026laquo; n; // 10이 출력된다.  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e설명 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 5장 2번"},{"content":"문제 :\n두 개의 Circle 객체를 교환하는 swap() 함수를 \u0026lsquo;참조에 의한 호출\u0026rsquo;이 되도록 작성하고 호출하는 프로그램을 작성하라.\n목적 및 힌트 :\n참조에 의한 호출 연습\n실행 결과 :\n코드 :\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #include using namespace std; class Circle { int num; public: Circle(); Circle(int num) {this-\u0026gt;num = num;} void setNum(int num) {this-\u0026gt;num = num;} int getNum() {return num;} }; void swap(Circle \u0026amp;a, Circle \u0026amp;b) { int swap; swap = a.getNum(); a.setNum(b.getNum()); b.setNum(swap); } int main() { Circle a(5), b(10); cout \u0026laquo; a.getNum() \u0026laquo; \u0026quot; \u0026quot; \u0026laquo; b.getNum() \u0026laquo; endl; swap(a,b); cout \u0026laquo; a.getNum() \u0026laquo; \u0026quot; \u0026quot; \u0026laquo; b.getNum(); } 설명 :\n참조에 의한 호출(Call by Reference)을 연습해보는 문제입니다.\nswap() 함수에서 매개변수로 객체를 받을때 참조 연산자(\u0026amp;)를 이용하여 받아서 사용하면 되는 문제입니다.\n참조를 사용하면 유용한 경우가 많지만 본래의 값이 바뀌면 안되는 경우에는 조심해서 사용하셔야 합니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 5장 3번 (1) 2020.03.05 명품 C++ programming 실습 문제 5장 2번 (1) 2020.03.05 명품 C++ programming 실습 문제 4장 14번 (1) 2020.03.04 명품 C++ programming 실습 문제 4장 13번 (3) 2020.03.04 명품 C++ programming 실습 문제 4장 12번 (2) 2020.03.04 ","permalink":"https://blog.sobamemil.com/posts/069-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-5%EC%9E%A5-1%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e두 개의 Circle 객체를 교환하는 swap() 함수를 \u0026lsquo;참조에 의한 호출\u0026rsquo;이 되도록 작성하고 호출하는 프로그램을 작성하라.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e참조에 의한 호출 연습\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/69/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e코드 :\u003c/strong\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25\u003c/td\u003e\n          \u003ctd\u003e#include\u003ciostream\u003e  using namespace std;    class Circle {  int num;  public:  Circle();  Circle(int num) {this-\u0026gt;num = num;}  void setNum(int num) {this-\u0026gt;num = num;}  int getNum() {return num;}  };    void swap(Circle \u0026amp;a, Circle \u0026amp;b) {  int swap;  swap = a.getNum();  a.setNum(b.getNum());  b.setNum(swap);  }    int main() {  Circle a(5), b(10);  cout \u0026laquo; a.getNum() \u0026laquo; \u0026quot; \u0026quot; \u0026laquo; b.getNum() \u0026laquo; endl;  swap(a,b);  cout \u0026laquo; a.getNum() \u0026laquo; \u0026quot; \u0026quot; \u0026laquo; b.getNum();  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e설명 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 5장 1번"},{"content":"문제 :\n겜블링 게임을 만들어보자. 두 사람이 게임을 진행하며, 선수의 이름을 초기에 입력 받는다.\n선수가 번갈아 자신의 차례에서 키를 치면 랜덤한 3개의 수가 생성되고 모두 동일한 수가 나오면 게임에서 이기게 된다.\n숫자의 범위가 너무 크면 3개의 숫자가 일치할 가능성이 낮아 숫자의 범위를 0~2로 제한한다.\n랜덤 정수 생성은 문제 5번의 힌트를 참고하라.\n선수는 Player 클래스로 작성하고, 2명의 선수는 배열로 구성하라. 그리고 게임은 GamblingGame 클래스로 작성하라.\n2020/03/04 - [C++/명품 C++ programming] - 명품 C++ programming 실습 문제 4장 5번\n[명품 C++ programming 실습 문제 4장 5번\n문제 : string 클래스를 이용하여 사용자가 입력한 영문 한 줄을 입력받고 글자 하나만 랜덤하게 수정하여 출력하는 프로그램을 작성하라. 목적 및 힌트 : string 클래스로 문자열 다루기 랜덤 정수를 발생시키기..\nsobamemil.tistory.com](https://sobamemil.tistory.com/59)\n목적 및 힌트 :\n여러 클래스로 이루어진 객체 지향 프로그래밍 연습\n실행 결과 :\n코드 :\n1 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 #include #include #include using namespace std; class Player{ string name; public: void setName(string name); string getName(){return name;}; }; class GamblingGame { Player *p = new Player[2]; public: GamblingGame(); void nameSet(); string ranNum(string n); void startGame(); ~GamblingGame() { delete [] p;} }; GamblingGame::GamblingGame(){ cout \u0026laquo; \u0026ldquo;***** 갬블링 게임을 시작합니다. *****\\n\u0026rdquo;; srand(time(NULL)); } void GamblingGame::nameSet() { string name; cout \u0026laquo; \u0026ldquo;첫번째 선수 이름\u0026raquo;\u0026rdquo;; cin \u0026raquo; name; p[0].setName(name); cout \u0026laquo; \u0026ldquo;두번째 선수 이름\u0026raquo;\u0026rdquo;; cin \u0026raquo; name; p[1].setName(name); } string GamblingGame::ranNum(string n){ int r[3]; cout \u0026laquo; \u0026ldquo;\\t\\t\u0026rdquo;; for (int i = 0;i \u0026lt; 3;i++) { r[i] = rand() % 3; cout \u0026laquo; r[i]\u0026laquo; \u0026ldquo;\\t\u0026rdquo;; } if(r[0]==r[1] \u0026amp;\u0026amp; r[0]==r[2]) { n +=\u0026ldquo;님 승리!!\u0026rdquo;; return n; } else return \u0026ldquo;아쉽군요!\u0026rdquo;; } void GamblingGame::startGame(){ string n; int i=0; while(true){ string m; cout \u0026laquo; p[i % 2].getName() \u0026laquo; \u0026ldquo;:\\n\u0026rdquo;; getline(cin,n); m = p[i % 2].getName(); n = ranNum(n); if(n==\u0026ldquo;님 승리!!\u0026quot;) { cout \u0026laquo; m + n; break; } else cout \u0026laquo; n \u0026laquo; endl; i++; } } void Player::setName(string n){ name = n; } int main(){ GamblingGame game; game.nameSet(); game.startGame(); } 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 5장 2번 (1) 2020.03.05 명품 C++ programming 실습 문제 5장 1번 (4) 2020.03.05 명품 C++ programming 실습 문제 4장 13번 (3) 2020.03.04 명품 C++ programming 실습 문제 4장 12번 (2) 2020.03.04 명품 C++ programming 실습 문제 4장 11번 (3) 2020.03.04 ","permalink":"https://blog.sobamemil.com/posts/068-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-4%EC%9E%A5-14%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e겜블링 게임을 만들어보자. 두 사람이 게임을 진행하며, 선수의 이름을 초기에 입력 받는다.\u003c/p\u003e\n\u003cp\u003e선수가 번갈아 자신의 차례에서 \u003cEnter\u003e 키를 치면 랜덤한 3개의 수가 생성되고 모두 동일한 수가 나오면 게임에서 이기게 된다.\u003c/p\u003e\n\u003cp\u003e숫자의 범위가 너무 크면 3개의 숫자가 일치할 가능성이 낮아 숫자의 범위를 0~2로 제한한다.\u003c/p\u003e\n\u003cp\u003e랜덤 정수 생성은 문제 5번의 힌트를 참고하라.\u003c/p\u003e\n\u003cp\u003e선수는 Player 클래스로 작성하고, 2명의 선수는 배열로 구성하라. 그리고 게임은 GamblingGame 클래스로 작성하라.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://sobamemil.tistory.com/59\"\u003e2020/03/04 - [C++/명품 C++ programming] - 명품 C++ programming 실습 문제 4장 5번\u003c/a\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 4장 14번"},{"content":"문제 :\n영문자로 구성된 텍스트에 대해 각 알파벳에 해당하는 문자가 몇 개인지 출력하는 히스토그램 클래스 Histogram을 만들어보자.\n대문자는 모두 소문자로 변환하여 처리한다.\nHistogram 클래스를 활용하는 사례와 실행 결과는 다음과 같다.\n1 2 3 4 5 Histogram elvisHisto(\u0026ldquo;Wise men say, only fools rush in But I can\u0026rsquo;t help, \u0026ldquo;); elvisHisto.put(\u0026ldquo;falling in love with you\u0026rdquo;); elvisHisto.putc(\u0026rsquo;-\u0026rsquo;); elvisHisto.put(\u0026ldquo;Elvis Presley\u0026rdquo;); elvisHisto.print(); 실행 결과 :\n목적 및 힌트 :\n클래스 만들기 종합 응용\n코드 :\n1 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 #include #include using namespace std; class Histogram { string sent; public: Histogram(string sent); void put(string sent); void putc(char c); void print(); }; Histogram::Histogram(string text){ sent = text; cout \u0026laquo; sent \u0026laquo; endl; } void Histogram::put(string text){ sent += text; cout \u0026laquo; text; } void Histogram::putc(char c){ sent += c; cout \u0026laquo; c; } void Histogram::print(){ int alpha[26] = { 0 }; int num = 0; for (int i = 0; i \u0026lt; sent.length(); i++) { if(isalpha(sent[i])){ char c = tolower(sent[i]); alpha[c - \u0026lsquo;a\u0026rsquo;]++; num++; } } cout \u0026laquo; endl \u0026laquo; endl; cout \u0026laquo; \u0026ldquo;총 알파벳 수 \u0026quot; \u0026laquo; num; cout \u0026laquo; endl \u0026laquo; endl; for (int i = 0; i \u0026lt; 26; ++i) { char c = \u0026lsquo;a\u0026rsquo; + i; cout \u0026laquo; c \u0026laquo; \u0026quot; (\u0026rdquo; \u0026laquo; alpha[i] \u0026laquo; \u0026ldquo;)\\t: \u0026ldquo;; for (int j = 0; j \u0026lt; alpha[i]; ++j) { cout \u0026laquo; \u0026ldquo;*\u0026rdquo;; } cout \u0026laquo; endl; } } int main() { Histogram elvisHisto(\u0026ldquo;Wise men say, only fools rush in But I can\u0026rsquo;t help, \u0026ldquo;); elvisHisto.put(\u0026ldquo;falling in love with you\u0026rdquo;); elvisHisto.putc(\u0026rsquo;-\u0026rsquo;); elvisHisto.put(\u0026ldquo;Elvis Presley\u0026rdquo;); elvisHisto.print(); } 설명 :\n아래 비슷한 문제를 참고하여 코드를 작성하면 조금 더 수월할 것 같습니다.\n2020/02/28 - [C++/명품 C++ programming] - 명품 C++ programming 실습 문제 2장 16번\n[명품 C++ programming 실습 문제 2장 16번\n문제 : 영문 텍스트를 입력받아 알파벳 히스토그램을 그리는 프로그램을 작성하라. 대문자는 모두 소문자로 집계하며, 텍스트 입력의 끝은 \u0026lsquo;;\u0026rsquo; 문자로 한다. 목적 및 힌트 : 문자열 읽기, C++ 프로그램 종합 응용..\nsobamemil.tistory.com](https://sobamemil.tistory.com/42)\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 5장 1번 (4) 2020.03.05 명품 C++ programming 실습 문제 4장 14번 (1) 2020.03.04 명품 C++ programming 실습 문제 4장 12번 (2) 2020.03.04 명품 C++ programming 실습 문제 4장 11번 (3) 2020.03.04 명품 C++ programming 실습 문제 4장 10번 (1) 2020.03.04 ","permalink":"https://blog.sobamemil.com/posts/067-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-4%EC%9E%A5-13%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e영문자로 구성된 텍스트에 대해 각 알파벳에 해당하는 문자가 몇 개인지 출력하는 히스토그램 클래스 Histogram을 만들어보자.\u003c/p\u003e\n\u003cp\u003e대문자는 모두 소문자로 변환하여 처리한다.\u003c/p\u003e\n\u003cp\u003eHistogram 클래스를 활용하는 사례와 실행 결과는 다음과 같다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5\u003c/td\u003e\n          \u003ctd\u003eHistogram elvisHisto(\u0026ldquo;Wise men say, only fools rush in But I can\u0026rsquo;t help, \u0026ldquo;);  elvisHisto.put(\u0026ldquo;falling in love with you\u0026rdquo;);  elvisHisto.putc(\u0026rsquo;-\u0026rsquo;);  elvisHisto.put(\u0026ldquo;Elvis Presley\u0026rdquo;);  elvisHisto.print();\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/67/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e클래스 만들기 종합 응용\u003c/p\u003e","title":"명품 C++ programming 실습 문제 4장 13번"},{"content":"문제 :\n다음은 이름과 반지름을 속성으로 가진 Circle 클래스와 이들을 배열로 관리하는 CircleManager 클래스이다.\n1 2 3 4 5 6 7 8 class Circle{ int radius; // 원의 반지름 값 string name; // 원의 이름 public: void setCircle(string name, int radius); // 이름과 반지름 설정 double getArea(); string getName(); }; 1 2 3 4 5 6 7 8 9 class CircleManager { Circle *p; // Circle 배열에 대한 포인터 int size; // 배열의 크기 public: CircleManager(int size); // size 크기의 배열을 동적 생성. 사용자로부터 입력 완료 ~CircleManager(); void searchByName(); // 사용자로부터 원의 이름을 입력받아 면적 출력 void searchByArea(); // 사용자로부터 면적을 입력받아 면적보다 큰 원의 이름 출력 }; 키보드에서 원의 개수를 입력받고, 그 개수만큼 원의 이름과 반지름을 입력받고, 다음과 같이 실행되도록 main() 함수를 작성하라.\nCircle, CircleManager 클래스도 완성하라.\n목적 및 힌트 :\n객체의 동적 생성 및 소멸 응용\n실행 결과 :\n코드 :\n1 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 82 #include #include using namespace std; class Circle{ int radius; // 원의 반지름 값 string name; // 원의 이름 public: void setCircle(string name, int radius); // 이름과 반지름 설정 double getArea(); string getName(); }; class CircleManager { Circle *p; // Circle 배열에 대한 포인터 int size; // 배열의 크기 int radius; string name; public: CircleManager(int size); // size 크기의 배열을 동적 생성. 사용자로부터 입력 완료 ~CircleManager(); void searchByName(); // 사용자로부터 원의 이름을 입력받아 면적 출력 void searchByArea(); // 사용자로부터 면적을 입력받아 면적보다 큰 원의 이름 출력 }; void Circle::setCircle(string name, int radius){ this-\u0026gt;name = name; this-\u0026gt;radius = radius; } double Circle::getArea(){ return radius * radius * 3.14; } string Circle::getName(){ return name; } CircleManager::CircleManager(int size){ p = new Circle[size]; this-\u0026gt;size = size; for(int i=0; i\u0026lt;size; i++){ cout \u0026laquo; \u0026ldquo;원 \u0026quot; \u0026laquo; i+1 \u0026laquo; \u0026ldquo;의 이름과 반지름 \u0026raquo; \u0026ldquo;; cin \u0026raquo; name \u0026raquo; radius; p[i].setCircle(name,radius); } } CircleManager::~CircleManager(){ delete [] p; } void CircleManager::searchByName(){ cout \u0026laquo; \u0026ldquo;검색하고자 하는 원의 이름 \u0026raquo; \u0026ldquo;; cin \u0026raquo; name; for(int i=0; i\u0026lt;size; i++){ if(name == p[i].getName()){ cout \u0026laquo; name \u0026laquo; \u0026ldquo;의 면적은 \u0026quot; \u0026laquo; p[i].getArea() \u0026laquo; endl; } } } void CircleManager::searchByArea(){ cout \u0026laquo; \u0026ldquo;최소 면적을 정수로 입력하세요 \u0026raquo; \u0026ldquo;; cin \u0026raquo; radius; cout \u0026laquo; radius \u0026laquo; \u0026ldquo;보다 큰 원을 검색합니다.\\n\u0026rdquo;; for(int i=0; i\u0026lt;size; i++){ if(radius\u0026lt;p[i].getArea()){ cout \u0026laquo; p[i].getName() \u0026laquo; \u0026ldquo;의 면적은 \u0026quot; \u0026laquo; p[i].getArea() \u0026laquo;\u0026rdquo;,\u0026rdquo;; } } } int main() { int size; cout \u0026laquo; \u0026ldquo;원의 개수 \u0026raquo; \u0026ldquo;; cin \u0026raquo; size; CircleManager CM(size); CM.searchByName(); CM.searchByArea(); } 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 4장 14번 (1) 2020.03.04 명품 C++ programming 실습 문제 4장 13번 (3) 2020.03.04 명품 C++ programming 실습 문제 4장 11번 (3) 2020.03.04 명품 C++ programming 실습 문제 4장 10번 (1) 2020.03.04 명품 C++ programming 실습 문제 4장 9번 (2) 2020.03.04 ","permalink":"https://blog.sobamemil.com/posts/066-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-4%EC%9E%A5-12%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e다음은 이름과 반지름을 속성으로 가진 Circle 클래스와 이들을 배열로 관리하는 CircleManager 클래스이다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8\u003c/td\u003e\n          \u003ctd\u003eclass Circle{  int radius; // 원의 반지름 값  string name; // 원의 이름  public:  void setCircle(string name, int radius); // 이름과 반지름 설정  double getArea();  string getName();  };\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9\u003c/td\u003e\n          \u003ctd\u003eclass CircleManager {  Circle *p; // Circle 배열에 대한 포인터  int size; // 배열의 크기  public:  CircleManager(int size); // size 크기의 배열을 동적 생성. 사용자로부터 입력 완료  ~CircleManager();  void searchByName(); // 사용자로부터 원의 이름을 입력받아 면적 출력  void searchByArea(); // 사용자로부터 면적을 입력받아 면적보다 큰 원의 이름 출력  };\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e키보드에서 원의 개수를 입력받고, 그 개수만큼 원의 이름과 반지름을 입력받고, 다음과 같이 실행되도록 main() 함수를 작성하라.\u003c/p\u003e","title":"명품 C++ programming 실습 문제 4장 12번"},{"content":"문제 :\n다음은 커피자판기로 작동하는 프로그램을 만들기 위해 필요한 두 클래스이다.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 class CoffeeVendingMachine { // 커피자판기를 표현하는 클래스 Container tong[3]; // tong[0]는 커피, tong[1]은 물, tong[2]는 설탕통을 나타냄 void fill(); // 3개의 통을 모두 10으로 채움 void selectEspresso(); // 에스프레소를 선택한 경우, 커피 1, 물 1 소모 void selectAmericano(); // 아메리카노를 선택한 경우, 커피 1, 물 2 소모 void selectSugarCoffee(); // 설탕커피를 선택한 경우, 커피 1, 물 2, 설탕 1 소모 void show(); // 현재 커피, 물, 설탕의 잔량 출력 public: void run(); // 커피 자판기 작동 }; class Container { // 통 하나를 나타내는 클래스 int size; // 현재 저장 량, 최대 저장량은 10 public: Container() {size = 10;} void fill(); // 최대량(10)으로 채우기 void consume(); // 1 만큼 소모하기 int getSize(); // 현재 크기 리턴 }; 다음과 같이 실행되도록 main() 함수와 CoffeeVendingMachine, Container를 완성하라.\n만일 커피, 물, 설탕 중 잔량이 하나라도 부족해 커피를 제공할 수 없는 경우 \u0026lsquo;원료가 부족합니다.\u0026lsquo;를 출력하라.\n실행 결과 :\n목적 및 힌트 :\n객체 배열 응용\n코드 :\n1 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 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 #include using namespace std; class Container { // 통 하나를 나타내는 클래스 int size; // 현재 저장 량, 최대 저장량은 10 public: Container() {size = 10;} void fill(); // 최대량(10)으로 채우기 void consume(); // 1 만큼 소모하기 int getSize(); // 현재 크기 리턴 }; class CoffeeVendingMachine { // 커피자판기를 표현하는 클래스 Container tong[3]; // tong[0]는 커피, tong[1]은 물, tong[2]는 설탕통을 나타냄 void fill(); // 3개의 통을 모두 10으로 채움 void selectEspresso(); // 에스프레소를 선택한 경우, 커피 1, 물 1 소모 void selectAmericano(); // 아메리카노를 선택한 경우, 커피 1, 물 2 소모 void selectSugarCoffee(); // 설탕커피를 선택한 경우, 커피 1, 물 2, 설탕 1 소모 void show(); // 현재 커피, 물, 설탕의 잔량 출력 public: void run(); // 커피 자판기 작동 }; int start = 0; void Container::fill(){ size = 10; } void Container::consume(){ size\u0026ndash;; } int Container::getSize(){ return size; } void CoffeeVendingMachine::run(){ int num; if (start==0) cout \u0026laquo; \u0026ldquo;***** 커피 자판기를 작동합니다. *****\\n\u0026rdquo;; start++; while(true){ cout \u0026laquo; \u0026ldquo;메뉴를 눌러주세요(1:에스프레소, 2:아메리카노, 3:설탕커피, 4:잔량보기, 5:채우기)\u0026raquo; \u0026ldquo;; cin \u0026raquo; num; switch(num){ case 1: selectEspresso(); break; case 2: selectAmericano(); break; case 3: selectSugarCoffee(); break; case 4: show(); break; case 5: fill(); break; } } } void CoffeeVendingMachine::selectEspresso(){ for(int i=0; i\u0026lt;3; i++){ if(tong[i].getSize() == 0) { cout \u0026laquo; \u0026ldquo;원료가 부족합니다.\\n\u0026rdquo;; run(); } } tong[0].consume(); tong[1].consume(); cout \u0026laquo; \u0026ldquo;에스프레소 드세요\\n\u0026rdquo;; } void CoffeeVendingMachine::selectAmericano(){ for(int i=0; i\u0026lt;3; i++){ if(tong[i].getSize() == 0) { cout \u0026laquo; \u0026ldquo;원료가 부족합니다.\\n\u0026rdquo;; run(); } } tong[0].consume(); tong[1].consume(); tong[1].consume(); cout \u0026laquo; \u0026ldquo;아메리카노 드세요\\n\u0026rdquo;; } void CoffeeVendingMachine::selectSugarCoffee(){ for(int i=0; i\u0026lt;3; i++){ if(tong[i].getSize() == 0) { cout \u0026laquo; \u0026ldquo;원료가 부족합니다.\\n\u0026rdquo;; run(); } } tong[0].consume(); tong[1].consume(); tong[1].consume(); tong[2].consume(); cout \u0026laquo; \u0026ldquo;설탕커피 드세요\\n\u0026rdquo;; } void CoffeeVendingMachine::show(){ cout \u0026laquo; \u0026ldquo;커피 \u0026quot; \u0026laquo; tong[0].getSize(); cout \u0026laquo; \u0026ldquo;, 물 \u0026quot; \u0026laquo; tong[1].getSize(); cout \u0026laquo; \u0026ldquo;, 설탕 \u0026quot; \u0026laquo; tong[2].getSize() \u0026laquo; endl; } void CoffeeVendingMachine::fill(){ for(int i=0; i\u0026lt;3; i++){ tong[i].fill(); } show(); } int main() { CoffeeVendingMachine *coffee = new CoffeeVendingMachine; coffee-\u0026gt;run(); delete coffee; } 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 4장 13번 (3) 2020.03.04 명품 C++ programming 실습 문제 4장 12번 (2) 2020.03.04 명품 C++ programming 실습 문제 4장 10번 (1) 2020.03.04 명품 C++ programming 실습 문제 4장 9번 (2) 2020.03.04 명품 C++ programming 실습 문제 4장 8번 (1) 2020.03.04 ","permalink":"https://blog.sobamemil.com/posts/065-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-4%EC%9E%A5-11%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e다음은 커피자판기로 작동하는 프로그램을 만들기 위해 필요한 두 클래스이다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19\u003c/td\u003e\n          \u003ctd\u003eclass CoffeeVendingMachine {    // 커피자판기를 표현하는 클래스  Container tong[3];          // tong[0]는 커피, tong[1]은 물, tong[2]는 설탕통을 나타냄  void fill();                // 3개의 통을 모두 10으로 채움  void selectEspresso();      // 에스프레소를 선택한 경우, 커피 1, 물 1 소모  void selectAmericano();     // 아메리카노를 선택한 경우, 커피 1, 물 2 소모  void selectSugarCoffee();   // 설탕커피를 선택한 경우, 커피 1, 물 2, 설탕 1 소모  void show();               // 현재 커피, 물, 설탕의 잔량 출력  public:  void run();  // 커피 자판기 작동  };    class Container {               // 통 하나를 나타내는 클래스  int size;                   // 현재 저장 량, 최대 저장량은 10  public:  Container() {size = 10;}  void fill();                // 최대량(10)으로 채우기  void consume();             // 1 만큼 소모하기  int getSize();              // 현재 크기 리턴  };\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e다음과 같이 실행되도록 main() 함수와 CoffeeVendingMachine, Container를 완성하라.\u003c/p\u003e","title":"명품 C++ programming 실습 문제 4장 11번"},{"content":"문제 :\n다음에서 Person은 사람을, Family는 가족을 추상화한 클래스로서 완성되지 않은 클래스이다.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 class Person { string name; public: Person(string name) { this-\u0026gt;name = name;} string getName() { return name;} }; class Family { Person *p; // Person 배열 포인터 int size; // Person 배열의 크기. 가족 구성원 수 public: Family(string name, int size); // size 개수만큼 Person 배열 동적 생성 void show(); // 모든 가족 구성원 출력 ~Family(); }; 다음 main()이 작동하도록 Person과 Family 클래스에 필요한 멤버들을 추가하고 코드를 완성하라.\n1 2 3 4 5 6 7 8 int main() { Family *simpson = new Family(\u0026ldquo;Simpson\u0026rdquo;, 3); // 3명으로 구성된 Simpson 가족 simpson-\u0026gt;setName(0, \u0026ldquo;Mr. Simpson\u0026rdquo;); simpson-\u0026gt;setName(1, \u0026ldquo;Mrs. Simpson\u0026rdquo;); simpson-\u0026gt;setName(2, \u0026ldquo;Bart Simpson\u0026rdquo;); simpson-\u0026gt;show(); delete simpson; } 목적 및 힌트 :\n객체의 동적 생성 및 소멸 응용\n실행 결과 :\n코드 :\n1 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 #include #include using namespace std; class Person { string name; public: Person() {}; Person(string name) { this-\u0026gt;name = name;} string getName() { return name;} void setName(string name) { this-\u0026gt;name = name;} }; class Family { Person *p; // Person 배열 포인터 int size; // Person 배열의 크기. 가족 구성원 수 string name; public: Family(string name, int size); // size 개수만큼 Person 배열 동적 생성 void setName(int num, string name); void show(); // 모든 가족 구성원 출력 ~Family(); }; Family::Family(string name, int size){ p = new Person[size]; this-\u0026gt;size = size; this-\u0026gt;name = name; } void Family::setName(int num, string name){ p[num].setName(name); } void Family::show(){ cout \u0026laquo; name \u0026laquo; \u0026ldquo;가족은 다음과 같이 \u0026quot; \u0026laquo; size \u0026laquo; \u0026ldquo;명 입니다.\\n\u0026rdquo;; for(int i=0; i\u0026lt;size; i++){ cout \u0026laquo; p[i].getName() \u0026laquo; \u0026ldquo;\\t\u0026rdquo;; } } Family::~Family(){ delete [] p; } int main() { Family *simpson = new Family(\u0026ldquo;Simpson\u0026rdquo;, 3); // 3명으로 구성된 Simpson 가족 simpson-\u0026gt;setName(0, \u0026ldquo;Mr. Simpson\u0026rdquo;); simpson-\u0026gt;setName(1, \u0026ldquo;Mrs. Simpson\u0026rdquo;); simpson-\u0026gt;setName(2, \u0026ldquo;Bart Simpson\u0026rdquo;); simpson-\u0026gt;show(); delete simpson; } 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 4장 12번 (2) 2020.03.04 명품 C++ programming 실습 문제 4장 11번 (3) 2020.03.04 명품 C++ programming 실습 문제 4장 9번 (2) 2020.03.04 명품 C++ programming 실습 문제 4장 8번 (1) 2020.03.04 명품 C++ programming 실습 문제 4장 7번 (3) 2020.03.04 ","permalink":"https://blog.sobamemil.com/posts/064-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-4%EC%9E%A5-10%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e다음에서 Person은 사람을, Family는 가족을 추상화한 클래스로서 완성되지 않은 클래스이다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14  15\u003c/td\u003e\n          \u003ctd\u003eclass Person {  string name;  public:  Person(string name) { this-\u0026gt;name = name;}  string getName() { return name;}  };    class Family {  Person *p; // Person 배열 포인터  int size; // Person 배열의 크기. 가족 구성원 수  public:  Family(string name, int size); // size 개수만큼 Person 배열 동적 생성  void show(); // 모든 가족 구성원 출력  ~Family();  };\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e다음 main()이 작동하도록 Person과 Family 클래스에 필요한 멤버들을 추가하고 코드를 완성하라.\u003c/p\u003e","title":"명품 C++ programming 실습 문제 4장 10번"},{"content":"문제 :\n다음과 같은 Person 클래스가 있다.\nPerson 클래스와 main() 함수를 작성하여, 3개의 Person 객체를 가지는 배열을 선언하고, 다음과 같이 키보드에서 이름과 전화번호를 입력받아 출력하고 검색하는 프로그램을 완성하라.\n1 2 3 4 5 6 7 8 9 class Person{ string name; string tel; public: Person(); string getName() { return name; } string getTel() { return tel; } void set(string name, string tel); }; 목적 및 힌트 :\n객체 배열과 string 응용 연습\n실행 결과 :\n코드 :\n1 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 #include #include using namespace std; class Person{ string name; string tel; public: Person(); string getName() { return name; } string getTel() { return tel; } void set(string name, string tel); }; Person::Person(){} // 생성자 void Person::set(string N, string T){ name = N; tel = T; } int main(){ string Name,Tel; Person *pInf = new Person [3]; cout \u0026laquo; \u0026ldquo;이름과 전화 번호를 입력해 주세요\\n\u0026rdquo;; for(int i=0; i\u0026lt;3; i++){ cout \u0026laquo; \u0026ldquo;사람 \u0026quot; \u0026laquo; i+1 \u0026laquo; \u0026ldquo;\u0026raquo; \u0026ldquo;; cin \u0026raquo; Name \u0026raquo; Tel; pInf[i].set(Name,Tel); } cout \u0026laquo; \u0026ldquo;모든 사람의 이름은 \u0026ldquo;; for(int i=0; i\u0026lt;3; i++){ cout \u0026laquo; pInf[i].getName() \u0026laquo; \u0026quot; \u0026ldquo;; } cout \u0026laquo; endl \u0026laquo; \u0026ldquo;전화번호 검색합니다. 이름을 입력하세요\u0026raquo;\u0026rdquo;; cin \u0026raquo; Name; for(int i=0; i\u0026lt;3; i++){ if(Name.compare(pInf[i].getName())==0) { cout \u0026laquo; \u0026ldquo;전화 번호는 \u0026quot; \u0026laquo; pInf[i].getTel(); break; } } } 설명 :\nstring 클래스의 compare() 멤버 함수를 이용하여 찾고자 하는 문자열과 저장되어 있는 문자열을 비교 하였습니다.\ncompare() 함수는 매개변수로 들어온 str을 비교해서 같으면 0을 반환하고, 다르면 0이 아닌 값을 반환합니다.\n이때 호출한 문자열이 매개변수로 들어온 문자열보다 사전순으로 빠르면 음수(-1)를 반환하고,\n호출한 문자열이 매개변수로 들어온 문자열보다 사전순으로 느리면 양수(1)을 반환합니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 4장 11번 (3) 2020.03.04 명품 C++ programming 실습 문제 4장 10번 (1) 2020.03.04 명품 C++ programming 실습 문제 4장 8번 (1) 2020.03.04 명품 C++ programming 실습 문제 4장 7번 (3) 2020.03.04 명품 C++ programming 실습 문제 4장 6번 (1) 2020.03.04 ","permalink":"https://blog.sobamemil.com/posts/063-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-4%EC%9E%A5-9%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e다음과 같은 Person 클래스가 있다.\u003c/p\u003e\n\u003cp\u003ePerson 클래스와 main() 함수를 작성하여, 3개의 Person 객체를 가지는 배열을 선언하고, 다음과 같이 키보드에서 이름과 전화번호를 입력받아 출력하고 검색하는 프로그램을 완성하라.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9\u003c/td\u003e\n          \u003ctd\u003eclass Person{  string name;  string tel;  public:  Person();  string getName() { return name; }  string getTel() { return tel; }  void set(string name, string tel);  };\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e객체 배열과 string 응용 연습\u003c/p\u003e","title":"명품 C++ programming 실습 문제 4장 9번"},{"content":"문제 :\n실습 문제 7의 문제를 수정해보자. 사용자로부터 다음과 같이 원의 개수를 입력받고, 원의 개수만큼 반지름을 입력받는 방식으로 수정하라.\n원의 개수에 따라 동적으로 배열을 할당받아야 한다.\n2020/03/04 - [C++/명품 C++ programming] - 명품 C++ programming 실습 문제 4장 7번\n[명품 C++ programming 실습 문제 4장 7번\n문제 : 다음과 같이 원을 추상화한 Circle 클래스가 있다. Circle 클래스와 main() 함수를 작성하고 3개의 Circle 객체를 가진 배열을 선언하고, 반지름 값을 입력받고 면적이 100보다 큰 원의 개수를 출력하는 프..\nsobamemil.tistory.com](https://sobamemil.tistory.com/61)\n목적 및 힌트 :\n객체 배열 응용 연습\n실행 결과 :\n코드 :\n1 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 #include using namespace std; class Circle{ int radius; public: void setRadius(int radius); double getArea(); }; void Circle::setRadius(int r){ radius = r; } double Circle::getArea(){ return radius * radius * 3.14; } int main() { int r, num, cnt=0; cout \u0026laquo; \u0026ldquo;원의 개수 \u0026raquo; \u0026ldquo;; cin \u0026raquo; num ; Circle *pArray = new Circle[num]; // 입력받은 num만큼 동적으로 객체 배열 생성 for(int i=0; i\u0026lt;num; i++){ cout \u0026laquo; \u0026ldquo;원 \u0026quot; \u0026laquo; i+1 \u0026laquo; \u0026ldquo;의 반지름 \u0026raquo; \u0026ldquo;; cin \u0026raquo; r; pArray-\u0026gt;setRadius(r); if(pArray-\u0026gt;getArea() \u0026gt; 100) cnt++; pArray++; } cout \u0026laquo; \u0026ldquo;면적이 100보다 큰 원은 \u0026quot; \u0026laquo; cnt \u0026laquo; \u0026ldquo;개 입니다\u0026rdquo;; } 설명 :\npArray++; 을 이용해서 다음 객체 포인터를 선택할 수 있습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 4장 10번 (1) 2020.03.04 명품 C++ programming 실습 문제 4장 9번 (2) 2020.03.04 명품 C++ programming 실습 문제 4장 7번 (3) 2020.03.04 명품 C++ programming 실습 문제 4장 6번 (1) 2020.03.04 명품 C++ programming 실습 문제 4장 5번 (3) 2020.03.04 ","permalink":"https://blog.sobamemil.com/posts/062-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-4%EC%9E%A5-8%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e실습 문제 7의 문제를 수정해보자. 사용자로부터 다음과 같이 원의 개수를 입력받고, 원의 개수만큼 반지름을 입력받는 방식으로 수정하라.\u003c/p\u003e\n\u003cp\u003e원의 개수에 따라 동적으로 배열을 할당받아야 한다.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://sobamemil.tistory.com/61\"\u003e2020/03/04 - [C++/명품 C++ programming] - 명품 C++ programming 실습 문제 4장 7번\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e[명품 C++ programming 실습 문제 4장 7번\u003c/p\u003e\n\u003cp\u003e문제 : 다음과 같이 원을 추상화한 Circle 클래스가 있다. Circle 클래스와 main() 함수를 작성하고 3개의 Circle 객체를 가진 배열을 선언하고, 반지름 값을 입력받고 면적이 100보다 큰 원의 개수를 출력하는 프..\u003c/p\u003e","title":"명품 C++ programming 실습 문제 4장 8번"},{"content":"문제 :\n다음과 같이 원을 추상화한 Circle 클래스가 있다.\nCircle 클래스와 main() 함수를 작성하고 3개의 Circle 객체를 가진 배열을 선언하고, 반지름 값을 입력받고 면적이 100보다 큰 원의 개수를 출력하는 프로그램을 완성하라.\nCircle 클래스도 완성하라.\n1 2 3 4 5 6 class Circle { int radius; // 원의 반지름 값 public: void setRadius(int radius); // 반지름을 설정한다. double getArea(); // 면적을 리턴한다. }; 목적 및 힌트 :\n객체 배열 다루기 연습\n실행 결과 :\n코드 :\n1 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 #include using namespace std; class Circle { int radius; // 원의 반지름 값 public: void setRadius(int radius); // 반지름을 설정한다. double getArea(); // 면적을 리턴한다. }; void Circle::setRadius(int r){ radius = r; } double Circle::getArea(){ return radius * radius * 3.14; } int main() { int cnt=0, r; Circle *pArray = new Circle[3]; // 동적으로 객체 배열 생성 for(int i=0; i\u0026lt;3; i++){ cout \u0026laquo; \u0026ldquo;원 \u0026quot; \u0026laquo; i+1 \u0026laquo; \u0026ldquo;의 반지름 \u0026raquo; \u0026ldquo;; cin \u0026raquo; r; pArray[i].setRadius(r); if(pArray[i].getArea() \u0026gt; 100) // 면적이 100보다 크면 카운트 cnt++; } cout \u0026laquo; \u0026ldquo;면적이 100보다 큰 원은 \u0026quot; \u0026laquo; cnt \u0026laquo; \u0026ldquo;개 입니다\u0026rdquo;; delete pArray; } 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 4장 9번 (2) 2020.03.04 명품 C++ programming 실습 문제 4장 8번 (1) 2020.03.04 명품 C++ programming 실습 문제 4장 6번 (1) 2020.03.04 명품 C++ programming 실습 문제 4장 5번 (3) 2020.03.04 명품 C++ programming 실습 문제 4장 4번 (5) 2020.03.04 ","permalink":"https://blog.sobamemil.com/posts/061-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-4%EC%9E%A5-7%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e다음과 같이 원을 추상화한 Circle 클래스가 있다.\u003c/p\u003e\n\u003cp\u003eCircle 클래스와 main() 함수를 작성하고 3개의 Circle 객체를 가진 배열을 선언하고, 반지름 값을 입력받고 면적이 100보다 큰 원의 개수를 출력하는 프로그램을 완성하라.\u003c/p\u003e\n\u003cp\u003eCircle 클래스도 완성하라.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6\u003c/td\u003e\n          \u003ctd\u003eclass Circle {  int radius; // 원의 반지름 값  public:  void setRadius(int radius); // 반지름을 설정한다.  double getArea(); // 면적을 리턴한다.  };\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e객체 배열 다루기 연습\u003c/p\u003e","title":"명품 C++ programming 실습 문제 4장 7번"},{"content":"문제 :\nstring 클래스를 이용하여 사용자가 입력한 영문 한 줄을 문자열로 입력받고 거꾸로 출력하는 프로그램을 작성하라.\n목적 및 힌트 :\nstring 클래스로 문자열 다루기\n실행 결과 :\n코드 :\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include #include using namespace std; int main() { string str; cout \u0026laquo; \u0026ldquo;아래 한 줄을 입력하세요.(exit를 입력하면 종료합니다)\u0026rdquo;; while(true){ cout \u0026laquo; endl \u0026laquo; \u0026ldquo;\u0026raquo;\u0026rdquo;; getline(cin,str); if(str == \u0026ldquo;exit\u0026rdquo;) break; for(int i = str.length()-1; i\u0026gt;=0; i\u0026ndash;) cout \u0026laquo; str[i]; } } 설명 :\n사용자로부터 입력받은 영문 한 줄을 거꾸로 출력하기 위해 string 클래스의 length() 멤버 함수를 이용해 끝에서부터 반대로 출력하였습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 4장 8번 (1) 2020.03.04 명품 C++ programming 실습 문제 4장 7번 (3) 2020.03.04 명품 C++ programming 실습 문제 4장 5번 (3) 2020.03.04 명품 C++ programming 실습 문제 4장 4번 (5) 2020.03.04 명품 C++ programming 실습 문제 4장 3번 (1) 2020.03.04 ","permalink":"https://blog.sobamemil.com/posts/060-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-4%EC%9E%A5-6%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003estring 클래스를 이용하여 사용자가 입력한 영문 한 줄을 문자열로 입력받고 거꾸로 출력하는 프로그램을 작성하라.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003estring 클래스로 문자열 다루기\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/60/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e코드 :\u003c/strong\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17\u003c/td\u003e\n          \u003ctd\u003e#include\u003ciostream\u003e  #include\u003cstring\u003e  using namespace std;    int main() {  string str;  cout \u0026laquo; \u0026ldquo;아래 한 줄을 입력하세요.(exit를 입력하면 종료합니다)\u0026rdquo;;    while(true){  cout \u0026laquo; endl \u0026laquo; \u0026ldquo;\u0026raquo;\u0026rdquo;;  getline(cin,str);  if(str == \u0026ldquo;exit\u0026rdquo;)  break;  for(int i = str.length()-1; i\u0026gt;=0; i\u0026ndash;)  cout \u0026laquo; str[i];  }  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e설명 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 4장 6번"},{"content":"문제 :\nstring 클래스를 이용하여 사용자가 입력한 영문 한 줄을 입력받고 글자 하나만 랜덤하게 수정하여 출력하는 프로그램을 작성하라.\n목적 및 힌트 :\nstring 클래스로 문자열 다루기\n랜덤 정수를 발생시키기 위해 다음 두 라인의 코드가 필요하며, 와 헤더 파일을 include 해야 한다.\n1 2 srand((unsinged)time(0)); // 시작할 때마다, 다른 랜덤수를 발생시키기 위한 seed 설정 int n = rand(); // 0에서 RAND_MAX(32767) 사이의 랜덤한 정수 발생 실행 결과 :\n코드 :\n1 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 #include #include #include #include using namespace std; int main() { string sent; int n; cout \u0026laquo; \u0026ldquo;아래 한 줄을 입력하세요.(exit를 입력하면 종료합니다)\u0026rdquo; ; while(true){ srand((unsigned)time(0)); cout \u0026laquo; \u0026ldquo;\\n\u0026raquo;\u0026rdquo;; getline(cin,sent); if(sent == \u0026ldquo;exit\u0026rdquo;) break; int length = sent.length(); while(true){ n = rand()%length; if(sent[n]!=\u0026rsquo; \u0026lsquo;) break; } int a = rand()%25+95; // 임의의 문자 하나 선택 sent[n] = (char)a; cout \u0026laquo; sent; } } 설명 :\n어느 부분을 바꿀지 고를 때 공백문자는 바꾸지 않기 위해서 sent[n] != \u0026rsquo; \u0026rsquo; 이 아니면 다시 뽑도록 작성했습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 4장 7번 (3) 2020.03.04 명품 C++ programming 실습 문제 4장 6번 (1) 2020.03.04 명품 C++ programming 실습 문제 4장 4번 (5) 2020.03.04 명품 C++ programming 실습 문제 4장 3번 (1) 2020.03.04 명품 C++ programming 실습 문제 4장 2번 (1) 2020.03.04 ","permalink":"https://blog.sobamemil.com/posts/059-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-4%EC%9E%A5-5%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003estring 클래스를 이용하여 사용자가 입력한 영문 한 줄을 입력받고 글자 하나만 랜덤하게 수정하여 출력하는 프로그램을 작성하라.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003estring 클래스로 문자열 다루기\u003c/p\u003e\n\u003cp\u003e랜덤 정수를 발생시키기 위해 다음 두 라인의 코드가 필요하며, \u003ccstdlib\u003e와 \u003cctime\u003e 헤더 파일을 include 해야 한다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2\u003c/td\u003e\n          \u003ctd\u003esrand((unsinged)time(0)); // 시작할 때마다, 다른 랜덤수를 발생시키기 위한 seed 설정  int n = rand(); // 0에서 RAND_MAX(32767) 사이의 랜덤한 정수 발생\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/59/img_1.png\"\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 4장 5번"},{"content":"문제 :\n다음과 같은 Sample 클래스가 있다.\n1 2 3 4 5 6 7 8 9 10 11 12 class Sample{ int *p; int size; public: Sample(int n) { // 생성자 size = n; p = new int [n]; // n개 정수 배열의 동적 생성 } void read(); // 동적 할당받은 정수 배열 p에 사용자로부터 정수를 입력 받음 void write(); // 정수 배열을 화면에 출력 int big(); // 정수 배열에서 가장 큰 수 리턴 ~Sample(); // 소멸자 }; 다음 main() 함수가 실행되도록 Sample 클래스를 완성하라.\n1 2 3 4 5 6 int main() { Sample s(10); // 10개 정수 배열을 가진 Sample 객체 생성 s.read(); // 키보드에서 정수 배열 읽기 s.write(); // 정수 배열 출력 cout \u0026laquo; \u0026ldquo;가장 큰 수는 \u0026quot; \u0026laquo; s.big() \u0026laquo; endl; // 가장 큰 수 출력 } 목적 및 힌트 :\n동적 배열을 가진 클래스 다루기\n실행 결과 :\n코드 :\n1 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 #include using namespace std; class Sample{ int *p; int size; public: Sample(int n) { // 생성자 size = n; p = new int [n]; // n개 정수 배열의 동적 생성 } void read(); // 동적 할당받은 정수 배열 p에 사용자로부터 정수를 입력 받음 void write(); // 정수 배열을 화면에 출력 int big(); // 정수 배열에서 가장 큰 수 리턴 ~Sample(); // 소멸자 }; void Sample::read(){ for(int i=0; i\u0026lt;size; i++){ cin \u0026raquo; p[i]; } } void Sample::write(){ for(int i=0; i\u0026lt;size; i++){ cout \u0026laquo; p[i] \u0026laquo; \u0026quot; \u0026ldquo;; } cout \u0026laquo; endl; } int Sample::big(){ int big = 0; for(int i=0; i\u0026lt;size; i++){ if(big \u0026lt; p[i]) big = p[i]; } return big; } Sample::~Sample(){} int main() { Sample s(10); // 10개 정수 배열을 가진 Sample 객체 생성 s.read(); // 키보드에서 정수 배열 읽기 s.write(); // 정수 배열 출력 cout \u0026laquo; \u0026ldquo;가장 큰 수는 \u0026quot; \u0026laquo; s.big() \u0026laquo; endl; // 가장 큰 수 출력 } 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 4장 6번 (1) 2020.03.04 명품 C++ programming 실습 문제 4장 5번 (3) 2020.03.04 명품 C++ programming 실습 문제 4장 3번 (1) 2020.03.04 명품 C++ programming 실습 문제 4장 2번 (1) 2020.03.04 명품 C++ programming 실습 문제 4장 1번 (1) 2020.03.04 ","permalink":"https://blog.sobamemil.com/posts/058-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-4%EC%9E%A5-4%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e다음과 같은 Sample 클래스가 있다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12\u003c/td\u003e\n          \u003ctd\u003eclass Sample{  int *p;  int size;  public:  Sample(int n) {    // 생성자  size = n; p = new int [n]; // n개 정수 배열의 동적 생성  }  void read(); // 동적 할당받은 정수 배열 p에 사용자로부터 정수를 입력 받음  void write(); // 정수 배열을 화면에 출력  int big(); // 정수 배열에서 가장 큰 수 리턴  ~Sample(); // 소멸자  };\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e다음 main() 함수가 실행되도록 Sample 클래스를 완성하라.\u003c/p\u003e","title":"명품 C++ programming 실습 문제 4장 4번"},{"content":"문제 :\nstring 클래스를 이용하여 빈칸을 포함하는 문자열을 입력받고 문자열에서 \u0026lsquo;a\u0026rsquo;가 몇개 있는지 출력하는 프로그램을 작성해보자.\n목적 및 힌트 :\ngetline(), string 클래스 활용\n실행 결과 :\n코드 :\n(1) 문자열에서 \u0026lsquo;a\u0026rsquo;를 찾기 위해 string 클래스의 멤버 at()나 []를 이용하여 작성하라.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include #include using namespace std; int main() { string str; cout \u0026laquo; \u0026ldquo;문자열 입력\u0026raquo;\u0026rdquo;; getline(cin,str); int length = str.length(); int num = 0; for(int i=0; i\u0026lt;length; i++){ if(str[i] == \u0026lsquo;a\u0026rsquo;) num++; } cout \u0026laquo; \u0026ldquo;문자 a는 \u0026quot; \u0026laquo; num \u0026laquo; \u0026ldquo;개 있습니다.\u0026rdquo; ; } (2) 문자열에서 \u0026lsquo;a\u0026rsquo;를 찾기 위해 string 클래스의 find() 멤버 함수를 이용하여 작성하라. text.find(\u0026lsquo;a\u0026rsquo;, index);는 text 문자열의 index 위치부터 \u0026lsquo;a\u0026rsquo;를 찾아 문자열 내 인덱스를 리턴한다.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #include #include using namespace std; int main() { string str; cout \u0026laquo; \u0026ldquo;문자열 입력\u0026raquo;\u0026rdquo;; getline(cin,str); int num = 0; int j = -1; while(true){ j = (int)str.find(\u0026lsquo;a\u0026rsquo;, j+1); // index 0 부터 \u0026lsquo;a\u0026rsquo;를 탐색 if(j == -1) break; // \u0026lsquo;a\u0026rsquo;를 찾지 못했으면 break num ++; } cout \u0026laquo; \u0026ldquo;문자 a는 \u0026quot; \u0026laquo; num \u0026laquo; \u0026ldquo;개 있습니다.\u0026rdquo; ; } 설명 :\nstring 클래스에 정의되어 있는 find() 멤버 함수는 찾고자 하는 문자를 찾지 못했을 때 npos 를 return 합니다.\nnpos는 string::npos로 정의되는 상수인데 unsinged int 입니다.\n이때 npos를 int 타입으로 형변환 하면 나오는 값이 -1 입니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 4장 5번 (3) 2020.03.04 명품 C++ programming 실습 문제 4장 4번 (5) 2020.03.04 명품 C++ programming 실습 문제 4장 2번 (1) 2020.03.04 명품 C++ programming 실습 문제 4장 1번 (1) 2020.03.04 명품 C++ programming 실습 문제 3장 12번 (2) 2020.03.03 ","permalink":"https://blog.sobamemil.com/posts/057-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-4%EC%9E%A5-3%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003estring 클래스를 이용하여 빈칸을 포함하는 문자열을 입력받고 문자열에서 \u0026lsquo;a\u0026rsquo;가 몇개 있는지 출력하는 프로그램을 작성해보자.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003egetline(), string 클래스 활용\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/57/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e코드 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e(1) 문자열에서 \u0026lsquo;a\u0026rsquo;를 찾기 위해 string 클래스의 멤버 at()나 []를 이용하여 작성하라.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14  15\u003c/td\u003e\n          \u003ctd\u003e#include\u003ciostream\u003e  #include\u003cstring\u003e  using namespace std;    int main() {  string str;  cout \u0026laquo; \u0026ldquo;문자열 입력\u0026raquo;\u0026rdquo;;  getline(cin,str);  int length = str.length();  int num = 0;  for(int i=0; i\u0026lt;length; i++){  if(str[i] == \u0026lsquo;a\u0026rsquo;) num++;  }  cout \u0026laquo; \u0026ldquo;문자 a는 \u0026quot; \u0026laquo; num \u0026laquo; \u0026ldquo;개 있습니다.\u0026rdquo; ;  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e(2) 문자열에서 \u0026lsquo;a\u0026rsquo;를 찾기 위해 string 클래스의 find() 멤버 함수를 이용하여 작성하라. text.find(\u0026lsquo;a\u0026rsquo;, index);는 text 문자열의 index 위치부터 \u0026lsquo;a\u0026rsquo;를 찾아 문자열 내 인덱스를 리턴한다.\u003c/p\u003e","title":"명품 C++ programming 실습 문제 4장 3번"},{"content":"문제 :\n정수 공간 5개를 배열로 동적 할당받고, 정수를 5개 입력받아 평균을 구하고 출력한 뒤 배열을 소멸시키도록 main() 함수를 작성하라.\n목적 및 힌트 :\n배열의 동적 할당 및 반환\n실행 결과 :\n코드 :\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include using namespace std; int main() { int *p = new int[5]; double sum = 0; cout \u0026laquo; \u0026ldquo;정수 5개 입력\u0026raquo;\u0026rdquo;; for(int i=0; i\u0026lt;5; i++) { cin \u0026raquo; p[i]; sum += p[i]; } cout \u0026laquo; \u0026ldquo;평균 \u0026quot; \u0026laquo; sum/5; delete [] p; } 설명 :\n배열을 동적 할당하여 사용 및 반환하는 문제입니다.\n메모리를 동적으로 할당받아 사용한 후에는 꼭 delete를 해주는 습관을 기르는 게 좋습니다.\ndelete를 하지 않을경우 자신도 모르는 사이에 메모리 누수(Memory Leak) 현상이 생길 수 있습니다.\n또한 메모리를 delete 한다고 하여도 포인터는 살아있으므로 접근하지 않도록 주의해야 합니다.\n이때 해제된 메모리 영역을 여전히 가르키고 있는 포인터를 댕글링 포인터(Dangling Pointer)라고 합니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 4장 4번 (5) 2020.03.04 명품 C++ programming 실습 문제 4장 3번 (1) 2020.03.04 명품 C++ programming 실습 문제 4장 1번 (1) 2020.03.04 명품 C++ programming 실습 문제 3장 12번 (2) 2020.03.03 명품 C++ programming 실습 문제 3장 11번 (1) 2020.03.03 ","permalink":"https://blog.sobamemil.com/posts/056-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-4%EC%9E%A5-2%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e정수 공간 5개를 배열로 동적 할당받고, 정수를 5개 입력받아 평균을 구하고 출력한 뒤 배열을 소멸시키도록 main() 함수를 작성하라.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e배열의 동적 할당 및 반환\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/56/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e코드 :\u003c/strong\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14\u003c/td\u003e\n          \u003ctd\u003e#include\u003ciostream\u003e  using namespace std;    int main() {  int *p = new int[5];  double sum = 0;  cout \u0026laquo; \u0026ldquo;정수 5개 입력\u0026raquo;\u0026rdquo;;  for(int i=0; i\u0026lt;5; i++) {  cin \u0026raquo; p[i];  sum += p[i];  }  cout \u0026laquo; \u0026ldquo;평균 \u0026quot; \u0026laquo; sum/5;  delete [] p;  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e설명 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 4장 2번"},{"content":"문제 :\n다음은 색의 3요소인 red, green, blue로 색을 추상화한 Color 클래스를 선언하고 활용하는 코드이다. 빈칸을 채워라.\nred, green, blue는 0~255의 값만 가진다.\n1 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 #include using namespace std; class Color { int red, green, blue; public: Color() {red = green = blue = 0;} Color(int r, int g, int b) {red = r; green = g; blue = b;} void setColor(int r, int g, int b) {red = r; green = g; blue = b;} void show() {cout \u0026laquo; red \u0026laquo; \u0026rsquo; \u0026rsquo; \u0026laquo; green \u0026laquo; \u0026rsquo; \u0026rsquo; \u0026laquo; blue \u0026laquo; endl;} }; int main() { Color screenColor(255,0,0); // 빨간색의 screenColor 객체 생성 Color *p; // Color 타입의 포인터 변수 p 선언 ＿＿＿＿＿ // (1) p가 screenColor의 주소를 가지도록 코드 작성 ＿＿＿＿＿ // (2) p와 show()를 이용하여 screenColor 색 출력 ＿＿＿＿＿ // (3) Color의 일차원 배열 colors 선언. 원소는 3개 ＿＿＿＿＿ // (4) p가 colors 배열을 가리키도록 코드 작성 // (5) p와 setColor()를 이용하여 colors[0], colors[1], colors[2]가 // 각각 빨강, 초록, 파랑색을 가지도록 코드 작성 ＿＿＿＿＿ ＿＿＿＿＿ ＿＿＿＿＿ // (6) p와 show()를 이용하여 colors 배열의 모든 객체의 색 출력. for 문 이용 ＿＿＿＿＿ ＿＿＿＿＿ ＿＿＿＿＿ } 목적 및 힌트 :\n객체 포인터와 객체 배열 활용\n실행 결과 :\n코드 :\n1 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 #include using namespace std; class Color { int red, green, blue; public: Color() {red = green = blue = 0;} Color(int r, int g, int b) {red = r; green = g; blue = b;} void setColor(int r, int g, int b) {red = r; green = g; blue = b;} void show() {cout \u0026laquo; red \u0026laquo; \u0026rsquo; \u0026rsquo; \u0026laquo; green \u0026laquo; \u0026rsquo; \u0026rsquo; \u0026laquo; blue \u0026laquo; endl;} }; int main() { Color screenColor(255,0,0); // 빨간색의 screenColor 객체 생성 Color *p; // Color 타입의 포인터 변수 p 선언 p = \u0026amp;screenColor; // (1) p가 screenColor의 주소를 가지도록 코드 작성 p-\u0026gt;show(); // (2) p와 show()를 이용하여 screenColor 색 출력 Color colors[3]; // (3) Color의 일차원 배열 colors 선언. 원소는 3개 p = colors; // (4) p가 colors 배열을 가리키도록 코드 작성 // (5) p와 setColor()를 이용하여 colors[0], colors[1], colors[2]가 // 각각 빨강, 초록, 파랑색을 가지도록 코드 작성 p[0].setColor(255,0,0); p[1].setColor(0,255,0); p[2].setColor(0,0,255); // (6) p와 show()를 이용하여 colors 배열의 모든 객체의 색 출력. for 문 이용 for(int i=0; i\u0026lt;3; i++){ p[i].show(); } } 설명 :\n객체 포인터와 객체 배열의 사용법을 익히는 문제입니다.\n클래스 타입의 포인터 변수가 같은 클래스 타입의 객체의 주소를 가지도록 한 후,\n화살표 연산자(-\u0026gt;)를 이용하여 클래스 멤버를 호출할 수 있습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 4장 3번 (1) 2020.03.04 명품 C++ programming 실습 문제 4장 2번 (1) 2020.03.04 명품 C++ programming 실습 문제 3장 12번 (2) 2020.03.03 명품 C++ programming 실습 문제 3장 11번 (1) 2020.03.03 명품 C++ programming 실습 문제 3장 10번 (1) 2020.03.03 ","permalink":"https://blog.sobamemil.com/posts/055-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-4%EC%9E%A5-1%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e다음은 색의 3요소인 red, green, blue로 색을 추상화한 Color 클래스를 선언하고 활용하는 코드이다. 빈칸을 채워라.\u003c/p\u003e\n\u003cp\u003ered, green, blue는 0~255의 값만 가진다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  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\u003c/td\u003e\n          \u003ctd\u003e#include\u003ciostream\u003e  using namespace std;    class Color {  int red, green, blue;  public:  Color() {red = green = blue = 0;}  Color(int r, int g, int b) {red = r; green = g; blue = b;}  void setColor(int r, int g, int b) {red = r; green = g; blue = b;}  void show() {cout \u0026laquo; red \u0026laquo; \u0026rsquo; \u0026rsquo; \u0026laquo; green \u0026laquo; \u0026rsquo; \u0026rsquo; \u0026laquo; blue \u0026laquo; endl;}  };    int main() {  Color screenColor(255,0,0); // 빨간색의 screenColor 객체 생성  Color *p;     // Color 타입의 포인터 변수 p 선언  ＿＿＿＿＿    // (1) p가 screenColor의 주소를 가지도록 코드 작성  ＿＿＿＿＿    // (2) p와 show()를 이용하여 screenColor 색 출력  ＿＿＿＿＿    // (3) Color의 일차원 배열 colors 선언. 원소는 3개  ＿＿＿＿＿    // (4) p가 colors 배열을 가리키도록 코드 작성    // (5) p와 setColor()를 이용하여 colors[0], colors[1], colors[2]가  // 각각 빨강, 초록, 파랑색을 가지도록 코드 작성  ＿＿＿＿＿  ＿＿＿＿＿  ＿＿＿＿＿    // (6) p와 show()를 이용하여 colors 배열의 모든 객체의 색 출력. for 문 이용  ＿＿＿＿＿  ＿＿＿＿＿  ＿＿＿＿＿  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 4장 1번"},{"content":"문제 :\n컴퓨터의 주기억장치를 모델링하는 클래스의 Ram을 구현하려고 한다.\nRam 클래스는 데이터가 기록될 메모리 공간과 크기 정보를 가지고, 주어진 주소에 데이터를 기록하고(write), 주어진 주소로부터 데이터를 읽어 온다(read).\nRam 클래스는 다음과 같이 선언된다.\n1 2 3 4 5 6 7 8 9 class Ram { char mem[100 * 1024]; // 100KB 메모리. 한 번지는 한 바이트이므로 char 타입 사용 int size; public: Ram(); // mem 배열을 0으로 초기화하고 size를 100*1024로 초기화 ~Ram(); // \u0026ldquo;메모리 제거됨\u0026rdquo; 문자열 출력 char read(int address); // address 주소의 메모리 바이트 리턴 void write(int address, char value); // address 주소에 한 바이트로 value 저장 }; 다음 main() 함수는 100 번지에 20을 저장하고, 101 번지에 30을 저장한 후, 100 번지와 101 번지의 값을 읽고 더하여 102 번지에 저장하는 코드이다.\n1 2 3 4 5 6 7 8 int main() { Ram ram; ram.write(100, 20); // 100 번지에 20 저장 ram.write(101, 30); // 101 번지에 30 저장 char res = ram.read(100) + ram.read(101); // 20 + 30 = 50 ram.write(102, res); // 102 번지에 50 저장 cout \u0026laquo; \u0026ldquo;102 번지의 값 = \u0026quot; \u0026laquo; (int)ram.read(102) \u0026laquo; endl; // 102 번지 값 출력 } 목적 및 힌트 :\n실세계 객체를 클래스로 코딩하는 연습\n실행 결과 :\n실행 결과를 참고하여 Ram.h, Ram.cpp, main.cpp로 헤더 파일과 cpp 파일을 분리하여 프로그램을 완성하라.\n코드 :\n● Ram.h\n1 2 3 4 5 6 7 8 9 class Ram { char mem[100 * 1024]; // 100KB 메모리. 한 번지는 한 바이트이므로 char 타입 사용 int size; public: Ram(); // mem 배열을 0으로 초기화하고 size를 100*1024로 초기화 ~Ram(); // \u0026ldquo;메모리 제거됨\u0026rdquo; 문자열 출력 char read(int address); // address 주소의 메모리 바이트 리턴 void write(int address, char value); // address 주소에 한 바이트로 value 저장 }; ● Ram.cpp\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #include #include\u0026lt;memory.h\u0026gt; using namespace std; #include \u0026ldquo;Ram.h\u0026rdquo; Ram::Ram(){ size = 100 * 1024; for (int i = 0; i \u0026lt; size; ++i) mem[i] = 0; } Ram::~Ram(){ cout \u0026laquo; \u0026ldquo;메모리 제거됨\u0026rdquo;; } char Ram::read(int address){ return mem[address]; } void Ram::write(int address, char value){ mem[address] = value; } ● main.cpp\n1 2 3 4 5 6 7 8 9 10 11 12 13 #include using namespace std; #include \u0026ldquo;Ram.h\u0026rdquo; int main() { Ram ram; ram.write(100, 20); // 100 번지에 20 저장 ram.write(101, 30); // 101 번지에 30 저장 char res = ram.read(100) + ram.read(101); // 20 + 30 = 50 ram.write(102, res); // 102 번지에 50 저장 cout \u0026laquo; \u0026ldquo;102 번지의 값 = \u0026quot; \u0026laquo; (int)ram.read(102) \u0026laquo; endl; // 102 번지 값 출력 } 설명 :\n주어진 main() 함수와 Ram 클래스의 선언부를 참고하여 Ram 클래스 멤버에 대한 구현부를 작성하는 문제입니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 4장 2번 (1) 2020.03.04 명품 C++ programming 실습 문제 4장 1번 (1) 2020.03.04 명품 C++ programming 실습 문제 3장 11번 (1) 2020.03.03 명품 C++ programming 실습 문제 3장 10번 (1) 2020.03.03 명품 C++ programming 실습 문제 3장 9번 (1) 2020.03.03 ","permalink":"https://blog.sobamemil.com/posts/054-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-3%EC%9E%A5-12%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e컴퓨터의 주기억장치를 모델링하는 클래스의 Ram을 구현하려고 한다.\u003c/p\u003e\n\u003cp\u003eRam 클래스는 데이터가 기록될 메모리 공간과 크기 정보를 가지고, 주어진 주소에 데이터를 기록하고(write), 주어진 주소로부터 데이터를 읽어 온다(read).\u003c/p\u003e\n\u003cp\u003eRam 클래스는 다음과 같이 선언된다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9\u003c/td\u003e\n          \u003ctd\u003eclass Ram {  char mem[100 * 1024]; // 100KB 메모리. 한 번지는 한 바이트이므로 char 타입 사용  int size;  public:  Ram(); // mem 배열을 0으로 초기화하고 size를 100*1024로 초기화  ~Ram(); // \u0026ldquo;메모리 제거됨\u0026rdquo; 문자열 출력  char read(int address);    // address 주소의 메모리 바이트 리턴  void write(int address, char value); // address 주소에 한 바이트로 value 저장  };\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e다음 main() 함수는 100 번지에 20을 저장하고, 101 번지에 30을 저장한 후, 100 번지와 101 번지의 값을 읽고 더하여 102 번지에 저장하는 코드이다.\u003c/p\u003e","title":"명품 C++ programming 실습 문제 3장 12번"},{"content":"문제 :\n다음 코드에서 Box 클래스의 선언부와 구현부를 Box.h, Box.cpp 파일로 분리하고 main() 함수 부분을 main.cpp로 분리하여 전체 프로그램을 완성하라.\n1 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 #include using namespace std; class Box { int width, height; char fill; public: Box(int w, int h) { setSize(w, h); fill = \u0026lsquo;*\u0026rsquo;;} void setFill(char f) {fill = f;} void setSize(int w, int h) { width = w; height = h;} void draw(); }; void Box::draw() { for (int n = 0; n \u0026lt; height; n++) { for (int m = 0; m \u0026lt; width; m++) cout \u0026laquo; fill; cout \u0026laquo; endl; } } int main() { Box b(10, 2); b.draw(); // 박스를 그린다. cout \u0026laquo; endl; b.setSize(7, 4); // 박스의 크기를 변경한다. b.setFill(\u0026rsquo;^\u0026rsquo;); // 박스의 내부를 채울 문자를 \u0026lsquo;^\u0026lsquo;로 변경한다. b.draw(); // 박스를 그린다. } 목적 및 힌트 :\n선언부와 구현부로 나누기 연습\n실행 결과 :\n코드 :\n● Box.h\n1 2 3 4 5 6 7 8 9 class Box { int width, height; char fill; public: Box(int w, int h) { setSize(w, h); fill = \u0026lsquo;*\u0026rsquo;;} void setFill(char f) {fill = f;} void setSize(int w, int h) { width = w; height = h;} void draw(); }; ● Box.cpp\n1 2 3 4 5 6 7 8 9 10 11 #include using namespace std; #include \u0026ldquo;Box.h\u0026rdquo; void Box::draw() { for (int n = 0; n \u0026lt; height; n++) { for (int m = 0; m \u0026lt; width; m++) cout \u0026laquo; fill; cout \u0026laquo; endl; } } ● main.cpp\n1 2 3 4 5 6 7 8 9 10 11 12 13 #include using namespace std; #include \u0026ldquo;Box.h\u0026rdquo; int main() { Box b(10, 2); b.draw(); cout \u0026laquo; endl; b.setSize(7, 4); b.setFill(\u0026rsquo;^\u0026rsquo;); b.draw(); } 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 4장 1번 (1) 2020.03.04 명품 C++ programming 실습 문제 3장 12번 (2) 2020.03.03 명품 C++ programming 실습 문제 3장 10번 (1) 2020.03.03 명품 C++ programming 실습 문제 3장 9번 (1) 2020.03.03 명품 C++ programming 실습 문제 3장 8번 (1) 2020.03.03 ","permalink":"https://blog.sobamemil.com/posts/053-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-3%EC%9E%A5-11%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e다음 코드에서 Box 클래스의 선언부와 구현부를 Box.h, Box.cpp 파일로 분리하고 main() 함수 부분을 main.cpp로 분리하여 전체 프로그램을 완성하라.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  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\u003c/td\u003e\n          \u003ctd\u003e#include\u003ciostream\u003e  using namespace std;    class Box {  int width, height;  char fill;  public:  Box(int w, int h) { setSize(w, h); fill = \u0026lsquo;*\u0026rsquo;;}  void setFill(char f) {fill = f;}  void setSize(int w, int h) { width = w; height = h;}  void draw();  };  void Box::draw() {  for (int n = 0; n \u0026lt; height; n++) {  for (int m = 0; m \u0026lt; width; m++) cout \u0026laquo; fill;  cout \u0026laquo; endl;  }  }    int main() {  Box b(10, 2);  b.draw(); // 박스를 그린다.  cout \u0026laquo; endl;  b.setSize(7, 4); // 박스의 크기를 변경한다.  b.setFill(\u0026rsquo;^\u0026rsquo;); // 박스의 내부를 채울 문자를 \u0026lsquo;^\u0026lsquo;로 변경한다.  b.draw(); // 박스를 그린다.  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 3장 11번"},{"content":"문제 :\n다수의 클래스를 선언하고 활용하는 간단한 문제이다. 더하기(+), 빼기(-), 곱하기(*), 나누기(/)를 수행하는 4개의 클래스를 Add, Sub, Mul, Div를 만들고자 한다.\n이들은 모두 공통으로 다음 멤버를 가진다.\n● int 타입 변수 a, b : 피연산자\n● void setValue(int x, int y) 함수 : 매개 변수 x, y를 멤버 a, b에 복사\n● int calculate() 함수 : 연산을 실행하고 결과 리턴\nmain() 함수는 Add, Sub, Mul, Div 클래스 타입의 객체 a, s, m, d를 생성하고, 아래와 같이 키보드로부터 두 개의 정수와 연산자를 입력받고, a, s, m, d 객체 중에서 연산을 처리할 객체의 setValue() 함수를 호출한 후, calculate()를 호출하여 결과를 화면에 출력한다.\n프로그램은 무한 루프를 돈다.\n실행 결과 :\n목적 및 힌트 :\n클래스와 객체 활용 연습\n코드 :\n(1) 클래스의 선언부와 구현부를 분리하고, 모든 코드를 Calculator.cpp 파일에 작성하라.\n1 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 82 83 84 85 86 87 88 89 90 91 #include using namespace std; class Add{ private: int a, b; public: void setValue(int x, int y); int calculate(); }; void Add::setValue(int x, int y){ a = x; b = y; } int Add::calculate(){ return a + b; } class Sub{ private: int a, b; public: void setValue(int x, int y); int calculate(); }; void Sub::setValue(int x, int y){ a = x; b = y; } int Sub::calculate(){ return a - b; } class Mul{ private: int a, b; public: void setValue(int x, int y); int calculate(); }; void Mul::setValue(int x, int y){ a = x; b = y; } int Mul::calculate(){ return a * b; } class Div{ private: int a, b; public: void setValue(int x, int y); int calculate(); }; void Div::setValue(int x, int y){ a = x; b = y; } int Div::calculate(){ return a / b; } int main() { Add a; Sub s; Mul m; Div d; int x, y; char c; while(true){ cout \u0026laquo; \u0026ldquo;두 정수와 연산자를 입력하세요\u0026raquo;\u0026rdquo;; cin \u0026raquo; x \u0026raquo; y \u0026raquo; c; if(c == \u0026lsquo;+\u0026rsquo;) { a.setValue(x,y); cout \u0026laquo; a.calculate() \u0026laquo; endl; } else if(c == \u0026lsquo;-\u0026rsquo;) { s.setValue(x,y); cout \u0026laquo; s.calculate() \u0026laquo; endl; } else if(c == \u0026lsquo;*\u0026rsquo;) { m.setValue(x,y); cout \u0026laquo; m.calculate() \u0026laquo; endl; } else if(c == \u0026lsquo;/\u0026rsquo;) { d.setValue(x,y); cout \u0026laquo; d.calculate() \u0026laquo; endl; } } } (2) 클래스의 선언부와 구현부를 헤더 파일과 cpp 파일로 나누어 프로그램을 작성하라.\n**●**3-10.h\n1 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 class Add{ private: int a, b; public: void setValue(int x, int y); int calculate(); }; class Div{ private: int a, b; public: void setValue(int x, int y); int calculate(); }; class Mul{ private: int a, b; public: void setValue(int x, int y); int calculate(); }; class Sub{ private: int a, b; public: void setValue(int x, int y); int calculate(); }; ● 3-10.cpp\n1 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 #include using namespace std; #include \u0026ldquo;3-10.h\u0026rdquo; void Add::setValue(int x, int y){ a = x; b = y; } int Add::calculate(){ return a + b; } void Sub::setValue(int x, int y){ a = x; b = y; } int Sub::calculate(){ return a - b; } void Mul::setValue(int x, int y){ a = x; b = y; } int Mul::calculate(){ return a * b; } void Div::setValue(int x, int y){ a = x; b = y; } int Div::calculate(){ return a / b; } ● main.cpp\n1 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 #include using namespace std; #include \u0026ldquo;3-10.h\u0026rdquo; int main() { Add a; Sub s; Mul m; Div d; int x, y; char c; while(true){ cout \u0026laquo; \u0026ldquo;두 정수와 연산자를 입력하세요\u0026raquo;\u0026rdquo;; cin \u0026raquo; x \u0026raquo; y \u0026raquo; c; if(c == \u0026lsquo;+\u0026rsquo;) { a.setValue(x,y); cout \u0026laquo; a.calculate() \u0026laquo; endl; } else if(c == \u0026lsquo;-\u0026rsquo;) { s.setValue(x,y); cout \u0026laquo; s.calculate() \u0026laquo; endl; } else if(c == \u0026lsquo;*\u0026rsquo;) { m.setValue(x,y); cout \u0026laquo; m.calculate() \u0026laquo; endl; } else if(c == \u0026lsquo;/\u0026rsquo;) { d.setValue(x,y); cout \u0026laquo; d.calculate() \u0026laquo; endl; } } } 설명 :\n하나의 프로그램을 헤더 파일과 cpp 파일로 나누어 작성하는 문제입니다.\n각각의 파일들을 한 프로젝트에 넣어놓고 구현부 cpp 파일과 main cpp 파일에서 헤더파일을 include 해주시면 됩니다.\n앞으로 프로그램을 작성할 때 지금처럼 헤더파일과 구현부 cpp파일, main cpp파일로 나누어 작성하는걸 추천합니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 3장 12번 (2) 2020.03.03 명품 C++ programming 실습 문제 3장 11번 (1) 2020.03.03 명품 C++ programming 실습 문제 3장 9번 (1) 2020.03.03 명품 C++ programming 실습 문제 3장 8번 (1) 2020.03.03 명품 C++ programming 실습 문제 3장 7번 (2) 2020.03.03 ","permalink":"https://blog.sobamemil.com/posts/052-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-3%EC%9E%A5-10%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e다수의 클래스를 선언하고 활용하는 간단한 문제이다. 더하기(+), 빼기(-), 곱하기(*), 나누기(/)를 수행하는 4개의 클래스를 Add, Sub, Mul, Div를 만들고자 한다.\u003c/p\u003e\n\u003cp\u003e이들은 모두 공통으로 다음 멤버를 가진다.\u003c/p\u003e\n\u003cp\u003e● int 타입 변수 a, b : 피연산자\u003c/p\u003e\n\u003cp\u003e● void setValue(int x, int y) 함수 : 매개 변수 x, y를 멤버 a, b에 복사\u003c/p\u003e\n\u003cp\u003e● int calculate() 함수 : 연산을 실행하고 결과 리턴\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/52/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003emain() 함수는 Add, Sub, Mul, Div 클래스 타입의 객체 a, s, m, d를 생성하고, 아래와 같이 키보드로부터 두 개의 정수와 연산자를 입력받고, a, s, m, d 객체 중에서 연산을 처리할 객체의 setValue() 함수를 호출한 후, calculate()를 호출하여 결과를 화면에 출력한다.\u003c/p\u003e","title":"명품 C++ programming 실습 문제 3장 10번"},{"content":"문제 :\nOval 클래스는 주어진 사각형에 내접하는 타원을 추상화한 클래스이다.\nOval 클래스의 멤버는 모두 다음과 같다. Oval 클래스를 선언부와 구현부로 나누어 작성하라.\n● 정수값의 사각형 너비와 높이를 가지는 width, height 변수 멤버\n● 너비와 높이 값을 매개 변수로 받는 생성자\n● 너비와 높이를 1로 초기화하는 매개 변수 없는 생성자\n● width와 height를 출력하는 소멸자\n● 타원이 너비를 리턴하는 getWidth() 함수 멤버\n● 타원의 높이를 리턴하는 getHeight() 함수 멤버\n● 타원의 너비와 높이를 변경하는 set(int w, int h) 함수 멤버\n● 타원의 너비와 높이를 화면에 출력하는 show() 함수 멤버\nOval 클래스를 활용하는 코드의 사례와 실행 결과는 다음과 같다.\n1 2 3 4 5 6 7 8 9 #include using namespace std; int main() { Oval a, b(3,4); a.set(10, 20); a.show(); cout \u0026laquo; b.getWidth() \u0026laquo; \u0026ldquo;,\u0026rdquo; \u0026laquo; b.getHeight() \u0026laquo; endl; } 실행 결과 :\n목적 및 힌트 :\n생성자/소멸자를 갖춘 클래스 만들기, 선언부와 구현부로 나누어 작성\n코드 :\n1 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 #include using namespace std; class Oval{ private: int width, height; public: Oval(); Oval(int a, int b); int getWidth(); int getHeight(); void set(int w, int h); void show(); ~Oval(); }; Oval::Oval(){ width = 1; height = 1; } Oval::Oval(int a, int b){ width = a; height = b; } int Oval::getWidth(){ return width; } int Oval::getHeight(){ return height; } void Oval::set(int w, int h){ width = w; height = h; } void Oval::show(){ cout \u0026laquo; \u0026ldquo;width = \u0026quot; \u0026laquo; width \u0026laquo; \u0026ldquo;, height = \u0026quot; \u0026laquo; height \u0026laquo; endl; } Oval::~Oval(){ cout \u0026laquo; \u0026ldquo;Oval 소멸 : width = \u0026quot; \u0026laquo; width \u0026laquo; \u0026ldquo;, height = \u0026quot; \u0026laquo; height \u0026laquo; endl; } int main() { Oval a, b(3,4); a.set(10, 20); a.show(); cout \u0026laquo; b.getWidth() \u0026laquo; \u0026ldquo;,\u0026rdquo; \u0026laquo; b.getHeight() \u0026laquo; endl; } 설명 :\n구현부를 클래스 내부가 아닌 외부에 작성하여 선언부와 구현부를 나누어 작성하였습니다.\n한 클래스에서 생성자는 여러 개 일 수 있지만 소멸자는 하나만 존재할 수 있습니다\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 3장 11번 (1) 2020.03.03 명품 C++ programming 실습 문제 3장 10번 (1) 2020.03.03 명품 C++ programming 실습 문제 3장 8번 (1) 2020.03.03 명품 C++ programming 실습 문제 3장 7번 (2) 2020.03.03 명품 C++ programming 실습 문제 3장 6번 (2) 2020.03.03 ","permalink":"https://blog.sobamemil.com/posts/051-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-3%EC%9E%A5-9%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eOval 클래스는 주어진 사각형에 내접하는 타원을 추상화한 클래스이다.\u003c/p\u003e\n\u003cp\u003eOval 클래스의 멤버는 모두 다음과 같다. Oval 클래스를 선언부와 구현부로 나누어 작성하라.\u003c/p\u003e\n\u003cp\u003e● 정수값의 사각형 너비와 높이를 가지는 width, height 변수 멤버\u003c/p\u003e\n\u003cp\u003e● 너비와 높이 값을 매개 변수로 받는 생성자\u003c/p\u003e\n\u003cp\u003e● 너비와 높이를 1로 초기화하는 매개 변수 없는 생성자\u003c/p\u003e\n\u003cp\u003e● width와 height를 출력하는 소멸자\u003c/p\u003e\n\u003cp\u003e● 타원이 너비를 리턴하는 getWidth() 함수 멤버\u003c/p\u003e\n\u003cp\u003e● 타원의 높이를 리턴하는 getHeight() 함수 멤버\u003c/p\u003e\n\u003cp\u003e● 타원의 너비와 높이를 변경하는 set(int w, int h) 함수 멤버\u003c/p\u003e","title":"명품 C++ programming 실습 문제 3장 9번"},{"content":"문제 :\nint 타입의 정수를 객체화한 Integer 클래스를 작성하라. Integer의 모든 멤버 함수를 자동 인라인으로 작성하라.\nInteger 클래스를 활용하는 코드는 다음과 같다.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include #include using namespace std; int main() { Integer n(30); cout \u0026laquo; n.get() \u0026laquo; \u0026rsquo; \u0026lsquo;; // 30 출력 n.set(50); cout \u0026laquo; n.get() \u0026laquo; \u0026rsquo; \u0026lsquo;; // 50 출력 Integer m(\u0026ldquo;300\u0026rdquo;); cout \u0026laquo; m.get() \u0026laquo; \u0026rsquo; \u0026lsquo;; // 300 출력 cout \u0026laquo; m.isEven(); // true(정수로 1) 출력 } 목적 및 힌트 :\n클래스 만들기와 객체 개념 이해\n문제 2의 힌트와 동일하게 헤더 파일의 stoi() 함수를 이용하면 편합니다.\n2020/03/02 - [C++/명품 C++ programming] - 명품 C++ programming 실습 문제 3장 2번\n[명품 C++ programming 실습 문제 3장 2번\n문제 : 날짜를 다루는 Date 클래스를 작성하고자 한다. Date를 이용하는 main()과 실행 결과는 다음과 같다. 클래스 Date를 작성하여 아래 프로그램에 추가하라. 1 2 3 4 5 6 7 8 9 #include using nam..\nsobamemil.tistory.com](https://sobamemil.tistory.com/44)\n실행 결과 :\n코드 :\n1 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 #include #include using namespace std; class Integer{ private: int a; public: Integer(int b){ a = b; } Integer(string s){ a = stoi(s); } int get(){ return a; } int set(int b){ return a = b; } int isEven(){ return true; } }; int main() { Integer n(30); cout \u0026laquo; n.get() \u0026laquo; \u0026rsquo; \u0026lsquo;; // 30 출력 n.set(50); cout \u0026laquo; n.get() \u0026laquo; \u0026rsquo; \u0026lsquo;; // 50 출력 Integer m(\u0026ldquo;300\u0026rdquo;); cout \u0026laquo; m.get() \u0026laquo; \u0026rsquo; \u0026lsquo;; // 300 출력 cout \u0026laquo; m.isEven(); // true(정수로 1) 출력 } 설명 :\n클래스의 모든 멤버 함수를 자동 인라인으로 작성하는 문제입니다.\n간단한 함수의 구현부는 클래스 안에서 구현하면 자동으로 판단하여 인라인 함수로 실행할 수도 있습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 3장 10번 (1) 2020.03.03 명품 C++ programming 실습 문제 3장 9번 (1) 2020.03.03 명품 C++ programming 실습 문제 3장 7번 (2) 2020.03.03 명품 C++ programming 실습 문제 3장 6번 (2) 2020.03.03 명품 C++ programming 실습 문제 3장 5번 (4) 2020.03.03 ","permalink":"https://blog.sobamemil.com/posts/050-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-3%EC%9E%A5-8%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eint 타입의 정수를 객체화한 Integer 클래스를 작성하라. Integer의 모든 멤버 함수를 자동 인라인으로 작성하라.\u003c/p\u003e\n\u003cp\u003eInteger 클래스를 활용하는 코드는 다음과 같다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14\u003c/td\u003e\n          \u003ctd\u003e#include\u003ciostream\u003e  #include\u003cstring\u003e  using namespace std;    int main() {  Integer n(30);  cout \u0026laquo; n.get() \u0026laquo; \u0026rsquo; \u0026lsquo;; // 30 출력  n.set(50);  cout \u0026laquo; n.get() \u0026laquo; \u0026rsquo; \u0026lsquo;; // 50 출력    Integer m(\u0026ldquo;300\u0026rdquo;);  cout \u0026laquo; m.get() \u0026laquo; \u0026rsquo; \u0026lsquo;; // 300 출력  cout \u0026laquo; m.isEven(); // true(정수로 1) 출력  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 3장 8번"},{"content":"문제 :\n문제 5번을 참고하여 생성자를 이용하여 짝수 홀수를 선택할 수 있도록 SelectableRandom 클래스를 작성하고 짝수 10개, 홀수 10개를 랜덤하게 발생시키는 프로그램을 작성하라.\n2020/03/03 - [C++/명품 C++ programming] - 명품 C++ programming 실습 문제 3장 5번\n[명품 C++ programming 실습 문제 3장 5번\n문제 : 랜덤 수를 발생시키는 Random 클래스를 만들자. Random 클래스를 이용하여 랜덤 한 정수를 10개 출력하는 사례는 다음과 같다. Random 클래스가 생성자, next(), nextInRange()의 3개의 멤버 함수를 가지도..\nsobamemil.tistory.com](https://sobamemil.tistory.com/47)\n목적 및 힌트 :\n클래스 작성에서 매개 변수를 가진 생성자의 활용\n실행 결과 :\n코드 :\n1 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 #include #include #include using namespace std; class SelectableRandom{ int num; public: SelectableRandom(int _num); // 매개변수로 짝수 혹은 홀수를 받는다 int next(); int nextInRange(int a, int b); }; SelectableRandom::SelectableRandom(int _num){ num = _num; srand((unsigned)time(0)); } int SelectableRandom::next() { int ran = rand(); if(num%2 == 0){ // 짝수 return if(ran%2 == 0) return ran; else return \u0026ndash;ran; } else { if(ran%2 == 0) // 홀수 return return ++ran; else return ran; } } int SelectableRandom::nextInRange(int a, int b){ int ran = rand()%(b-a+1) + a; if(num%2 == 0) { // 짝수 return if(ran%2 == 0) return ran; else return ++ran; } else { // 홀수 return if(ran%2 == 0) return ++ran; else return ran; } } int main() { SelectableRandom r1(0); // 짝수 랜덤 정수 발생 cout \u0026laquo; \u0026ldquo;\u0026ndash; 0에서 \u0026quot; \u0026laquo; RAND_MAX \u0026laquo; \u0026ldquo;까지의 짝수 랜덤 정수 10 개\u0026ndash;\u0026rdquo; \u0026laquo; endl; for(int i=0; i\u0026lt;10; i++) { int n = r1.next(); cout \u0026laquo; n \u0026laquo; \u0026rsquo; \u0026lsquo;; } SelectableRandom r2(1); // 홀수 랜덤 정수 발생 cout \u0026laquo; endl \u0026laquo; endl \u0026laquo; \u0026ldquo;\u0026ndash; 2에서 \u0026quot; \u0026laquo; \u0026ldquo;9 까지의 랜덤 홀수 정수 10 개 \u0026ndash;\u0026rdquo; \u0026laquo; endl; for(int i=0; i\u0026lt;10; i++) { int n = r2.nextInRange(2,9); cout \u0026laquo; n \u0026laquo; \u0026rsquo; \u0026lsquo;; } cout \u0026laquo; endl; } 설명 :\nSelectableRandom 클래스에서 생성자를 이용하여 짝수 홀수를 선택할 수 있게 하였습니다.\n생성자 호출 시 전달해준 매개변수가 짝수이면 짝수 출력, 홀수이면 홀수를 출력하게 작성 하였습니다.\n이를 이용해 매개변수를 사용자에게 직접 입력받아 생성자 호출 시 인자로 넘겨주어 사용자가 직접 짝수, 홀수를 선택할 수 있게 작성할 수도 있습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 3장 9번 (1) 2020.03.03 명품 C++ programming 실습 문제 3장 8번 (1) 2020.03.03 명품 C++ programming 실습 문제 3장 6번 (2) 2020.03.03 명품 C++ programming 실습 문제 3장 5번 (4) 2020.03.03 명품 C++ programming 실습 문제 3장 4번 (8) 2020.03.03 ","permalink":"https://blog.sobamemil.com/posts/049-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-3%EC%9E%A5-7%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e문제 5번을 참고하여 생성자를 이용하여 짝수 홀수를 선택할 수 있도록 SelectableRandom 클래스를 작성하고 짝수 10개, 홀수 10개를 랜덤하게 발생시키는 프로그램을 작성하라.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://sobamemil.tistory.com/47\"\u003e2020/03/03 - [C++/명품 C++ programming] - 명품 C++ programming 실습 문제 3장 5번\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e[명품 C++ programming 실습 문제 3장 5번\u003c/p\u003e\n\u003cp\u003e문제 : 랜덤 수를 발생시키는 Random 클래스를 만들자. Random 클래스를 이용하여 랜덤 한 정수를 10개 출력하는 사례는 다음과 같다. Random 클래스가 생성자, next(), nextInRange()의 3개의 멤버 함수를 가지도..\u003c/p\u003e","title":"명품 C++ programming 실습 문제 3장 7번"},{"content":"문제 :\n문제 5번을 참고하여 짝수 정수만 랜덤하게 발생시키는 EvenRandom 클래스를 작성하고 EvenRandom 클래스를 이용하여 10개의 짝수를 랜덤하게 출력하는 프로그램을 완성하라.\n0도 짝수로 처리한다.\n2020/03/03 - [C++/명품 C++ programming] - 명품 C++ programming 실습 문제 3장 5번\n[명품 C++ programming 실습 문제 3장 5번\n문제 : 랜덤 수를 발생시키는 Random 클래스를 만들자. Random 클래스를 이용하여 랜덤 한 정수를 10개 출력하는 사례는 다음과 같다. Random 클래스가 생성자, next(), nextInRange()의 3개의 멤버 함수를 가지도..\nsobamemil.tistory.com](https://sobamemil.tistory.com/47)\n목적 및 힌트 :\n클래스 작성 및 클래스 활용\n실행 결과 :\n코드 :\n1 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 #include #include #include using namespace std; class EvenRandom{ public: EvenRandom(); int next(); int nextInRange(int a, int b); }; EvenRandom::EvenRandom(){ srand((unsigned)time(0)); } int EvenRandom::next() { int ran = rand(); if(ran%2 == 0) return ran; else return \u0026ndash;ran; } int EvenRandom::nextInRange(int a, int b){ int ran = rand()%(b-a+1) + a; if(ran%2 == 0) return ran; else return \u0026ndash;ran; } int main(){ EvenRandom r; cout \u0026laquo; \u0026ldquo;\u0026ndash; 0에서 \u0026quot; \u0026laquo; RAND_MAX \u0026laquo; \u0026ldquo;까지의 랜덤 정수 10 개\u0026ndash;\u0026rdquo; \u0026laquo; endl; for(int i=0; i\u0026lt;10; i++) { int n = r.next(); // 0에서 RAND_MAX(32767) 사이의 랜덤한 정수 cout \u0026laquo; n \u0026laquo; \u0026rsquo; \u0026lsquo;; } cout \u0026laquo; endl \u0026laquo; endl \u0026laquo; \u0026ldquo;\u0026ndash; 2에서 \u0026quot; \u0026laquo; \u0026ldquo;10 까지의 랜덤 정수 10 개 \u0026ndash;\u0026rdquo; \u0026laquo; endl; for(int i=0; i\u0026lt;10; i++) { int n = r.nextInRange(2,10); // 2에서 10 사이의 랜덤한 정수 cout \u0026laquo; n \u0026laquo; \u0026rsquo; \u0026lsquo;; } cout \u0026laquo; endl; } 설명 :\n이전 글에 있는 실습 문제 5번을 참고하여 작성하면 되는 문제입니다.\n짝수인 정수만 랜덤하게 출력하기 위해 if문으로 짝수인지 판단하고, 짝수가 아닐시 1을 빼서 return 해주었습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 3장 8번 (1) 2020.03.03 명품 C++ programming 실습 문제 3장 7번 (2) 2020.03.03 명품 C++ programming 실습 문제 3장 5번 (4) 2020.03.03 명품 C++ programming 실습 문제 3장 4번 (8) 2020.03.03 명품 C++ programming 실습 문제 3장 3번 (3) 2020.03.02 ","permalink":"https://blog.sobamemil.com/posts/048-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-3%EC%9E%A5-6%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e문제 5번을 참고하여 짝수 정수만 랜덤하게 발생시키는 EvenRandom 클래스를 작성하고 EvenRandom 클래스를 이용하여 10개의 짝수를 랜덤하게 출력하는 프로그램을 완성하라.\u003c/p\u003e\n\u003cp\u003e0도 짝수로 처리한다.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://sobamemil.tistory.com/47\"\u003e2020/03/03 - [C++/명품 C++ programming] - 명품 C++ programming 실습 문제 3장 5번\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e[명품 C++ programming 실습 문제 3장 5번\u003c/p\u003e\n\u003cp\u003e문제 : 랜덤 수를 발생시키는 Random 클래스를 만들자. Random 클래스를 이용하여 랜덤 한 정수를 10개 출력하는 사례는 다음과 같다. Random 클래스가 생성자, next(), nextInRange()의 3개의 멤버 함수를 가지도..\u003c/p\u003e","title":"명품 C++ programming 실습 문제 3장 6번"},{"content":"문제 :\n랜덤 수를 발생시키는 Random 클래스를 만들자. Random 클래스를 이용하여 랜덤 한 정수를 10개 출력하는 사례는 다음과 같다.\nRandom 클래스가 생성자, next(), nextInRange()의 3개의 멤버 함수를 가지도록 작성하고 main() 함수와 합쳐 하나의 cpp 파일에 구현하라.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 int main() { Random r; cout \u0026laquo; \u0026ldquo;\u0026ndash; 0에서 \u0026quot; \u0026laquo; RAND_MAX \u0026laquo; \u0026ldquo;까지의 랜덤 정수 10 개\u0026ndash;\u0026rdquo; \u0026laquo; endl; for(int i=0; i\u0026lt;10; i++) { int n = r.next(); // 0에서 RAND_MAX(32767) 사이의 랜덤한 정수 cout \u0026laquo; n \u0026laquo; \u0026rsquo; \u0026lsquo;; } cout \u0026laquo; endl \u0026laquo; endl \u0026laquo; \u0026ldquo;\u0026ndash; 2에서 \u0026quot; \u0026laquo; \u0026ldquo;4 까지의 랜덤 정수 10 개 \u0026ndash;\u0026rdquo; \u0026laquo; endl; for(int i=0; i\u0026lt;10; i++) { int n = r.nextInRange(2,4); // 2에서 4 사이의 랜덤한 정수 cout \u0026laquo; n \u0026laquo; \u0026rsquo; \u0026lsquo;; } cout \u0026laquo; endl; } 목적 및 힌트 :\n클래스와 멤버 변수, 멤버 함수 만들기\nRAND_MAX 상수는 헤더 파일에 선언되어 있는 정수 32767.\n랜덤 정수를 발생시키기 위해서는 다음 두 라인의 코드가 필요하고, 와 헤더 파일을 include 해야 한다.\n1 2 srand((unsinged)time(0)); // 시작할 때마다, 다른 랜덤수를 발생시키기 위한 seed 설정. int n = rand(); // 0에서 RAND_MAX(32767) 사이의 랜덤한 정수 발생. 실행 결과 :\n코드 :\n1 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 #include #include #include using namespace std; class Random{ public: Random(); int next(); int nextInRange(int a, int b); }; Random::Random(){ srand((unsigned)time(0)); } int Random::next() { return rand(); } int Random::nextInRange(int a, int b){ return rand()%(b-a+1) + a; } int main() { Random r; cout \u0026laquo; \u0026ldquo;\u0026ndash; 0에서 \u0026quot; \u0026laquo; RAND_MAX \u0026laquo; \u0026ldquo;까지의 랜덤 정수 10 개\u0026ndash;\u0026rdquo; \u0026laquo; endl; for(int i=0; i\u0026lt;10; i++) { int n = r.next(); // 0에서 RAND_MAX(32767) 사이의 랜덤한 정수 cout \u0026laquo; n \u0026laquo; \u0026rsquo; \u0026lsquo;; } cout \u0026laquo; endl \u0026laquo; endl \u0026laquo; \u0026ldquo;\u0026ndash; 2에서 \u0026quot; \u0026laquo; \u0026ldquo;4 까지의 랜덤 정수 10 개 \u0026ndash;\u0026rdquo; \u0026laquo; endl; for(int i=0; i\u0026lt;10; i++) { int n = r.nextInRange(2,4); // 2에서 4 사이의 랜덤한 정수 cout \u0026laquo; n \u0026laquo; \u0026rsquo; \u0026lsquo;; } cout \u0026laquo; endl; } 설명 :\na~b 사이의 랜덤한 정수를 return 해주기 위해 rand() % (b-a+1) + a; 라는 식을 사용했습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 3장 7번 (2) 2020.03.03 명품 C++ programming 실습 문제 3장 6번 (2) 2020.03.03 명품 C++ programming 실습 문제 3장 4번 (8) 2020.03.03 명품 C++ programming 실습 문제 3장 3번 (3) 2020.03.02 명품 C++ programming 실습 문제 3장 2번 (2) 2020.03.02 ","permalink":"https://blog.sobamemil.com/posts/047-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-3%EC%9E%A5-5%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e랜덤 수를 발생시키는 Random 클래스를 만들자. Random 클래스를 이용하여 랜덤 한 정수를 10개 출력하는 사례는 다음과 같다.\u003c/p\u003e\n\u003cp\u003eRandom 클래스가 생성자, next(), nextInRange()의 3개의 멤버 함수를 가지도록 작성하고 main() 함수와 합쳐 하나의 cpp 파일에 구현하라.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14\u003c/td\u003e\n          \u003ctd\u003eint main() {  Random r;  cout \u0026laquo; \u0026ldquo;\u0026ndash; 0에서 \u0026quot; \u0026laquo; RAND_MAX \u0026laquo; \u0026ldquo;까지의 랜덤 정수 10 개\u0026ndash;\u0026rdquo; \u0026laquo; endl;  for(int i=0; i\u0026lt;10; i++) {  int n = r.next(); // 0에서 RAND_MAX(32767) 사이의 랜덤한 정수  cout \u0026laquo; n \u0026laquo; \u0026rsquo; \u0026lsquo;;  }  cout \u0026laquo; endl \u0026laquo; endl \u0026laquo; \u0026ldquo;\u0026ndash; 2에서 \u0026quot; \u0026laquo; \u0026ldquo;4 까지의 랜덤 정수 10 개 \u0026ndash;\u0026rdquo; \u0026laquo; endl;  for(int i=0; i\u0026lt;10; i++) {  int n = r.nextInRange(2,4); // 2에서 4 사이의 랜덤한 정수  cout \u0026laquo; n \u0026laquo; \u0026rsquo; \u0026lsquo;;  }  cout \u0026laquo; endl;  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 3장 5번"},{"content":"문제 :\nCoffeeMachine 클래스를 만들어보자. main() 함수와 실행 결과가 다음과 같도록 CoffeeMachine 클래스를 작성하라.\n에스프레소 한 잔에는 커피와 물이 각각 1씩 소비되고, 아메리카노의 경우 커피는 1, 물은 2가 소비되고, 설탕 커피는 커피 1, 물 2, 설탕 1이 소비된다.\nCoffeeMachine 클래스에는 어떤 멤버 변수와 어떤 멤버 함수가 필요한지 잘 판단하여 작성하라.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include using namespace std; int main() { CoffeeMachine java(5, 10, 3); // 커피량:5, 물량:10, 설탕:6 으로 초기화 java.drinkEspresso(); // 커피 1, 물 1 소비 java.show(); // 현재 커피 머신의 상태 출력 java.drinkAmericano(); // 커피 1, 물 2 소비 java.show(); // 현재 커피 머신의 상태 출력 java.drinkSugarCoffee(); // 커피 1, 물 2, 설탕 1 소비 java.show(); // 현재 커피 머신의 상태 출력 java.fill(); // 커피 10, 물 10, 설탕 10 으로 채우기 java.show(); // 현재 커피 머신의 상태 출력 실행 결과 :\n목적 및 힌트 :\n실세계의 객체를 클래스로 작성\n코드 :\n1 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 using namespace std; class CoffeeMachine{ private: int coff, wat, sug; public: CoffeeMachine(int _coff, int _wat, int _sug); void drinkEspresso(); void drinkAmericano(); void drinkSugarCoffee(); void fill(); void show(); }; CoffeeMachine::CoffeeMachine(int _coff, int _wat, int _sug){ coff = _coff; wat = _wat; sug = _sug; } void CoffeeMachine::drinkEspresso(){ coff\u0026ndash;; wat\u0026ndash;; } void CoffeeMachine::drinkAmericano() { coff\u0026ndash;; wat\u0026ndash;; wat\u0026ndash;; } void CoffeeMachine::drinkSugarCoffee() { coff\u0026ndash;; wat\u0026ndash;; wat\u0026ndash;; sug\u0026ndash;; } void CoffeeMachine::fill(){ coff = 10; wat = 10; sug = 10; } void CoffeeMachine::show(){ cout \u0026laquo; \u0026ldquo;커피 머신 상태, 커피:\u0026rdquo; \u0026laquo; coff \u0026laquo; \u0026ldquo;\\t물:\u0026rdquo; \u0026laquo; wat \u0026laquo; \u0026ldquo;\\t설탕:\u0026rdquo; \u0026laquo; sug \u0026laquo; endl; } int main() { CoffeeMachine java(5, 10, 3); // 커피량:5, 물량:10, 설탕:6 으로 초기화 java.drinkEspresso(); // 커피 1, 물 1 소비 java.show(); // 현재 커피 머신의 상태 출력 java.drinkAmericano(); // 커피 1, 물 2 소비 java.show(); // 현재 커피 머신의 상태 출력 java.drinkSugarCoffee(); // 커피 1, 물 2, 설탕 1 소비 java.show(); // 현재 커피 머신의 상태 출력 java.fill(); // 커피 10, 물 10, 설탕 10 으로 채우기 java.show(); // 현재 커피 머신의 상태 출력 } 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 3장 6번 (2) 2020.03.03 명품 C++ programming 실습 문제 3장 5번 (4) 2020.03.03 명품 C++ programming 실습 문제 3장 3번 (3) 2020.03.02 명품 C++ programming 실습 문제 3장 2번 (2) 2020.03.02 명품 C++ programming 실습 문제 3장 1번 (1) 2020.03.02 ","permalink":"https://blog.sobamemil.com/posts/046-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-3%EC%9E%A5-4%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eCoffeeMachine 클래스를 만들어보자. main() 함수와 실행 결과가 다음과 같도록 CoffeeMachine 클래스를 작성하라.\u003c/p\u003e\n\u003cp\u003e에스프레소 한 잔에는 커피와 물이 각각 1씩 소비되고, 아메리카노의 경우 커피는 1, 물은 2가 소비되고, 설탕 커피는 커피 1, 물 2, 설탕 1이 소비된다.\u003c/p\u003e\n\u003cp\u003eCoffeeMachine 클래스에는 어떤 멤버 변수와 어떤 멤버 함수가 필요한지 잘 판단하여 작성하라.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14\u003c/td\u003e\n          \u003ctd\u003e#include \u003ciostream\u003e  using namespace std;    int main() {  CoffeeMachine java(5, 10, 3); // 커피량:5, 물량:10, 설탕:6 으로 초기화  java.drinkEspresso(); // 커피 1, 물 1 소비  java.show(); // 현재 커피 머신의 상태 출력  java.drinkAmericano(); // 커피 1, 물 2 소비  java.show(); // 현재 커피 머신의 상태 출력  java.drinkSugarCoffee(); // 커피 1, 물 2, 설탕 1 소비  java.show(); // 현재 커피 머신의 상태 출력  java.fill(); // 커피 10, 물 10, 설탕 10 으로 채우기  java.show(); // 현재 커피 머신의 상태 출력\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 3장 4번"},{"content":"문제 :\n은행에서 사용하는 프로그램을 작성하기 위해, 은행 계좌 하나를 표현하는 클래스 Account가 필요하다.\n계좌 정보는 계좌의 주인, 계좌 번호, 잔액을 나타내는 3 멤버 변수로 이루어진다.\nmain() 함수의 실행과 결과가 다음과 같도록 Account 클래스를 작성하라.\n1 2 3 4 5 6 7 8 9 10 #include using namespace std; int main() { Account a(\u0026ldquo;Kitae\u0026rdquo;, 1, 5000); // id 1번, 잔액 5000원, 이름이 Kitae인 계좌 성 a.deposit(50000); // 50000원 저금 cout \u0026laquo; a.getOwner() \u0026laquo; \u0026ldquo;의 잔액은 \u0026quot; \u0026laquo; a.inquiry() \u0026laquo; endl; int money = a.withdraw(20000); // 20000원 출금. withdraw()는 출금한 실제 금액 리턴 cout \u0026laquo; a.getOwner() \u0026laquo; \u0026ldquo;의 잔액은 \u0026quot; \u0026laquo; a.inquiry() \u0026laquo; endl; } 실행 결과 :\n목적 및 힌트 :\n실세계의 객체를 클래스로 작성\nAccount는 name, id, balance(잔액)의 3 멤버 변수와 생성자, getOwner(), deposit(), withdraw(), inquiry()의 3 멤버 함수를 가지는 클래스로 만들면 된다.\n코드 :\n1 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 #include #include using namespace std; class Account{ private: string name; int id; int money; public: Account(string s,int a, int b); void deposit(int a); string getOwner(); int withdraw(int a); int inquiry(); }; Account::Account(string s, int a, int b){ name = s; id = a; money = b; } void Account::deposit(int a){ money += a; } string Account::getOwner(){ return name; } int Account::withdraw(int a){ money -= a; return a; } int Account::inquiry(){ return money; } int main(){ Account a(\u0026ldquo;Kitae\u0026rdquo;, 1, 5000); a.deposit(50000); cout \u0026laquo; a.getOwner() \u0026laquo; \u0026ldquo;의 잔액은 \u0026quot; \u0026laquo; a.inquiry() \u0026laquo; endl; int money = a.withdraw(20000); cout \u0026laquo; a.getOwner() \u0026laquo; \u0026ldquo;의 잔액은 \u0026quot; \u0026laquo; a.inquiry() \u0026laquo; endl; } 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 3장 5번 (4) 2020.03.03 명품 C++ programming 실습 문제 3장 4번 (8) 2020.03.03 명품 C++ programming 실습 문제 3장 2번 (2) 2020.03.02 명품 C++ programming 실습 문제 3장 1번 (1) 2020.03.02 명품 C++ programming 실습 문제 2장 16번 (3) 2020.02.28 ","permalink":"https://blog.sobamemil.com/posts/045-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-3%EC%9E%A5-3%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e은행에서 사용하는 프로그램을 작성하기 위해, 은행 계좌 하나를 표현하는 클래스 Account가 필요하다.\u003c/p\u003e\n\u003cp\u003e계좌 정보는 계좌의 주인, 계좌 번호, 잔액을 나타내는 3 멤버 변수로 이루어진다.\u003c/p\u003e\n\u003cp\u003emain() 함수의 실행과 결과가 다음과 같도록 Account 클래스를 작성하라.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10\u003c/td\u003e\n          \u003ctd\u003e#include \u003ciostream\u003e  using namespace std;    int main() {  Account a(\u0026ldquo;Kitae\u0026rdquo;, 1, 5000); // id 1번, 잔액 5000원, 이름이 Kitae인 계좌 성  a.deposit(50000); // 50000원 저금  cout \u0026laquo; a.getOwner() \u0026laquo; \u0026ldquo;의 잔액은 \u0026quot; \u0026laquo; a.inquiry() \u0026laquo; endl;  int money = a.withdraw(20000); // 20000원 출금. withdraw()는 출금한 실제 금액 리턴  cout \u0026laquo; a.getOwner() \u0026laquo; \u0026ldquo;의 잔액은 \u0026quot; \u0026laquo; a.inquiry() \u0026laquo; endl;  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 3장 3번"},{"content":"문제 :\n날짜를 다루는 Date 클래스를 작성하고자 한다. Date를 이용하는 main()과 실행 결과는 다음과 같다.\n클래스 Date를 작성하여 아래 프로그램에 추가하라.\n1 2 3 4 5 6 7 8 9 #include using namespace std; int main() { Date virth(2014, 3, 20); Date independenceDay(\u0026ldquo;1945/8/15\u0026rdquo;); independenceDay.show(); cout \u0026laquo; birth.getYear() \u0026laquo; \u0026lsquo;,\u0026rsquo; \u0026laquo; birth.getMonth() \u0026laquo; \u0026lsquo;,\u0026rsquo; \u0026laquo; birth.getDay() \u0026laquo; endl; } 실행 결과 :\n목적 및 힌트 :\n2개의 생성자와 여러 멤버를 가진 클래스 만들기\nstoi() 함수를 이용하면 string의 문자열을 숫자로 변환할 수 있습니다.\nex) string s = \u0026ldquo;1945\u0026rdquo;;\nint n = stoi(s); // n은 정수 1945\n코드 :\n1 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 #include #include using namespace std; class Date{ private: int Year, Month, Day; public: Date(int a, int b, int c); Date(string s); void show(); int getYear(); int getMonth(); int getDay(); }; Date::Date(int a, int b, int c){ Year = a; Month = b; Day = c; } Date::Date(string s){ Year = stoi(s.substr(0,4)); Month = stoi(s.substr(5,1)); Day = stoi(s.substr(7,2)); } void Date::show(){ cout \u0026laquo; Year \u0026laquo; \u0026ldquo;년\u0026rdquo; \u0026laquo; Month \u0026laquo; \u0026ldquo;월\u0026rdquo; \u0026laquo; Day \u0026laquo; \u0026ldquo;일\\n\u0026rdquo;; } int Date::getYear(){ return Year; } int Date::getMonth(){ return Month; } int Date::getDay(){ return Day; } int main(){ Date birth(2014, 3, 20); Date independenceDay(\u0026ldquo;1945/8/15\u0026rdquo;); independenceDay.show(); cout \u0026laquo; birth.getYear() \u0026laquo; \u0026lsquo;,\u0026rsquo; \u0026laquo; birth.getMonth() \u0026laquo; \u0026lsquo;,\u0026rsquo; \u0026laquo; birth.getDay() \u0026laquo; endl; return 0; } 설명 :\nstring 타입의 매개변수를 넘겨받은 생성자가 실행되면 string 헤더파일의 substr() 함수를 이용하여 각각 Year, Month, Day로 나누었다.\n그 후 다시 나누어진 string을 stoi() 함수를 이용하여 int 형식으로 바꾸어 저장 및 출력 해주었습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 3장 4번 (8) 2020.03.03 명품 C++ programming 실습 문제 3장 3번 (3) 2020.03.02 명품 C++ programming 실습 문제 3장 1번 (1) 2020.03.02 명품 C++ programming 실습 문제 2장 16번 (3) 2020.02.28 명품 C++ programming 실습 문제 2장 15번 (3) 2020.02.28 ","permalink":"https://blog.sobamemil.com/posts/044-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-3%EC%9E%A5-2%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e날짜를 다루는 Date 클래스를 작성하고자 한다. Date를 이용하는 main()과 실행 결과는 다음과 같다.\u003c/p\u003e\n\u003cp\u003e클래스 Date를 작성하여 아래 프로그램에 추가하라.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9\u003c/td\u003e\n          \u003ctd\u003e#include \u003ciostream\u003e  using namespace std;    int main() {  Date virth(2014, 3, 20);  Date independenceDay(\u0026ldquo;1945/8/15\u0026rdquo;);  independenceDay.show();  cout \u0026laquo; birth.getYear() \u0026laquo; \u0026lsquo;,\u0026rsquo; \u0026laquo; birth.getMonth() \u0026laquo; \u0026lsquo;,\u0026rsquo; \u0026laquo; birth.getDay() \u0026laquo; endl;  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/44/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e2개의 생성자와 여러 멤버를 가진 클래스 만들기\u003c/p\u003e","title":"명품 C++ programming 실습 문제 3장 2번"},{"content":"문제 :\n아래 main()의 실행 결과가 다음과 같도록 Tower 클래스를 작성하라.\n1 2 3 4 5 6 7 8 9 #include using namespace std; int main() { Tower myTower; // 1 미터 Tower seoulTower(100); // 100 미터 cout \u0026laquo; \u0026ldquo;높이는 \u0026quot; \u0026laquo; myTower.getHeight() \u0026laquo; \u0026ldquo;미터\u0026rdquo; \u0026laquo; endl; cout \u0026laquo; \u0026ldquo;높이는 \u0026quot; \u0026laquo; seoulTower.getHeight() \u0026laquo; \u0026ldquo;미터\u0026rdquo; \u0026laquo; endl; } 목적 및 힌트 :\n2개의 생성자와 여러 멤버를 가진 클래스 만들기\n실행 결과 :\n코드 :\n1 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 #include using namespace std; class Tower{ int height; public: Tower(); Tower(int h); int getHeight(); }; Tower::Tower(){ // 매개변수가 없는 생성자 height=1; } Tower::Tower(int h){ // 매개변수가 하나 있는 생성자 height=h; } int Tower::getHeight(){ return height; } int main() { Tower myTower; Tower seoulTower(100); cout \u0026laquo; \u0026ldquo;높이는 \u0026quot; \u0026laquo; myTower.getHeight() \u0026laquo; \u0026ldquo;미터\u0026rdquo; \u0026laquo; endl; cout \u0026laquo; \u0026ldquo;높이는 \u0026quot; \u0026laquo; seoulTower.getHeight() \u0026laquo; \u0026ldquo;미터\u0026rdquo; \u0026laquo; endl; } 설명 :\nC++에서는 생성자 중복(Constructor Overloading)이 가능한데, 이를 이용하여 매개 변수의 개수가 다른 생성자를 만드는 문제입니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 3장 3번 (3) 2020.03.02 명품 C++ programming 실습 문제 3장 2번 (2) 2020.03.02 명품 C++ programming 실습 문제 2장 16번 (3) 2020.02.28 명품 C++ programming 실습 문제 2장 15번 (3) 2020.02.28 명품 C++ programming 실습 문제 2장 14번 (3) 2020.02.28 ","permalink":"https://blog.sobamemil.com/posts/043-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-3%EC%9E%A5-1%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e아래 main()의 실행 결과가 다음과 같도록 Tower 클래스를 작성하라.\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/43/img_1.png\"\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9\u003c/td\u003e\n          \u003ctd\u003e#include \u003ciostream\u003e  using namespace std;    int main() {  Tower myTower; // 1 미터  Tower seoulTower(100); // 100 미터  cout \u0026laquo; \u0026ldquo;높이는 \u0026quot; \u0026laquo; myTower.getHeight() \u0026laquo; \u0026ldquo;미터\u0026rdquo; \u0026laquo; endl;  cout \u0026laquo; \u0026ldquo;높이는 \u0026quot; \u0026laquo; seoulTower.getHeight() \u0026laquo; \u0026ldquo;미터\u0026rdquo; \u0026laquo; endl;  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e2개의 생성자와 여러 멤버를 가진 클래스 만들기\u003c/p\u003e","title":"명품 C++ programming 실습 문제 3장 1번"},{"content":"문제 :\n영문 텍스트를 입력받아 알파벳 히스토그램을 그리는 프로그램을 작성하라. 대문자는 모두 소문자로 집계하며, 텍스트 입력의 끝은 \u0026lsquo;;\u0026rsquo; 문자로 한다.\n목적 및 힌트 :\n문자열 읽기, C++ 프로그램 종합 응용\n입력 파일 :\n입력할 텍스트 파일을 첨부하였습니다.\n[2-16.txt\n0.00MB](https://blog.kakaocdn.net/dna/EsAHK/btqChFfPBnw/AAAAAAAAAAAAAAAAAAAAAOhcwRebixdRiSrFB2r5c8Z4mBZDeCt4ibUUEp2n5aCw/2-16.txt?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8\u0026amp;expires=1788188399\u0026amp;allow_ip=\u0026amp;allow_referer=\u0026amp;signature=PEoHUr5ktP9MyFLvskuQj0jS1Q8%3D\u0026amp;attach=1\u0026amp;knm=tfile.txt)\n실행 결과 :\n코드 :\n1 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 #include #include using namespace std; int main() { int tot=0; // 총 알파벳 개수 int alpha[27]={0}; // 각각의 알파벳을 나타냄 char text[10000]; // text를 저장할 배열 cout \u0026laquo; \u0026ldquo;영문 텍스트를 입력하세요. 히스토그램을 그립니다.\\n텍스트의 끝은 ; 입니다. 10000개까지 가능합니다.\\n\u0026rdquo;; cin.getline(text,10000,\u0026rsquo;;\u0026rsquo;); // 최대 10,000개의 영문 텍스트를 \u0026lsquo;;\u0026lsquo;전까지 입력받는다 for (int i = 0; i\u0026lt;strlen(text); i++) { // text[0]부터 text의 끝까지 if (isalpha(text[i])) { // text[i]가 알파벳이면 참 if(text[i]\u0026lt;91) text[i] = tolower(text[i]); // text[i]가 대문자이면 소문자로 변경 tot++; alpha[text[i] - 97]++; // 각각의 알파벳이 몇개인지 카운트 } } cout \u0026laquo; \u0026ldquo;총 알파벳 수 \u0026quot; \u0026laquo; tot \u0026laquo; endl \u0026laquo; endl; for (int i = 0; i \u0026lt; 26; ++i) { // 알파벳의 소문자 총 개수는 26개 (a~z) cout \u0026laquo; (char)(i+\u0026lsquo;a\u0026rsquo;) \u0026laquo; \u0026ldquo;(\u0026rdquo; \u0026laquo; alpha[i] \u0026laquo; \u0026ldquo;)\u0026quot;; // a부터 z까지 출력 후 각 (알파벳의 개수) 출력 cout \u0026laquo; \u0026ldquo;\\t: \u0026ldquo;; // 포맷을 출력하기 위해 탭과 \u0026ldquo;:\u0026rdquo; 출력 for (int j = 1; j \u0026lt;= alpha[i]; j++) // 각 알파벳의 개수만큼 \u0026ldquo;*\u0026rdquo; 출력 cout \u0026laquo; \u0026ldquo;*\u0026rdquo;; cout \u0026laquo; endl; } } 설명 :\ncin.getline(buf, 10000, \u0026lsquo;;\u0026rsquo;); 을 이용하여 텍스트를 키보드로부터 읽으면 됩니다.\n문자를 소문자로 바꿀 때 tolower(char c) 함수를 이용하고, 알파벳인지 검사하기 위해 isalpha(char c) 함수를 이용하면 됩니다.\n또한 텍스트 입력을 쉽게 하려면, 입력할 텍스트를 첨부하였으니 ctrl-c로 복사하고, DOS 실행창에 마우스 오른쪽 버튼을 누르고 붙여 넣기 메뉴를 선택하거나 오른쪽 버튼만 눌러도 붙여 넣기가 됩니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 3장 2번 (2) 2020.03.02 명품 C++ programming 실습 문제 3장 1번 (1) 2020.03.02 명품 C++ programming 실습 문제 2장 15번 (3) 2020.02.28 명품 C++ programming 실습 문제 2장 14번 (3) 2020.02.28 명품 C++ programming 실습 문제 2장 13번 (1) 2020.02.28 ","permalink":"https://blog.sobamemil.com/posts/042-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-2%EC%9E%A5-16%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e영문 텍스트를 입력받아 알파벳 히스토그램을 그리는 프로그램을 작성하라. 대문자는 모두 소문자로 집계하며, 텍스트 입력의 끝은 \u0026lsquo;;\u0026rsquo; 문자로 한다.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e문자열 읽기, C++ 프로그램 종합 응용\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e입력 파일 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e입력할 텍스트 파일을 첨부하였습니다.\u003c/p\u003e\n\u003cp\u003e[2-16.txt\u003c/p\u003e\n\u003cp\u003e0.00MB](\u003ca href=\"https://blog.kakaocdn.net/dna/EsAHK/btqChFfPBnw/AAAAAAAAAAAAAAAAAAAAAOhcwRebixdRiSrFB2r5c8Z4mBZDeCt4ibUUEp2n5aCw/2-16.txt?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8\u0026amp;expires=1788188399\u0026amp;allow_ip=\u0026amp;allow_referer=\u0026amp;signature=PEoHUr5ktP9MyFLvskuQj0jS1Q8%3D\u0026amp;attach=1\u0026amp;knm=tfile.txt\"\u003ehttps://blog.kakaocdn.net/dna/EsAHK/btqChFfPBnw/AAAAAAAAAAAAAAAAAAAAAOhcwRebixdRiSrFB2r5c8Z4mBZDeCt4ibUUEp2n5aCw/2-16.txt?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8\u0026amp;expires=1788188399\u0026amp;allow_ip=\u0026amp;allow_referer=\u0026amp;signature=PEoHUr5ktP9MyFLvskuQj0jS1Q8%3D\u0026amp;attach=1\u0026amp;knm=tfile.txt\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/42/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e코드 :\u003c/strong\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  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\u003c/td\u003e\n          \u003ctd\u003e#include\u003ciostream\u003e  #include\u003ccstring\u003e  using namespace std;    int main() {  int tot=0; // 총 알파벳 개수  int alpha[27]={0}; // 각각의 알파벳을 나타냄  char text[10000]; // text를 저장할 배열    cout \u0026laquo; \u0026ldquo;영문 텍스트를 입력하세요. 히스토그램을 그립니다.\\n텍스트의 끝은 ; 입니다. 10000개까지 가능합니다.\\n\u0026rdquo;;  cin.getline(text,10000,\u0026rsquo;;\u0026rsquo;); // 최대 10,000개의 영문 텍스트를 \u0026lsquo;;\u0026lsquo;전까지 입력받는다    for (int i = 0; i\u0026lt;strlen(text); i++) { // text[0]부터 text의 끝까지  if (isalpha(text[i])) { // text[i]가 알파벳이면 참  if(text[i]\u0026lt;91) text[i] = tolower(text[i]); // text[i]가 대문자이면 소문자로 변경  tot++;  alpha[text[i] - 97]++; // 각각의 알파벳이 몇개인지 카운트  }  }    cout \u0026laquo; \u0026ldquo;총 알파벳 수 \u0026quot; \u0026laquo; tot \u0026laquo; endl \u0026laquo; endl;  for (int i = 0; i \u0026lt; 26; ++i) { // 알파벳의 소문자 총 개수는 26개 (a~z)  cout \u0026laquo; (char)(i+\u0026lsquo;a\u0026rsquo;) \u0026laquo; \u0026ldquo;(\u0026rdquo; \u0026laquo; alpha[i] \u0026laquo; \u0026ldquo;)\u0026quot;; // a부터 z까지 출력 후 각 (알파벳의 개수) 출력  cout \u0026laquo; \u0026ldquo;\\t:  \u0026ldquo;; // 포맷을 출력하기 위해 탭과 \u0026ldquo;:\u0026rdquo; 출력  for (int j = 1; j \u0026lt;= alpha[i]; j++) // 각 알파벳의 개수만큼 \u0026ldquo;*\u0026rdquo; 출력  cout \u0026laquo; \u0026ldquo;*\u0026rdquo;;  cout \u0026laquo; endl;  }  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e설명 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 2장 16번"},{"content":"문제 :\n덧셈(+), 뺄셈(-), 곱셈(*), 나눗셈(/), 나머지(%)의 정수 5척 연산을 할 수 있는 프로그램을 작성하라. 식은 다음과 같은 형식으로 입력된다. 정수와 연산자는 하나의 빈칸으로 분리된다.\n목적 및 힌트 :\n공백을 포함하는 문자열 읽기, C++ 프로그램 종합 응용\n한 줄을 문자열로 읽고, 공백 문자를 찾아 연산자와 두 개의 피연산자를 구분한 후, 계산하면 됩니다.\n문자열을 정수로 바꿀 때 atoi() 함수를 이용하면 됩니다.\n예를 들면 atoi(\u0026ldquo;34\u0026rdquo;) = 34 입니다.\n실행 결과 :\n코드 :\n1 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 #include #include #include using namespace std; int main(){ char sic[100]; char *symbol; int front,rear; while(true){ cout \u0026laquo; \u0026ldquo;? \u0026ldquo;; cin.getline(sic,100); front = atoi(strtok(sic, \u0026quot; \u0026ldquo;)); symbol = strtok(NULL, \u0026quot; \u0026ldquo;); rear = atoi(strtok(NULL, \u0026quot; \u0026ldquo;)); if(*symbol == \u0026lsquo;+\u0026rsquo;){ cout \u0026laquo; front \u0026laquo; \u0026quot; + \u0026quot; \u0026laquo; rear \u0026laquo; \u0026quot; = \u0026quot; \u0026laquo; front+rear \u0026laquo; endl; } else if(*symbol == \u0026lsquo;-\u0026rsquo;){ cout \u0026laquo; front \u0026laquo; \u0026quot; - \u0026quot; \u0026laquo; rear \u0026laquo; \u0026quot; = \u0026quot; \u0026laquo; front-rear \u0026laquo; endl; } else if(*symbol == \u0026lsquo;*\u0026rsquo;){ cout \u0026laquo; front \u0026laquo; \u0026quot; * \u0026quot; \u0026laquo; rear \u0026laquo; \u0026quot; = \u0026quot; \u0026laquo; front*rear \u0026laquo; endl; } else if(*symbol == \u0026lsquo;/\u0026rsquo;){ cout \u0026laquo; front \u0026laquo; \u0026quot; / \u0026quot; \u0026laquo; rear \u0026laquo; \u0026quot; = \u0026quot; \u0026laquo; front/rear \u0026laquo; endl; } else if(*symbol == \u0026lsquo;%\u0026rsquo;){ cout \u0026laquo; front \u0026laquo; \u0026quot; % \u0026quot; \u0026laquo; rear \u0026laquo; \u0026quot; = \u0026quot; \u0026laquo; front%rear \u0026laquo; endl; } } return 0; } 설명 :\natoi() 함수는 stdlib.h 또는 cstdlib 헤더 파일에 정의되어 있습니다.\nstrtok() 함수를 이용해 구분자를 공백으로 하여 공백을 기준으로 입력받은 문자열을 나누어 각각 front, symbol, rear에 넣어 사용했습니다.\nstrtok() 함수 또한 cstring 헤더 파일에 정의되어 있습니다.\nchar *strtok(char *_String, char const *_Delimiter);\nstrtok() 함수는 자른 문자열을 반환, 더 이상 자를 문자열이 없으면 NULL을 반환하기 때문에 두번째 token을 나눌 때 부터는 char *_String에 자를 문자열이 아닌 NULL을 넣어 주어야 합니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 3장 1번 (1) 2020.03.02 명품 C++ programming 실습 문제 2장 16번 (3) 2020.02.28 명품 C++ programming 실습 문제 2장 14번 (3) 2020.02.28 명품 C++ programming 실습 문제 2장 13번 (1) 2020.02.28 명품 C++ programming 실습 문제 2장 12번 (1) 2020.02.28 ","permalink":"https://blog.sobamemil.com/posts/041-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-2%EC%9E%A5-15%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e덧셈(+), 뺄셈(-), 곱셈(*), 나눗셈(/), 나머지(%)의 정수 5척 연산을 할 수 있는 프로그램을 작성하라. 식은 다음과 같은 형식으로 입력된다. 정수와 연산자는 하나의 빈칸으로 분리된다.\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/41/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e공백을 포함하는 문자열 읽기, C++ 프로그램 종합 응용\u003c/p\u003e\n\u003cp\u003e한 줄을 문자열로 읽고, 공백 문자를 찾아 연산자와 두 개의 피연산자를 구분한 후, 계산하면 됩니다.\u003c/p\u003e\n\u003cp\u003e문자열을 정수로 바꿀 때 atoi() 함수를 이용하면 됩니다.\u003c/p\u003e\n\u003cp\u003e예를 들면 atoi(\u0026ldquo;34\u0026rdquo;) = 34 입니다.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 2장 15번"},{"content":"문제 :\n커피를 주문하는 간단한 C++ 프로그램을 작성해보자. 커피 종류는 \u0026ldquo;에스프레소\u0026rdquo;, \u0026ldquo;아메리카노\u0026rdquo;, \u0026ldquo;카푸치노\u0026quot;의 3가지이며 가격은 각각 2000원, 2300원, 2500원이다. 하루에 20000원 이상 벌게 되면 카페를 닫는다. 실행 결과와 같이 작동하는 프로그램을 작성하라.\n목적 및 힌트 :\nC++ 프로그램 구성. cin, strcmp() 활용 종합 연습\nchar coffee[100]; int num; cin \u0026raquo; coffee \u0026raquo; num; 으로 커피 이름과 잔 수를 입력받으면 됩니다.\n또한 커피는 if(strcmp(coffee, \u0026ldquo;에스프레소\u0026rdquo;) == 0 )과 같이 비교하면 됩니다.\n실행 결과 :\n코드:\n1 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 #include #include using namespace std; int main() { int num; int tot=0; char coffee[100]; cout \u0026laquo; \u0026ldquo;에스프레소 2000원, 아메리카노 2300원, 카푸치노 2500원입니다.\\n\u0026rdquo;; while(true) { cout \u0026laquo; \u0026ldquo;주문\u0026raquo; \u0026ldquo;; cin \u0026raquo; coffee \u0026raquo; num; if(strcmp(coffee,\u0026ldquo;에스프레소\u0026rdquo;)==0) { cout \u0026laquo; 2000*num \u0026laquo; \u0026ldquo;원입니다. 맛있게 드세요\\n\u0026rdquo;; tot+=2000*num; } else if(strcmp(coffee,\u0026ldquo;아메리카노\u0026rdquo;)==0) { cout \u0026laquo; 2300*num \u0026laquo; \u0026ldquo;원입니다. 맛있게 드세요\\n\u0026rdquo;; tot+=2300*num; } else if(strcmp(coffee,\u0026ldquo;카푸치노\u0026rdquo;)==0) { cout \u0026laquo; 2500*num \u0026laquo; \u0026ldquo;원입니다. 맛있게 드세요\\n\u0026rdquo;; tot+=2500*num; } if(tot\u0026gt;20000) { cout \u0026laquo; \u0026ldquo;오늘 \u0026quot; \u0026laquo; tot \u0026laquo; \u0026ldquo;원을 판매하여 카페를 닫습니다. 내일 봐요~~~\u0026rdquo;; break; } } return 0; } 설명 :\ncin 연산자를 이용해 커피 종류와 잔 수를 한번에 입력받고 strcmp() 함수를 이용해 비교하여 각각 다른 코드를 수행하는 프로그램 입니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 2장 16번 (3) 2020.02.28 명품 C++ programming 실습 문제 2장 15번 (3) 2020.02.28 명품 C++ programming 실습 문제 2장 13번 (1) 2020.02.28 명품 C++ programming 실습 문제 2장 12번 (1) 2020.02.28 명품 C++ programming 실습 문제 2장 11번 (1) 2020.02.28 ","permalink":"https://blog.sobamemil.com/posts/040-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-2%EC%9E%A5-14%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e커피를 주문하는 간단한 C++ 프로그램을 작성해보자. 커피 종류는 \u0026ldquo;에스프레소\u0026rdquo;, \u0026ldquo;아메리카노\u0026rdquo;, \u0026ldquo;카푸치노\u0026quot;의 3가지이며 가격은 각각 2000원, 2300원, 2500원이다. 하루에 20000원 이상 벌게 되면 카페를 닫는다. 실행 결과와 같이 작동하는 프로그램을 작성하라.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eC++ 프로그램 구성. cin, strcmp() 활용 종합 연습\u003c/p\u003e\n\u003cp\u003echar coffee[100]; int num; cin \u0026raquo; coffee \u0026raquo; num; 으로 커피 이름과 잔 수를 입력받으면 됩니다.\u003c/p\u003e\n\u003cp\u003e또한 커피는 if(strcmp(coffee, \u0026ldquo;에스프레소\u0026rdquo;) == 0 )과 같이 비교하면 됩니다.\u003c/p\u003e","title":"명품 C++ programming 실습 문제 2장 14번"},{"content":"문제 :\n중식당의 주문 과정을 C++ 프로그램으로 작성해보자. 다음 실행 결과와 같이 메뉴와 사람 수를 입력받고 이를 출력하면 된다. 잘못된 입력을 가려내는 부분도 코드에 추가하라.\n목적 및 힌트 :\nC++ 프로그램으로 구성, 키 입력 등 종합 연습\n실행 결과 :\n코드 :\n1 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 #include using namespace std; int main() { int num,tot; cout \u0026laquo; \u0026ldquo;***** 승리장에 오신 것을 환영합니다. ***** \\n\u0026rdquo;; while(true){ cout \u0026laquo; \u0026ldquo;짬뽕:1, 짜장:2, 군만두:3, 종료:4\u0026raquo; \u0026ldquo;; cin \u0026raquo; num; if(num == 4) { cout \u0026laquo; \u0026ldquo;오늘 영업은 끝났습니다.\u0026rdquo;; break; } if(num \u0026gt; 4) { cout \u0026laquo; \u0026ldquo;다시 주문하세요!!\\n\u0026rdquo;; continue; } cout \u0026laquo; \u0026ldquo;몇인분?\u0026rdquo;; cin \u0026raquo; tot; if(num==1) cout \u0026laquo; \u0026ldquo;짬뽕 \u0026quot; \u0026laquo; tot \u0026laquo; \u0026ldquo;인분 나왔습니다\\n\u0026rdquo;; else if(num==2) cout \u0026laquo; \u0026ldquo;짜장 \u0026quot; \u0026laquo; tot \u0026laquo; \u0026ldquo;인분 나왔습니다\\n\u0026rdquo;; else if(num==3) cout \u0026laquo; \u0026ldquo;군만두 \u0026quot; \u0026laquo; tot \u0026laquo; \u0026ldquo;인분 나왔습니다\\n\u0026rdquo;; } return 0; } 설명 :\nif문을 사용해 코드를 작성하였지만 switch 문을 사용해 작성할 수도 있습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 2장 15번 (3) 2020.02.28 명품 C++ programming 실습 문제 2장 14번 (3) 2020.02.28 명품 C++ programming 실습 문제 2장 12번 (1) 2020.02.28 명품 C++ programming 실습 문제 2장 11번 (1) 2020.02.28 명품 C++ programming 실습 문제 2장 10번 (1) 2020.02.28 ","permalink":"https://blog.sobamemil.com/posts/039-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-2%EC%9E%A5-13%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e중식당의 주문 과정을 C++ 프로그램으로 작성해보자. 다음 실행 결과와 같이 메뉴와 사람 수를 입력받고 이를 출력하면 된다. 잘못된 입력을 가려내는 부분도 코드에 추가하라.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eC++ 프로그램으로 구성, 키 입력 등 종합 연습\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/39/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e코드 :\u003c/strong\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  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\u003c/td\u003e\n          \u003ctd\u003e#include\u003ciostream\u003e  using namespace std;    int main() {  int num,tot;  cout \u0026laquo; \u0026ldquo;***** 승리장에 오신 것을 환영합니다. ***** \\n\u0026rdquo;;  while(true){  cout \u0026laquo; \u0026ldquo;짬뽕:1, 짜장:2, 군만두:3, 종료:4\u0026raquo;  \u0026ldquo;;  cin \u0026raquo; num;  if(num == 4) {  cout \u0026laquo; \u0026ldquo;오늘 영업은 끝났습니다.\u0026rdquo;;  break;  }  if(num \u0026gt; 4)  {  cout \u0026laquo; \u0026ldquo;다시 주문하세요!!\\n\u0026rdquo;;  continue;  }    cout \u0026laquo; \u0026ldquo;몇인분?\u0026rdquo;;  cin \u0026raquo; tot;    if(num==1)  cout \u0026laquo; \u0026ldquo;짬뽕 \u0026quot; \u0026laquo; tot \u0026laquo; \u0026ldquo;인분 나왔습니다\\n\u0026rdquo;;  else if(num==2)  cout \u0026laquo; \u0026ldquo;짜장 \u0026quot; \u0026laquo; tot \u0026laquo; \u0026ldquo;인분 나왔습니다\\n\u0026rdquo;;  else if(num==3)  cout \u0026laquo; \u0026ldquo;군만두 \u0026quot; \u0026laquo; tot \u0026laquo; \u0026ldquo;인분 나왔습니다\\n\u0026rdquo;;  }    return 0;  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e설명 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 2장 13번"},{"content":"문제 :\n다음 C 프로그램을 C++ 프로그램으로 수정하여 실행하라. 이 프로그램의 실행 결과는 실습 문제 11과 같다.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #include \u0026lt;stdio.h\u0026gt; int sum(); int main() { int n=0; printf(\u0026ldquo;끝 수를 입력하세요\u0026raquo;\u0026rdquo;); scanf(\u0026quot;%d\u0026quot;, \u0026amp;n); printf(\u0026ldquo;1에서 %d까지의 합은 %d 입니다.\\n\u0026rdquo;, n, sum(1,n)); return 0; } int sum(int a, int b) { int k, res=0; for(k=a; k\u0026lt;=b; k++){ res += k; } return res; } 2020/02/28 - [C++/명품 C++ programming] - 명품 C++ programming 실습 문제 2장 11번\n[명품 C++ programming 실습 문제 2장 11번\n문제 : 다음 C 프로그램을 C++ 프로그램으로 수정하여 실행하라. 1 2 3 4 5 6 7 8 9 10 11 12 #include int main() { int k, n=0; int sum=0; printf(\u0026ldquo;끝 수를 입력하세요\u0026raquo;\u0026rdquo;); scanf(\u0026quot;%d\u0026quot;, \u0026amp;n); for(k=..\nsobamemil.tistory.com](https://sobamemil.tistory.com/37)\n목적 및 힌트 :\nC++ 프로그래밍에 대한 전반적인 이해\n실행 결과 :\n코드 :\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #include using namespace std; int sum(int a, int b); int main() { int n=0; cout \u0026laquo; \u0026ldquo;끝 수를 입력하세요\u0026raquo;\u0026rdquo;; cin \u0026raquo; n; cout \u0026laquo; \u0026ldquo;1에서 \u0026quot; \u0026laquo; n \u0026laquo; \u0026ldquo;까지의 합은 \u0026quot; \u0026laquo; sum(1, n) \u0026laquo; \u0026quot; 입니다.\u0026rdquo; \u0026laquo; endl; } int sum(int a, int b) { int res=0; for(int k=a; k\u0026lt;=b; k++) res += k; return res; } 설명 :\nC++ 에서는 Function Overloading이 가능하기 때문에 함수의 원형 선언시에 매개 변수까지 모두 동일하게 선언하여야 합니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 2장 14번 (3) 2020.02.28 명품 C++ programming 실습 문제 2장 13번 (1) 2020.02.28 명품 C++ programming 실습 문제 2장 11번 (1) 2020.02.28 명품 C++ programming 실습 문제 2장 10번 (1) 2020.02.28 명품 C++ programming 실습 문제 2장 9번 (1) 2020.02.28 ","permalink":"https://blog.sobamemil.com/posts/038-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-2%EC%9E%A5-12%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e다음 C 프로그램을 C++ 프로그램으로 수정하여 실행하라. 이 프로그램의 실행 결과는 실습 문제 11과 같다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18\u003c/td\u003e\n          \u003ctd\u003e#include \u0026lt;stdio.h\u0026gt;  int sum();    int main() {  int n=0;  printf(\u0026ldquo;끝 수를 입력하세요\u0026raquo;\u0026rdquo;);  scanf(\u0026quot;%d\u0026quot;, \u0026amp;n);  printf(\u0026ldquo;1에서 %d까지의 합은 %d 입니다.\\n\u0026rdquo;, n, sum(1,n));  return 0;  }    int sum(int a, int b) {  int k, res=0;  for(k=a; k\u0026lt;=b; k++){  res += k;  }  return res;  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"https://sobamemil.tistory.com/37\"\u003e2020/02/28 - [C++/명품 C++ programming] - 명품 C++ programming 실습 문제 2장 11번\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 2장 12번"},{"content":"문제 :\n다음 C 프로그램을 C++ 프로그램으로 수정하여 실행하라.\n1 2 3 4 5 6 7 8 9 10 11 12 #include \u0026lt;stdio.h\u0026gt; int main() { int k, n=0; int sum=0; printf(\u0026ldquo;끝 수를 입력하세요\u0026raquo;\u0026rdquo;); scanf(\u0026quot;%d\u0026quot;, \u0026amp;n); for(k=1; k\u0026lt;=n; k++) { sum += k; } printf(\u0026ldquo;1에서 %d까지의 합은 %d 입니다.\\n\u0026rdquo;, n, sum); return 0; } 목적 및 힌트 :\nC++ 프로그래밍에 대한 전반적인 이해\n실행 결과 :\n코드 :\n1 2 3 4 5 6 7 8 9 10 11 12 #include using namespace std; int main() { int n=0; int sum=0; cout \u0026laquo; \u0026ldquo;끝 수를 입력하세요\u0026raquo;\u0026rdquo;; cin \u0026raquo; n; for(int k=1; k\u0026lt;=n; k++) sum += k; cout \u0026laquo; \u0026ldquo;1에서 \u0026quot; \u0026laquo; n \u0026laquo; \u0026ldquo;까지의 합은 \u0026quot; \u0026laquo; sum \u0026laquo; \u0026ldquo;입니다.\u0026rdquo; \u0026laquo; endl; } 설명 :\nC 로 쓰여진 프로그램을 C++ 프로그램으로 수정하여 실행하는 문제 입니다.\n위의 코드에서 for문 안에서 변수 k를 선언 하였습니다.\n이처럼 C++에서는 C와 다르게 변수의 선언 위치가 자유롭습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 2장 13번 (1) 2020.02.28 명품 C++ programming 실습 문제 2장 12번 (1) 2020.02.28 명품 C++ programming 실습 문제 2장 10번 (1) 2020.02.28 명품 C++ programming 실습 문제 2장 9번 (1) 2020.02.28 명품 C++ programming 실습 문제 2장 8번 (2) 2020.02.28 ","permalink":"https://blog.sobamemil.com/posts/037-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-2%EC%9E%A5-11%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e다음 C 프로그램을 C++ 프로그램으로 수정하여 실행하라.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12\u003c/td\u003e\n          \u003ctd\u003e#include \u0026lt;stdio.h\u0026gt;  int main() {  int k, n=0;  int sum=0;  printf(\u0026ldquo;끝 수를 입력하세요\u0026raquo;\u0026rdquo;);  scanf(\u0026quot;%d\u0026quot;, \u0026amp;n);  for(k=1; k\u0026lt;=n; k++) {  sum += k;  }  printf(\u0026ldquo;1에서 %d까지의 합은 %d 입니다.\\n\u0026rdquo;, n, sum);  return 0;  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eC++ 프로그래밍에 대한 전반적인 이해\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/37/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e코드 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 2장 11번"},{"content":"문제 :\n문자열을 하나 입력받고 문자열의 부분 문자열을 다음과 같이 출력하는 프로그램을 작성하라. 예시는 다음과 같다.\n목적 및 힌트 :\n문자열 읽기, 문자열 다루기\n실행 결과 :\n코드 :\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #include using namespace std; int main() { cout \u0026laquo; \u0026ldquo;문자열 입력\u0026raquo;\u0026rdquo;; char str[100]; cin.getline(str,100); for(int i=1;i\u0026lt;100;i++){ for(int j=0;j\u0026lt;i;j++) { cout \u0026laquo; str[j]; } if(str[i]==\u0026rsquo;\\0\u0026rsquo;) // 문자열의 끝이면 break break; cout \u0026laquo; endl; } return 0; } 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 2장 12번 (1) 2020.02.28 명품 C++ programming 실습 문제 2장 11번 (1) 2020.02.28 명품 C++ programming 실습 문제 2장 9번 (1) 2020.02.28 명품 C++ programming 실습 문제 2장 8번 (2) 2020.02.28 명품 C++ programming 실습 문제 2장 7번 (1) 2020.02.28 ","permalink":"https://blog.sobamemil.com/posts/036-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-2%EC%9E%A5-10%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e문자열을 하나 입력받고 문자열의 부분 문자열을 다음과 같이 출력하는 프로그램을 작성하라. 예시는 다음과 같다.\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/36/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e문자열 읽기, 문자열 다루기\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/36/img_2.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e코드 :\u003c/strong\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21\u003c/td\u003e\n          \u003ctd\u003e#include \u003ciostream\u003e  using namespace std;    int main() {    cout \u0026laquo; \u0026ldquo;문자열 입력\u0026raquo;\u0026rdquo;;  char str[100];    cin.getline(str,100);    for(int i=1;i\u0026lt;100;i++){  for(int j=0;j\u0026lt;i;j++) {  cout \u0026laquo; str[j];  }  if(str[i]==\u0026rsquo;\\0\u0026rsquo;) // 문자열의 끝이면 break  break;  cout \u0026laquo; endl;  }    return 0;  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e공유하기\u003c/p\u003e","title":"명품 C++ programming 실습 문제 2장 10번"},{"content":"문제 :\n이름, 주소, 나이를 입력받아 다시 출력하는 프로그램을 작성하라. 실행 예시는 다음과 같다.\n목적 및 힌트 :\n빈칸을 포함하는 문자열 읽기\n실행 결과 :\n코드 :\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #include using namespace std; int main() { char name[100]; char addr[100]; int age; cout \u0026laquo; \u0026ldquo;이름은?\u0026rdquo;; cin.getline(name,100); cout \u0026laquo; \u0026ldquo;주소는?\u0026rdquo;; cin.getline(addr,100); cout \u0026laquo; \u0026ldquo;나이는?\u0026rdquo;; cin \u0026raquo; age; cout \u0026laquo; name \u0026laquo; \u0026ldquo;, \u0026quot; \u0026laquo; addr \u0026laquo; \u0026ldquo;, \u0026quot; \u0026laquo; age \u0026laquo; \u0026ldquo;세\u0026rdquo;; return 0; } 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 2장 11번 (1) 2020.02.28 명품 C++ programming 실습 문제 2장 10번 (1) 2020.02.28 명품 C++ programming 실습 문제 2장 8번 (2) 2020.02.28 명품 C++ programming 실습 문제 2장 7번 (1) 2020.02.28 명품 C++ programming 실습 문제 2장 6번 (1) 2020.02.28 ","permalink":"https://blog.sobamemil.com/posts/035-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-2%EC%9E%A5-9%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e이름, 주소, 나이를 입력받아 다시 출력하는 프로그램을 작성하라. 실행 예시는 다음과 같다.\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/35/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e빈칸을 포함하는 문자열 읽기\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/35/img_2.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e코드 :\u003c/strong\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21\u003c/td\u003e\n          \u003ctd\u003e#include\u003ciostream\u003e  using namespace std;    int main() {  char name[100];  char addr[100];  int age;    cout \u0026laquo; \u0026ldquo;이름은?\u0026rdquo;;  cin.getline(name,100);    cout \u0026laquo; \u0026ldquo;주소는?\u0026rdquo;;  cin.getline(addr,100);    cout \u0026laquo; \u0026ldquo;나이는?\u0026rdquo;;  cin \u0026raquo; age;    cout \u0026laquo; name \u0026laquo; \u0026ldquo;, \u0026quot; \u0026laquo; addr \u0026laquo; \u0026ldquo;, \u0026quot; \u0026laquo; age \u0026laquo; \u0026ldquo;세\u0026rdquo;;    return 0;  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e공유하기\u003c/p\u003e","title":"명품 C++ programming 실습 문제 2장 9번"},{"content":"문제 :\n한 라인에 \u0026lsquo;;\u0026rsquo; 으로 5개의 이름을 구분하여 입력받아, 각 이름을 끊어내어 화면에 출력하고 가장 긴 이름을 판별하라.\n목적 및 힌트 :\ncin.getline()으로 문자열 읽기\n\u0026lsquo;;\u0026lsquo;까지 문자열을 읽고자 하면 다음 코드를 사용하고\n1 2 char name[100]; cin.getline(name, 100, \u0026lsquo;;\u0026rsquo;); 5개 읽어야 하니 5번 루프를 돈다.\n실행 결과 :\n코드 :\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #include #include using namespace std; int main() { int A=0; int i; char name[100]; char longName[100]; cout \u0026laquo; \u0026ldquo;5 명의 이름을 \u0026lsquo;;\u0026rsquo; 으로 구분하여 입력하세요 \\n\u0026raquo;\u0026rdquo;; for(i=1;i\u0026lt;6;i++){ cin.getline(name,100,\u0026rsquo;;\u0026rsquo;); cout \u0026laquo; i \u0026laquo; \u0026quot; : \u0026quot; \u0026laquo; name \u0026laquo; endl; if(A \u0026lt; strlen(name)) { A = strlen(name); strcpy(longName,name); } } cout \u0026laquo; \u0026ldquo;가장 긴 이름은 \u0026quot; \u0026laquo; longName; return 0; } 설명 :\ncin.getline() 을 이용하여 입력 받았는데 이때 \u0026lsquo;;\u0026lsquo;를 구분자로 사용하여 입력 받았습니다.\n\u0026lsquo;;\u0026lsquo;를 기준으로 구분하여 문자열을 입력받고 그 문자열의 길이를 변수 A와 비교하여 A보다 긴 name[] 문자열은 strcpy() 함수를 이용하여 배열 longName[]에 복사 하였습니다.\nstrlen() 함수를 이용하여 각각의 문자열의 길이를 구하였고, strcpy() 함수를 이용하여 문자열을 복사 하였습니다.\nstrlen() 함수와 strcpy() 함수는 c++에서 cstring 헤더파일에 정의되어 있습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 2장 10번 (1) 2020.02.28 명품 C++ programming 실습 문제 2장 9번 (1) 2020.02.28 명품 C++ programming 실습 문제 2장 7번 (1) 2020.02.28 명품 C++ programming 실습 문제 2장 6번 (1) 2020.02.28 명품 C++ programming 실습 문제 2장 5번 (1) 2020.02.28 ","permalink":"https://blog.sobamemil.com/posts/034-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-2%EC%9E%A5-8%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e한 라인에 \u0026lsquo;;\u0026rsquo; 으로 5개의 이름을 구분하여 입력받아, 각 이름을 끊어내어 화면에 출력하고 가장 긴 이름을 판별하라.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003ecin.getline()으로 문자열 읽기\u003c/p\u003e\n\u003cp\u003e\u0026lsquo;;\u0026lsquo;까지 문자열을 읽고자 하면 다음 코드를 사용하고\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2\u003c/td\u003e\n          \u003ctd\u003echar name[100];  cin.getline(name, 100, \u0026lsquo;;\u0026rsquo;);\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e5개 읽어야 하니 5번 루프를 돈다.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/34/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e코드 :\u003c/strong\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25\u003c/td\u003e\n          \u003ctd\u003e#include\u003ciostream\u003e  #include\u003ccstring\u003e  using namespace std;    int main() {    int A=0;  int i;  char name[100];  char longName[100];    cout \u0026laquo; \u0026ldquo;5 명의 이름을 \u0026lsquo;;\u0026rsquo; 으로 구분하여 입력하세요 \\n\u0026raquo;\u0026rdquo;;    for(i=1;i\u0026lt;6;i++){  cin.getline(name,100,\u0026rsquo;;\u0026rsquo;);  cout \u0026laquo; i \u0026laquo; \u0026quot; : \u0026quot; \u0026laquo; name \u0026laquo; endl;  if(A \u0026lt; strlen(name)) {  A = strlen(name);  strcpy(longName,name);  }  }  cout \u0026laquo; \u0026ldquo;가장 긴 이름은 \u0026quot; \u0026laquo; longName;    return 0;  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e설명 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 2장 8번"},{"content":"문제 :\n다음과 같이 \u0026ldquo;yes\u0026quot;가 입력될 때까지 종료하지 않는 프로그램을 작성하라. 사용자로부터의 입력은 cin.getline() 함수를 사용하라.\n목적 및 힌트 :\n공백을 포함하는 문자열 읽기\n실행 결과 :\n코드 :\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include #include using namespace std; int main() { char A[] = \u0026ldquo;yes\u0026rdquo;; // 배열 선언시 \u0026ldquo;yes\u0026quot;로 초기화 char B[100]; while(true){ cout \u0026laquo; \u0026ldquo;종료하고 싶으면 yes를 입력하세요\u0026raquo;\u0026rdquo;; cin.getline(B,100); if(strcmp(A,B) == 0) break; } cout \u0026laquo; \u0026ldquo;종료합니다\u0026hellip;\u0026rdquo;; return 0; } 설명 :\n2장 6번 문제와 거의 동일한 문제입니다.\ncin.getline() 함수를 이용해 입력시에 공백을 포함하는 문자열 입력도 가능하게 만들 수 있는지 테스트 하는 문제입니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 2장 9번 (1) 2020.02.28 명품 C++ programming 실습 문제 2장 8번 (2) 2020.02.28 명품 C++ programming 실습 문제 2장 6번 (1) 2020.02.28 명품 C++ programming 실습 문제 2장 5번 (1) 2020.02.28 명품 C++ programming 실습 문제 2장 4번 (1) 2020.02.28 ","permalink":"https://blog.sobamemil.com/posts/033-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-2%EC%9E%A5-7%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e다음과 같이 \u0026ldquo;yes\u0026quot;가 입력될 때까지 종료하지 않는 프로그램을 작성하라. 사용자로부터의 입력은 cin.getline() 함수를 사용하라.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e공백을 포함하는 문자열 읽기\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/33/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e코드 :\u003c/strong\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17\u003c/td\u003e\n          \u003ctd\u003e#include \u003ciostream\u003e  #include \u003ccstring\u003e  using namespace std;    int main() {  char A[] = \u0026ldquo;yes\u0026rdquo;; // 배열 선언시 \u0026ldquo;yes\u0026quot;로 초기화  char B[100];  while(true){  cout \u0026laquo; \u0026ldquo;종료하고 싶으면 yes를 입력하세요\u0026raquo;\u0026rdquo;;  cin.getline(B,100);  if(strcmp(A,B) == 0) break;  }    cout \u0026laquo; \u0026ldquo;종료합니다\u0026hellip;\u0026rdquo;;    return 0;  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e설명 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 2장 7번"},{"content":"문제 :\n문자열을 두 개 입력받고 두 개의 문자열이 같은지 검사하는 프로그램을 작성하라. 만일 같으면 \u0026ldquo;같습니다\u0026rdquo;, 아니면 \u0026ldquo;같지 않습니다\u0026quot;를 출력하라.\n목적 및 힌트 :\n공백 없이 입력된 문자열 읽기 (빈칸 없이 입력)\n실행 결과 :\n코드 :\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #include #include using namespace std; int main() { char pw1[100]; char pw2[100]; cout \u0026laquo; \u0026ldquo;새 암호를 입력하세요\u0026raquo;\u0026rdquo;; cin.getline(pw1,100); cout \u0026laquo; \u0026ldquo;새 암호를 다시 한 번 입력하세요\u0026raquo;\u0026rdquo;; cin.getline(pw2,100); if(strcmp(pw1,pw2)==0) cout \u0026laquo; \u0026ldquo;같습니다\u0026rdquo;; else cout \u0026laquo; \u0026ldquo;같지 않습니다\u0026rdquo;; return 0; } 설명 :\n각각의 배열의 원소들을 하나하나 비교하여 입력받은 두 문자열이 서로 같은지 판단할 수도 있지만 strcmp() 함수를 사용하여 비교, 판단 하였습니다.\nc++에서 strcmp() 함수는 cstring 헤더파일에 정의되어 있으므로 cstring 헤더파일을 include 해주었습니다.\nstrcmp() 함수는 두 문자열이 정확하게 일치한다면 0 을 리턴한다.\n일치하지 않을 경우, 일치 하지 않는 첫 번째 문자를 비교해 str1 이 str2 보다 크다면 0 보다 큰 값을 아니면 0 보다 작은 값을 리턴합니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 2장 8번 (2) 2020.02.28 명품 C++ programming 실습 문제 2장 7번 (1) 2020.02.28 명품 C++ programming 실습 문제 2장 5번 (1) 2020.02.28 명품 C++ programming 실습 문제 2장 4번 (1) 2020.02.28 명품 C++ programming 실습문제 2장 3번 (1) 2020.02.28 ","permalink":"https://blog.sobamemil.com/posts/032-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-2%EC%9E%A5-6%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e문자열을 두 개 입력받고 두 개의 문자열이 같은지 검사하는 프로그램을 작성하라. 만일 같으면 \u0026ldquo;같습니다\u0026rdquo;, 아니면 \u0026ldquo;같지 않습니다\u0026quot;를 출력하라.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e공백 없이 입력된 문자열 읽기 (빈칸 없이 입력)\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/32/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e코드 :\u003c/strong\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21\u003c/td\u003e\n          \u003ctd\u003e#include\u003ciostream\u003e  #include\u003ccstring\u003e  using namespace std;    int main() {  char pw1[100];  char pw2[100];    cout \u0026laquo; \u0026ldquo;새 암호를 입력하세요\u0026raquo;\u0026rdquo;;  cin.getline(pw1,100);    cout \u0026laquo; \u0026ldquo;새 암호를 다시 한 번 입력하세요\u0026raquo;\u0026rdquo;;  cin.getline(pw2,100);    if(strcmp(pw1,pw2)==0)  cout \u0026laquo; \u0026ldquo;같습니다\u0026rdquo;;  else  cout \u0026laquo; \u0026ldquo;같지 않습니다\u0026rdquo;;    return 0;  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e설명 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 2장 6번"},{"content":"문제 :\n키가 입력될 때까지 문자들을 읽고, 입력된 문자 \u0026lsquo;x\u0026rsquo;의 개수를 화면에 출력하라.\n목적 및 힌트 :\ncin.getline() 함수를 이용해 한 줄의 문자열 읽기\n실행 결과 :\n코드 :\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #include using namespace std; int main() { int i,x=0; char a[100]; cout \u0026laquo; \u0026ldquo;문자들을 입력하라(100개 미만).\\n\u0026rdquo;; cin.getline(a,100); // 문자열 단위로 읽음 for(i=0; i\u0026lt;100; i++){ if(a[i]==\u0026lsquo;x\u0026rsquo;) // a[i]가 \u0026lsquo;x\u0026rsquo;이면 카운트 x++; } cout \u0026laquo; \u0026ldquo;x의 개수는 \u0026quot; \u0026laquo; x; return 0; } 설명 :\ncin을 이용하여 입력 받으면 띄어쓰기를 포함한 문자열은 입력 받을 수 없다.\n따라서 이 문제는 cin.getline()을 이용하여 문자열 단위로 입력받아야 한다.\n배열 a[]의 원소를 전부 탐색하여 문자 \u0026lsquo;x\u0026rsquo;와 비교하여 카운트 하였다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 2장 7번 (1) 2020.02.28 명품 C++ programming 실습 문제 2장 6번 (1) 2020.02.28 명품 C++ programming 실습 문제 2장 4번 (1) 2020.02.28 명품 C++ programming 실습문제 2장 3번 (1) 2020.02.28 명품 C++ programming 실습 문제 2장 2번 (1) 2020.02.28 ","permalink":"https://blog.sobamemil.com/posts/031-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-2%EC%9E%A5-5%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cEnter\u003e 키가 입력될 때까지 문자들을 읽고, 입력된 문자 \u0026lsquo;x\u0026rsquo;의 개수를 화면에 출력하라.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003ecin.getline() 함수를 이용해 한 줄의 문자열 읽기\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/31/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e코드 :\u003c/strong\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19\u003c/td\u003e\n          \u003ctd\u003e#include \u003ciostream\u003e  using namespace std;    int main() {  int i,x=0;  char a[100];    cout \u0026laquo; \u0026ldquo;문자들을 입력하라(100개 미만).\\n\u0026rdquo;;    cin.getline(a,100); // 문자열 단위로 읽음    for(i=0; i\u0026lt;100; i++){  if(a[i]==\u0026lsquo;x\u0026rsquo;) // a[i]가 \u0026lsquo;x\u0026rsquo;이면 카운트  x++;  }  cout \u0026laquo; \u0026ldquo;x의 개수는 \u0026quot; \u0026laquo; x;    return 0;  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e설명 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 2장 5번"},{"content":"문제 :\n소수점을 가지는 5개의 실수를 입력 받아 제일 큰 수를 화면에 출력하라.\n목적 및 힌트 :\ncin 활용, 키보드로부터 실수 읽기\n실행 결과 :\n코드 :\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #include using namespace std; int main() { float a[5], big; int i; cout \u0026laquo; \u0026ldquo;5 개의 실수를 입력하라\u0026raquo;\u0026rdquo;; for(i=0;i\u0026lt;5;i++) // 5개의 실수 입력 받기 cin \u0026raquo; a[i]; big = a[0]; // a의 첫번째 원소를 big에 삽입 for(i=1;i\u0026lt;5;i++) if(big\u0026lt;a[i]) //a[i]가 big보다 크면 big에 삽입 big=a[i]; cout \u0026laquo; \u0026ldquo;제일 큰 수 = \u0026quot; \u0026laquo; big; return 0; } 설명 :\n제일 큰 수를 big 변수에 넣기위해 for문을 이용해 big과 실수 배열 a[]의 원소들을 하나하나 비교했습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 2장 6번 (1) 2020.02.28 명품 C++ programming 실습 문제 2장 5번 (1) 2020.02.28 명품 C++ programming 실습문제 2장 3번 (1) 2020.02.28 명품 C++ programming 실습 문제 2장 2번 (1) 2020.02.28 명품 C++ programming 실습 문제 2장 1번 (1) 2020.02.28 ","permalink":"https://blog.sobamemil.com/posts/030-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-2%EC%9E%A5-4%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e소수점을 가지는 5개의 실수를 입력 받아 제일 큰 수를 화면에 출력하라.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003ecin 활용, 키보드로부터 실수 읽기\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/30/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e코드 :\u003c/strong\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20\u003c/td\u003e\n          \u003ctd\u003e#include \u003ciostream\u003e  using namespace std;    int main() {  float a[5], big;  int i;    cout \u0026laquo; \u0026ldquo;5 개의 실수를 입력하라\u0026raquo;\u0026rdquo;;  for(i=0;i\u0026lt;5;i++)  // 5개의 실수 입력 받기  cin \u0026raquo; a[i];  big = a[0]; // a의 첫번째 원소를 big에 삽입    for(i=1;i\u0026lt;5;i++)  if(big\u0026lt;a[i]) //a[i]가 big보다 크면 big에 삽입  big=a[i];    cout \u0026laquo; \u0026ldquo;제일 큰 수 = \u0026quot; \u0026laquo; big;    return 0;  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e설명 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 2장 4번"},{"content":"문제 :\n키보드로부터 두 개의 정수를 읽어 큰 수를 화면에 출력하라.\n목적 및 힌트 :\ncin 활용, 키보드로부터 정수 읽기\n실행 결과 :\n코드 :\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include using namespace std; int main(){ int a,b; cout \u0026laquo; \u0026ldquo;두 수를 입력하라\u0026raquo;\u0026rdquo;; cin \u0026raquo; a \u0026raquo; b; // cin 연산자를 이용하여 두개의 정수 입력받기 cout \u0026laquo; \u0026ldquo;큰 수 = \u0026ldquo;; if(a\u0026lt;b) cout \u0026laquo; b; else cout \u0026laquo; a; return 0; } 설명 :\nc++에서 새로 등장한 cin 연산자를 사용할 수 있는지에 대한 문제입니다.\ncin \u0026raquo; a \u0026raquo; b 와 같이 한번에 여러개를 입력받을 수 있습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 2장 5번 (1) 2020.02.28 명품 C++ programming 실습 문제 2장 4번 (1) 2020.02.28 명품 C++ programming 실습 문제 2장 2번 (1) 2020.02.28 명품 C++ programming 실습 문제 2장 1번 (1) 2020.02.28 명품 C++ programming 실습 문제 9장 10번 (1) 2019.11.26 ","permalink":"https://blog.sobamemil.com/posts/029-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5%EB%AC%B8%EC%A0%9C-2%EC%9E%A5-3%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e키보드로부터 두 개의 정수를 읽어 큰 수를 화면에 출력하라.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003ecin 활용, 키보드로부터 정수 읽기\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/29/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e코드 :\u003c/strong\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14  15\u003c/td\u003e\n          \u003ctd\u003e#include\u003ciostream\u003e  using namespace std;    int main(){  int a,b;  cout \u0026laquo; \u0026ldquo;두 수를 입력하라\u0026raquo;\u0026rdquo;;  cin \u0026raquo; a \u0026raquo; b; // cin 연산자를 이용하여 두개의 정수 입력받기  cout \u0026laquo; \u0026ldquo;큰 수 = \u0026ldquo;;  if(a\u0026lt;b)  cout \u0026laquo; b;  else  cout \u0026laquo; a;    return 0;  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e설명 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습문제 2장 3번"},{"content":"문제 :\ncout과 \u0026laquo; 연산자를 이용하여 다음과 같이 구구단을 출력하는 프로그램을 작성하라.\n목적 및 힌트 :\ncout 활용, 화면 출력\n실행 결과 :\n코드 :\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include using namespace std; int main() { int i, j; for(i=1; i\u0026lt;10; i++){ for(j=1; j\u0026lt;10; j++) { cout \u0026laquo; j \u0026laquo; \u0026ldquo;x\u0026rdquo; \u0026laquo; i \u0026laquo; \u0026ldquo;=\u0026rdquo; \u0026laquo; j*i \u0026laquo; \u0026lsquo;\\t\u0026rsquo;; if(j==9) // 9단 출력 후 줄바꿈. cout \u0026laquo; endl; } } return 0; } 설명 :\n구구단을 전부 출력하는데 9단 출력 후 줄바꿈을 해주면 되는 문제입니다.\n이중 for문을 사용하여 출력하였습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 2장 4번 (1) 2020.02.28 명품 C++ programming 실습문제 2장 3번 (1) 2020.02.28 명품 C++ programming 실습 문제 2장 1번 (1) 2020.02.28 명품 C++ programming 실습 문제 9장 10번 (1) 2019.11.26 명품 C++ programming 실습 문제 9장 9번 (1) 2019.11.26 ","permalink":"https://blog.sobamemil.com/posts/028-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-2%EC%9E%A5-2%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003ecout과 \u0026laquo; 연산자를 이용하여 다음과 같이 구구단을 출력하는 프로그램을 작성하라.\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/28/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003ecout 활용, 화면 출력\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/28/img_2.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e코드 :\u003c/strong\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14  15\u003c/td\u003e\n          \u003ctd\u003e#include\u003ciostream\u003e  using namespace std;    int main() {  int i, j;    for(i=1; i\u0026lt;10; i++){  for(j=1; j\u0026lt;10; j++) {  cout \u0026laquo; j \u0026laquo; \u0026ldquo;x\u0026rdquo; \u0026laquo; i \u0026laquo; \u0026ldquo;=\u0026rdquo; \u0026laquo; j*i \u0026laquo; \u0026lsquo;\\t\u0026rsquo;;  if(j==9) // 9단 출력 후 줄바꿈.  cout \u0026laquo; endl;  }  }  return 0;  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e설명 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 2장 2번"},{"content":"문제 :\ncout과 \u0026laquo; 연산자를 이용하여, 1에서 100까지 정수를 다음과 같이 한 줄에 10개씩 출력하라. 각 정수는 탭으로 분리하여 출력하라.\n실행 결과 :\n목적 및 힌트 :\ncout 활용, 화면 출력\n코드 :\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include using namespace std; int main(){ int i; for(i=1;i\u0026lt;101;i++){ cout \u0026laquo; i \u0026laquo; \u0026ldquo;\\t\u0026rdquo;; if(i%10==0) // 10개마다 개행문자 출력 cout \u0026laquo; endl; } return 0; } 설명 :\n각 정수를 \u0026ldquo;\\t\u0026rdquo; 을 이용하여 출력하고, 10개 출력시마다 개행문자를 출력해주면 되는 문제입니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습문제 2장 3번 (1) 2020.02.28 명품 C++ programming 실습 문제 2장 2번 (1) 2020.02.28 명품 C++ programming 실습 문제 9장 10번 (1) 2019.11.26 명품 C++ programming 실습 문제 9장 9번 (1) 2019.11.26 명품 C++ programming 실습 문제 9장 8번 (1) 2019.11.21 ","permalink":"https://blog.sobamemil.com/posts/027-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-2%EC%9E%A5-1%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003ecout과 \u0026laquo; 연산자를 이용하여, 1에서 100까지 정수를 다음과 같이 한 줄에 10개씩 출력하라. 각 정수는 탭으로 분리하여 출력하라.\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/27/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/27/img_2.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003ecout 활용, 화면 출력\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e코드 :\u003c/strong\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14\u003c/td\u003e\n          \u003ctd\u003e#include\u003ciostream\u003e  using namespace std;    int main(){  int i;    for(i=1;i\u0026lt;101;i++){  cout \u0026laquo; i \u0026laquo; \u0026ldquo;\\t\u0026rdquo;;  if(i%10==0) // 10개마다 개행문자 출력  cout \u0026laquo; endl;  }    return 0;  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e설명 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 2장 1번"},{"content":"문제 :\n입력 파일 :\n[sample.txt\n0.00MB](https://blog.kakaocdn.net/dna/WEEud/btqA6oyqdRE/AAAAAAAAAAAAAAAAAAAAAF6o8u7LK5SB9AIdNSz_-IRJgLPtbZjLxGCM5EIoOvqI/sample.txt?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8\u0026amp;expires=1788188399\u0026amp;allow_ip=\u0026amp;allow_referer=\u0026amp;signature=AakSu1DOyqICwWZkF6%2F%2FvvgPYME%3D\u0026amp;attach=1\u0026amp;knm=tfile.txt) 실행 결과 :\n소스 코드 :\n1 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 #include \u0026lt;stdio.h\u0026gt; #include \u0026lt;string.h\u0026gt; #include \u0026lt;stdlib.h\u0026gt; void main() { FILE *fp; char buf[80]; int n = 0; if ((fp = fopen(\u0026ldquo;sample.s\u0026rdquo;, \u0026ldquo;r\u0026rdquo;)) == NULL) { fprintf(stderr, \u0026ldquo;file not found\u0026hellip;\\n\u0026rdquo;); exit(1); } while(fgets(buf, sizeof(buf), fp) != NULL) { n += get_token_num(buf); } fclose(fp); printf(\u0026ldquo;Number of token = %d\\n\u0026rdquo;, n); } int get_token_num(char *bp) { char *cp; int n = 0; for(cp = strtok(bp, \u0026quot; \\t\\n\u0026quot;); cp != NULL; ) { n++; cp = strtok(NULL, \u0026quot; \\t\\n\u0026quot;); } return(n); } 설명 :\nexit()를 사용하기 위해 stdlib.h 헤더파일을 include 시켜주었습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 시스템 \u0026amp; 임베디드\u0026rsquo; 카테고리의 다른 글 Cortex-M3 STM32F103R8T6 GPIO 레지스터 종류 (0) 2020.07.08 시스템 프로그래밍 프로젝트 #7 최종 (Assembler in C) (2) 2020.03.19 시스템 프로그래밍 프로젝트 #2 (1) 2020.01.12 시스템 프로그래밍 프로젝트 #3 (1) 2020.01.12 시스템 프로그래밍 프로젝트 #4 (1) 2019.12.19 ","permalink":"https://blog.sobamemil.com/posts/022-%EC%8B%9C%EC%8A%A4%ED%85%9C-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-1/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/22/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e입력 파일 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e[sample.txt\u003c/p\u003e\n\u003cp\u003e0.00MB](\u003ca href=\"https://blog.kakaocdn.net/dna/WEEud/btqA6oyqdRE/AAAAAAAAAAAAAAAAAAAAAF6o8u7LK5SB9AIdNSz_-IRJgLPtbZjLxGCM5EIoOvqI/sample.txt?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8\u0026amp;expires=1788188399\u0026amp;allow_ip=\u0026amp;allow_referer=\u0026amp;signature=AakSu1DOyqICwWZkF6%2F%2FvvgPYME%3D\u0026amp;attach=1\u0026amp;knm=tfile.txt\"\u003ehttps://blog.kakaocdn.net/dna/WEEud/btqA6oyqdRE/AAAAAAAAAAAAAAAAAAAAAF6o8u7LK5SB9AIdNSz_-IRJgLPtbZjLxGCM5EIoOvqI/sample.txt?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8\u0026amp;expires=1788188399\u0026amp;allow_ip=\u0026amp;allow_referer=\u0026amp;signature=AakSu1DOyqICwWZkF6%2F%2FvvgPYME%3D\u0026amp;attach=1\u0026amp;knm=tfile.txt\u003c/a\u003e)\n\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/22/img_2.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/22/img_3.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e소스 코드 :\u003c/strong\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  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\u003c/td\u003e\n          \u003ctd\u003e#include \u0026lt;stdio.h\u0026gt;  #include \u0026lt;string.h\u0026gt;  #include \u0026lt;stdlib.h\u0026gt;    void main() {  FILE   *fp;  char    buf[80];  int     n = 0;    if ((fp = fopen(\u0026ldquo;sample.s\u0026rdquo;, \u0026ldquo;r\u0026rdquo;)) == NULL) {  fprintf(stderr, \u0026ldquo;file not found\u0026hellip;\\n\u0026rdquo;);  exit(1);  }  while(fgets(buf, sizeof(buf), fp) != NULL) {  n += get_token_num(buf);  }  fclose(fp);  printf(\u0026ldquo;Number of token = %d\\n\u0026rdquo;, n);  }    int get_token_num(char *bp) {  char    *cp;  int    n = 0;    for(cp = strtok(bp, \u0026quot; \\t\\n\u0026quot;); cp != NULL;  ) {  n++;  cp = strtok(NULL, \u0026quot; \\t\\n\u0026quot;);  }  return(n);  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e설명 :\u003c/strong\u003e\u003c/p\u003e","title":"시스템 프로그래밍 프로젝트 #1"},{"content":"문제 :\n입력 파일 :\n[sample.txt\n0.00MB](https://blog.kakaocdn.net/dna/I5Kf9/btqA7q3zbiX/AAAAAAAAAAAAAAAAAAAAANrvSUHPXY9pb861NzszU1ZSjedb5bh_Z-XW6gY7gY7Q/sample.txt?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8\u0026amp;expires=1788188399\u0026amp;allow_ip=\u0026amp;allow_referer=\u0026amp;signature=Z3BB1PLUPoQ6gz717fxkZL1UeNg%3D\u0026amp;attach=1\u0026amp;knm=tfile.txt) 실행 결과 :\n소스 코드 :\n1 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 #include \u0026lt;stdio.h\u0026gt; #include \u0026lt;string.h\u0026gt; #include \u0026lt;stdlib.h\u0026gt; void get_token_num(char *bp, int *num, int *alpha, int *other) { char *cp; int i, count1, count2; for(cp = strtok(bp, \u0026quot; \\t\\n\u0026quot;); cp != NULL;){ if(\u0026lsquo;A\u0026rsquo; \u0026lt;= cp[0] \u0026amp;\u0026amp; \u0026lsquo;Z\u0026rsquo; \u0026gt;= cp[0]) count1 = -1; else if(\u0026lsquo;0\u0026rsquo; \u0026lt;= cp[0] \u0026amp;\u0026amp; \u0026lsquo;9\u0026rsquo; \u0026gt;= cp[0]) count1 = 0; else{ count1 = 1; count2 = 1; break; } int len = strlen(cp); for(i=0; i\u0026lt;len; i++){ if ( \u0026lsquo;A\u0026rsquo; \u0026lt;= cp[i] \u0026amp;\u0026amp; \u0026lsquo;Z\u0026rsquo; \u0026gt;= cp[i]) count2 = -1; else if ( \u0026lsquo;0\u0026rsquo; \u0026lt;= cp[i] \u0026amp;\u0026amp; \u0026lsquo;9\u0026rsquo; \u0026gt;= cp[i]) count2 = 0; else count2 = 1; if(count2 != count1){ count2 = 1; break; } } switch(count2) { case -1 : *alpha += 1; break; case 0 : *num += 1; break; case 1 : *other += 1; break; default : fprintf(stderr,\u0026ldquo;error\u0026hellip;\\n\u0026rdquo;); exit(2); } cp = strtok(NULL,\u0026quot; \\t\\n\u0026quot;); } } int main(){ FILE *fp; char buf[80]; int num = 0, alpha=0, other=0; if((fp = fopen(\u0026ldquo;sample.s\u0026rdquo;, \u0026ldquo;r\u0026rdquo;)) == NULL){ fprintf(stderr, \u0026ldquo;file not found\u0026hellip;\\n\u0026rdquo;); exit(1); } while(fgets(buf, sizeof(buf), fp) != NULL){ get_token_num(buf, \u0026amp;num, \u0026amp;alpha, \u0026amp;other); } fclose(fp); printf(\u0026ldquo;Number = %d\\n\u0026rdquo;, num); printf(\u0026ldquo;Alphabet = %d\\n\u0026rdquo;, alpha); printf(\u0026ldquo;Other = %d\\n\u0026rdquo;, other); return 0; } 설명 :\nToken을 잘라서 숫자 단어인지 알파벳 단어인지 기타 다른 단어인지만 판별 해주면 되는 프로그램이라 구현이 어렵지 않기 때문에 주석을 달지 않았습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 시스템 \u0026amp; 임베디드\u0026rsquo; 카테고리의 다른 글 시스템 프로그래밍 프로젝트 #7 최종 (Assembler in C) (2) 2020.03.19 시스템 프로그래밍 프로젝트 #1 (1) 2020.01.12 시스템 프로그래밍 프로젝트 #3 (1) 2020.01.12 시스템 프로그래밍 프로젝트 #4 (1) 2019.12.19 시스템 프로그래밍 프로젝트 #5 (1) 2019.11.23 ","permalink":"https://blog.sobamemil.com/posts/021-%EC%8B%9C%EC%8A%A4%ED%85%9C-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-2/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/21/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e입력 파일 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e[sample.txt\u003c/p\u003e\n\u003cp\u003e0.00MB](\u003ca href=\"https://blog.kakaocdn.net/dna/I5Kf9/btqA7q3zbiX/AAAAAAAAAAAAAAAAAAAAANrvSUHPXY9pb861NzszU1ZSjedb5bh_Z-XW6gY7gY7Q/sample.txt?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8\u0026amp;expires=1788188399\u0026amp;allow_ip=\u0026amp;allow_referer=\u0026amp;signature=Z3BB1PLUPoQ6gz717fxkZL1UeNg%3D\u0026amp;attach=1\u0026amp;knm=tfile.txt\"\u003ehttps://blog.kakaocdn.net/dna/I5Kf9/btqA7q3zbiX/AAAAAAAAAAAAAAAAAAAAANrvSUHPXY9pb861NzszU1ZSjedb5bh_Z-XW6gY7gY7Q/sample.txt?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8\u0026amp;expires=1788188399\u0026amp;allow_ip=\u0026amp;allow_referer=\u0026amp;signature=Z3BB1PLUPoQ6gz717fxkZL1UeNg%3D\u0026amp;attach=1\u0026amp;knm=tfile.txt\u003c/a\u003e)\n\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/21/img_2.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/21/img_3.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e소스 코드 :\u003c/strong\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  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\u003c/td\u003e\n          \u003ctd\u003e#include \u0026lt;stdio.h\u0026gt;  #include \u0026lt;string.h\u0026gt;  #include \u0026lt;stdlib.h\u0026gt;    void get_token_num(char *bp, int *num, int *alpha, int *other)  {  char *cp;  int i, count1, count2;    for(cp = strtok(bp, \u0026quot; \\t\\n\u0026quot;); cp != NULL;){  if(\u0026lsquo;A\u0026rsquo; \u0026lt;= cp[0] \u0026amp;\u0026amp; \u0026lsquo;Z\u0026rsquo; \u0026gt;= cp[0])  count1 = -1;  else if(\u0026lsquo;0\u0026rsquo; \u0026lt;= cp[0] \u0026amp;\u0026amp; \u0026lsquo;9\u0026rsquo; \u0026gt;= cp[0])  count1 = 0;  else{  count1 = 1;  count2 = 1;  break;  }    int len = strlen(cp);  for(i=0; i\u0026lt;len; i++){  if ( \u0026lsquo;A\u0026rsquo; \u0026lt;= cp[i] \u0026amp;\u0026amp; \u0026lsquo;Z\u0026rsquo; \u0026gt;= cp[i])  count2 = -1;  else if ( \u0026lsquo;0\u0026rsquo; \u0026lt;= cp[i] \u0026amp;\u0026amp; \u0026lsquo;9\u0026rsquo; \u0026gt;= cp[i])  count2 = 0;  else  count2 = 1;  if(count2 != count1){  count2 = 1;  break;  }  }  switch(count2) {  case -1 : *alpha += 1;  break;  case 0  : *num += 1;  break;  case 1  : *other += 1;  break;  default : fprintf(stderr,\u0026ldquo;error\u0026hellip;\\n\u0026rdquo;); exit(2);  }  cp = strtok(NULL,\u0026quot; \\t\\n\u0026quot;);  }  }    int main(){  FILE *fp;  char buf[80];  int num = 0, alpha=0, other=0;    if((fp = fopen(\u0026ldquo;sample.s\u0026rdquo;, \u0026ldquo;r\u0026rdquo;)) == NULL){  fprintf(stderr, \u0026ldquo;file not found\u0026hellip;\\n\u0026rdquo;); exit(1);  }  while(fgets(buf, sizeof(buf), fp) != NULL){  get_token_num(buf, \u0026amp;num, \u0026amp;alpha, \u0026amp;other);  }  fclose(fp);    printf(\u0026ldquo;Number = %d\\n\u0026rdquo;, num);  printf(\u0026ldquo;Alphabet = %d\\n\u0026rdquo;, alpha);  printf(\u0026ldquo;Other = %d\\n\u0026rdquo;, other);    return 0;  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e설명 :\u003c/strong\u003e\u003c/p\u003e","title":"시스템 프로그래밍 프로젝트 #2"},{"content":"문제 :\n입력 파일 :\n[sample.txt\n0.00MB](https://blog.kakaocdn.net/dna/45Fiq/btqA5PcbiZG/AAAAAAAAAAAAAAAAAAAAAKYSkI0QPrzP-9mNerqdA2M0Tul-f5_nfn5HKLp50AXV/sample.txt?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8\u0026amp;expires=1788188399\u0026amp;allow_ip=\u0026amp;allow_referer=\u0026amp;signature=zgVylyi4wQaArIqnlrxSbRC1hSk%3D\u0026amp;attach=1\u0026amp;knm=tfile.txt) 실행 결과 :\n소스 코드 :\n1 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 82 83 84 85 86 87 88 89 90 91 92 93 #include \u0026lt;stdio.h\u0026gt; #include \u0026lt;string.h\u0026gt; #include \u0026lt;stdlib.h\u0026gt; char sym[50][10], inst[50][10], op[50][10]; int symcnt, instcnt, opcnt= 0; void get_token_num(char *bp); void main() { FILE *fp; char buf[80]; int num = 0; int i; if ((fp = fopen(\u0026ldquo;sample.s\u0026rdquo;, \u0026ldquo;r\u0026rdquo;)) == NULL) { fprintf(stderr, \u0026ldquo;file not found\u0026hellip;\\n\u0026rdquo;); exit(1); } while(fgets(buf, sizeof(buf), fp) != NULL) { get_token_num(buf); } fclose(fp); printf(\u0026ldquo;심볼 10칸씩 출력 :\\n\\n\u0026rdquo;); for(i=0; i\u0026lt;symcnt; i++){ if(num\u0026lt;10){ printf(\u0026quot;%s\\t\u0026quot;, sym[i]); num++; } else if(num==10){ printf(\u0026quot;\\n\u0026quot;); num=0; i -= 1; } } num = 0; printf(\u0026quot;\\n명령어 10칸씩 출력 :\\n\\n\u0026quot;); for(i=0; i\u0026lt;instcnt; i++){ if(num\u0026lt;10){ printf(\u0026quot;%s\\t\u0026quot;, inst[i]); num++; } else if(num==10){ printf(\u0026quot;\\n\u0026quot;); num=0; i -= 1; } } printf(\u0026quot;\\n\\n피연산자 10칸씩 출력 :\\n\\n\u0026quot;); num = 0; for(i=0; i\u0026lt;opcnt; i++){ if(num\u0026lt;10){ printf(\u0026quot;%s\\t\u0026quot;, op[i]); num++; } else if(num==10){ printf(\u0026quot;\\n\u0026quot;); num=0; i -= 1; } } printf(\u0026quot;\\n\\n\u0026quot;); } void get_token_num(char *bp){ char *cp; char *test; int n = 0; char* result = strtok(bp,\u0026quot; \\t\\n\u0026quot;); while(result!=NULL) { while(1){ if(n\u0026lt;4){ switch (n){ case 0 : n++; break; case 1 : strcpy(sym[symcnt], result); symcnt++; n++; break; case 2 : strcpy(inst[instcnt], result); instcnt++; n++; break; case 3 : strcpy(op[opcnt], result); opcnt++; n++; break; } } else n=0; break; } result = strtok(NULL,\u0026quot;\\t\\n\u0026quot;); } } 설명 :\n이해하기가 그다지 어렵지 않고 단순히 Token을 잘라서 출력하면 되기 때문에 따로 주석을 달지는 않았습니다.\n질문이 있으시다면 댓글 달아주세요.\n비어있는 파트를 공백으로 출력하기 위해 입력 파일의 빈 칸의 첫번째에는 Space를 넣어서 구분했습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 시스템 \u0026amp; 임베디드\u0026rsquo; 카테고리의 다른 글 시스템 프로그래밍 프로젝트 #1 (1) 2020.01.12 시스템 프로그래밍 프로젝트 #2 (1) 2020.01.12 시스템 프로그래밍 프로젝트 #4 (1) 2019.12.19 시스템 프로그래밍 프로젝트 #5 (1) 2019.11.23 시스템 프로그래밍 프로젝트 #6 (1) 2019.11.21 ","permalink":"https://blog.sobamemil.com/posts/020-%EC%8B%9C%EC%8A%A4%ED%85%9C-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-3/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/20/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e입력 파일 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e[sample.txt\u003c/p\u003e\n\u003cp\u003e0.00MB](\u003ca href=\"https://blog.kakaocdn.net/dna/45Fiq/btqA5PcbiZG/AAAAAAAAAAAAAAAAAAAAAKYSkI0QPrzP-9mNerqdA2M0Tul-f5_nfn5HKLp50AXV/sample.txt?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8\u0026amp;expires=1788188399\u0026amp;allow_ip=\u0026amp;allow_referer=\u0026amp;signature=zgVylyi4wQaArIqnlrxSbRC1hSk%3D\u0026amp;attach=1\u0026amp;knm=tfile.txt\"\u003ehttps://blog.kakaocdn.net/dna/45Fiq/btqA5PcbiZG/AAAAAAAAAAAAAAAAAAAAAKYSkI0QPrzP-9mNerqdA2M0Tul-f5_nfn5HKLp50AXV/sample.txt?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8\u0026amp;expires=1788188399\u0026amp;allow_ip=\u0026amp;allow_referer=\u0026amp;signature=zgVylyi4wQaArIqnlrxSbRC1hSk%3D\u0026amp;attach=1\u0026amp;knm=tfile.txt\u003c/a\u003e)\n\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/20/img_2.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/20/img_3.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e소스 코드 :\u003c/strong\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  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  82  83  84  85  86  87  88  89  90  91  92  93\u003c/td\u003e\n          \u003ctd\u003e#include \u0026lt;stdio.h\u0026gt;  #include \u0026lt;string.h\u0026gt;  #include \u0026lt;stdlib.h\u0026gt;    char sym[50][10], inst[50][10], op[50][10];  int symcnt, instcnt, opcnt= 0;    void get_token_num(char *bp);    void main() {  FILE *fp;  char buf[80];  int num = 0;  int i;  if ((fp = fopen(\u0026ldquo;sample.s\u0026rdquo;, \u0026ldquo;r\u0026rdquo;)) == NULL) {  fprintf(stderr, \u0026ldquo;file not found\u0026hellip;\\n\u0026rdquo;); exit(1);  }  while(fgets(buf, sizeof(buf), fp) != NULL) {  get_token_num(buf);  }  fclose(fp);  printf(\u0026ldquo;심볼 10칸씩 출력 :\\n\\n\u0026rdquo;);  for(i=0; i\u0026lt;symcnt; i++){  if(num\u0026lt;10){  printf(\u0026quot;%s\\t\u0026quot;, sym[i]);  num++;  }  else if(num==10){  printf(\u0026quot;\\n\u0026quot;);  num=0;  i -= 1;  }  }  num = 0;  printf(\u0026quot;\\n명령어 10칸씩 출력 :\\n\\n\u0026quot;);  for(i=0; i\u0026lt;instcnt; i++){  if(num\u0026lt;10){  printf(\u0026quot;%s\\t\u0026quot;, inst[i]);  num++;  }  else if(num==10){  printf(\u0026quot;\\n\u0026quot;);  num=0;  i -= 1;  }  }  printf(\u0026quot;\\n\\n피연산자 10칸씩 출력 :\\n\\n\u0026quot;);  num = 0;  for(i=0; i\u0026lt;opcnt; i++){  if(num\u0026lt;10){  printf(\u0026quot;%s\\t\u0026quot;, op[i]);  num++;  }  else if(num==10){  printf(\u0026quot;\\n\u0026quot;);  num=0;  i -= 1;  }  }  printf(\u0026quot;\\n\\n\u0026quot;);  }    void get_token_num(char *bp){  char *cp;  char *test;  int n = 0;  char* result = strtok(bp,\u0026quot; \\t\\n\u0026quot;);  while(result!=NULL)    {  while(1){  if(n\u0026lt;4){  switch (n){  case 0 : n++;  break;  case 1 : strcpy(sym[symcnt], result);  symcnt++;  n++;  break;  case 2 : strcpy(inst[instcnt], result);  instcnt++;  n++;  break;  case 3 : strcpy(op[opcnt], result);  opcnt++;  n++;  break;  }  }  else n=0;  break;  }  result = strtok(NULL,\u0026quot;\\t\\n\u0026quot;);  }  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e설명 :\u003c/strong\u003e\u003c/p\u003e","title":"시스템 프로그래밍 프로젝트 #3"},{"content":"문제 :\n입력 파일 :\n[numb.txt\n0.00MB](https://blog.kakaocdn.net/dna/EqJyk/btqA57RastK/AAAAAAAAAAAAAAAAAAAAAMzaoxsjOizEuGCR5qF4Fzsa0iAquIjz6f_89H3gPle-/numb.txt?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8\u0026amp;expires=1788188399\u0026amp;allow_ip=\u0026amp;allow_referer=\u0026amp;signature=wyxmqU%2F2ZPAkscVFgGfrU1oKVrU%3D\u0026amp;attach=1\u0026amp;knm=tfile.txt) 실행 결과 :\n소스 코드 :\n1 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 82 83 84 85 86 87 88 89 90 91 92 93 94 95 #include\u0026lt;stdio.h\u0026gt; #include\u0026lt;string.h\u0026gt; #include\u0026lt;stdlib.h\u0026gt; #include\u0026lt;math.h\u0026gt; void get_token_num(char *bp); void hextodec(char *test, int len); // hex to decimal function void atohex(char *ascii, int len); // ascii to hex function int sum = 0; int cnt = 0; int main() { FILE *fp = NULL; char buf[80]; if((fp = fopen(\u0026ldquo;numb.s\u0026rdquo;, \u0026ldquo;r\u0026rdquo;))==NULL) { printf(\u0026ldquo;file not found\u0026hellip;\\n\u0026rdquo;); exit(1); } while(fgets(buf, sizeof(buf), fp) != NULL) { get_token_num(buf); } fclose(fp); printf(\u0026quot;\\nsum = %d\\n\u0026quot;, sum); return 0; } void get_token_num(char *bp){ int i,len; char test[10]; char* result = strtok(bp,\u0026quot; \\t\\n\u0026quot;); // 문자열 자르기 while(result!=NULL) { // 자른 token이 NULL 일떄까지 loop if(result[0] == \u0026lsquo;X\u0026rsquo;){ // 자른 token 의 원소가 \u0026lsquo;X\u0026rsquo; 이면 hexadecimal for(i=2; i\u0026lt;=strlen(result)-2; i++){ // 처리할 부분만 잘라냄 test[i-2] = result[i]; cnt++; } printf(\u0026ldquo;token : %s\\t\u0026rdquo;,result); printf(\u0026quot;\\t\\t\u0026quot;); hextodec(test, cnt); cnt=0; } else if(result[0] == \u0026lsquo;C\u0026rsquo;){ // 자른 token의 첫 원소가 \u0026lsquo;C\u0026rsquo; 이면 ASCII printf(\u0026ldquo;token : %s\\t\u0026rdquo;,result); for(i=2; i\u0026lt;=strlen(result)-2; i++){ // 처리할 부분만 잘라냄 test[i-2] = result[i]; cnt++; } test[cnt] = \u0026lsquo;\\0\u0026rsquo;; atohex(test, cnt); cnt=0; } else { // 자른 token이 문자열 상수이면 decimal printf(\u0026ldquo;token : %s\\t\u0026rdquo;,result); sum += atoi(result); printf(\u0026quot;\\t\\tdec : %d\\n\u0026quot;, atoi(result)); } result = strtok(NULL,\u0026quot; \\t\\n\u0026quot;); } } void hextodec(char *test, int len){ // 16진수로 된 문자열 int decimal = 0; // 10진수를 저장할 변수 int i; int position = 0; for (i = len - 1; i \u0026gt;= 0; i\u0026ndash;) { // 문자열을 역순으로 반복 char ch = test[i]; // 각 자릿수에 해당하는 문자를 얻음 if (ch \u0026gt;= 48 \u0026amp;\u0026amp; ch \u0026lt;= 57) { // 문자가 09이면(ASCII 코드 4857) // 문자에서 0에 해당하는 ASCII 코드 값을 빼고 // 16에 자릿수를 거듭제곱한 값을 곱함 decimal += (ch - 48) * pow(16, position); } else if (ch \u0026gt;= 65 \u0026amp;\u0026amp; ch \u0026lt;= 70) { // 문자가 AF이면(ASCII 코드 6570) // 대문자로 된 16진수의 처리 // 문자에서 (A에 해당하는 ASCII 코드 값 - 10)을 빼고 // 16에 자릿수를 거듭제곱한 값을 곱함 decimal += (ch - (65 - 10)) * pow(16, position); } else if (ch \u0026gt;= 97 \u0026amp;\u0026amp; ch \u0026lt;= 102) { // 문자가 af이면(ASCII 코드 97102) // 소문자로 된 16진수의 처리 // 문자에서 (a에 해당하는 ASCII 코드 값 - 10)을 빼고 // 16에 자릿수를 거듭제곱한 값을 곱함 decimal += (ch - (97 - 10)) * pow(16, position); } position++; } printf(\u0026ldquo;dec : %d\\n\u0026rdquo;, decimal); sum += decimal; } void atohex(char *ascii, int len){ char outword[10]; int i, tmp_len; for(i = 0; i\u0026lt;len; i++){ sprintf(outword+i*2, \u0026ldquo;%02X\u0026rdquo;, ascii[i]); } tmp_len = strlen(outword); printf(\u0026ldquo;hex : %s\\t\u0026rdquo;, outword); hextodec(outword, tmp_len); } 설명 :\n이 소스코드에서 Hex = Hexadecimal = 16진수 , Dec = Decimal = 10진수를 나타냅니다.\n진수 변환시에 위 코드처럼 풀어서 사용하지 않고 sprintf 같은 다른 간단한 방법을 사용할 수도 있습니다.\n방법을 보여주고자 위와 같이 풀어서 작성했습니다.\npow함수는 double형의 두 가지 값을 받아서, 가령 입력값 A, B가 인자로 전달되었다면,\nA^B 를 계산한 값을 반환하는 함수인데, math.h에 정의되어 있습니다.\n정상적으로 코드 내 헤더 파일을 include 시켰음에도 라이브러리 호출이 안된다면, 아래와 같은 명령어로 해결할 수 있습니다.\nex) gcc -lm pj4.c 혹은 gcc -o \u0026ldquo;filename\u0026rdquo; \u0026ldquo;filename.c\u0026rdquo; -lm 이런 형태로 gcc 컴파일 명령어 뒤에 -lm을 추가함으로써 해결할 수 있습니다.\n그리고 문제에 있는 numb.s 텍스트를 그대로 긁어서 붙여넣기 하면 따옴표가 특수문자여서 1바이트가 아닌 2바이트로 인식됩니다.\n그래서 Token을 자를 때 코딩한대로 실행되지 않을 수 있으므로 가급적이면 직접 타이핑 하시거나 제대로 된 numb.txt 파일을 올려 두었으니 다운받아서 리눅스 환경에서 numb.s 를 만들어 붙여넣기해서 사용하시기 바랍니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 시스템 \u0026amp; 임베디드\u0026rsquo; 카테고리의 다른 글 시스템 프로그래밍 프로젝트 #1 (1) 2020.01.12 시스템 프로그래밍 프로젝트 #2 (1) 2020.01.12 시스템 프로그래밍 프로젝트 #3 (1) 2020.01.12 시스템 프로그래밍 프로젝트 #5 (1) 2019.11.23 시스템 프로그래밍 프로젝트 #6 (1) 2019.11.21 ","permalink":"https://blog.sobamemil.com/posts/019-%EC%8B%9C%EC%8A%A4%ED%85%9C-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-4/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/19/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e입력 파일 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e[numb.txt\u003c/p\u003e\n\u003cp\u003e0.00MB](\u003ca href=\"https://blog.kakaocdn.net/dna/EqJyk/btqA57RastK/AAAAAAAAAAAAAAAAAAAAAMzaoxsjOizEuGCR5qF4Fzsa0iAquIjz6f_89H3gPle-/numb.txt?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8\u0026amp;expires=1788188399\u0026amp;allow_ip=\u0026amp;allow_referer=\u0026amp;signature=wyxmqU%2F2ZPAkscVFgGfrU1oKVrU%3D\u0026amp;attach=1\u0026amp;knm=tfile.txt\"\u003ehttps://blog.kakaocdn.net/dna/EqJyk/btqA57RastK/AAAAAAAAAAAAAAAAAAAAAMzaoxsjOizEuGCR5qF4Fzsa0iAquIjz6f_89H3gPle-/numb.txt?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8\u0026amp;expires=1788188399\u0026amp;allow_ip=\u0026amp;allow_referer=\u0026amp;signature=wyxmqU%2F2ZPAkscVFgGfrU1oKVrU%3D\u0026amp;attach=1\u0026amp;knm=tfile.txt\u003c/a\u003e)\n\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/19/img_2.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/19/img_3.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e소스 코드 :\u003c/strong\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  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  82  83  84  85  86  87  88  89  90  91  92  93  94  95\u003c/td\u003e\n          \u003ctd\u003e#include\u0026lt;stdio.h\u0026gt;  #include\u0026lt;string.h\u0026gt;  #include\u0026lt;stdlib.h\u0026gt;  #include\u0026lt;math.h\u0026gt;    void get_token_num(char *bp);  void hextodec(char *test, int len); // hex to decimal function  void atohex(char *ascii, int len); // ascii to hex function  int sum = 0;  int cnt = 0;    int main() {  FILE *fp = NULL;  char buf[80];  if((fp = fopen(\u0026ldquo;numb.s\u0026rdquo;, \u0026ldquo;r\u0026rdquo;))==NULL) {  printf(\u0026ldquo;file not found\u0026hellip;\\n\u0026rdquo;); exit(1);  }  while(fgets(buf, sizeof(buf), fp) != NULL) {  get_token_num(buf);  }  fclose(fp);  printf(\u0026quot;\\nsum = %d\\n\u0026quot;, sum);  return 0;  }  void get_token_num(char *bp){  int i,len;  char test[10];  char* result = strtok(bp,\u0026quot; \\t\\n\u0026quot;); // 문자열 자르기  while(result!=NULL) {       // 자른 token이 NULL 일떄까지 loop  if(result[0] == \u0026lsquo;X\u0026rsquo;){ // 자른 token 의 원소가 \u0026lsquo;X\u0026rsquo; 이면 hexadecimal  for(i=2; i\u0026lt;=strlen(result)-2; i++){ // 처리할 부분만 잘라냄  test[i-2] = result[i];  cnt++;  }  printf(\u0026ldquo;token : %s\\t\u0026rdquo;,result);  printf(\u0026quot;\\t\\t\u0026quot;);  hextodec(test, cnt);  cnt=0;  }  else if(result[0] == \u0026lsquo;C\u0026rsquo;){ // 자른 token의 첫 원소가 \u0026lsquo;C\u0026rsquo; 이면 ASCII  printf(\u0026ldquo;token : %s\\t\u0026rdquo;,result);  for(i=2; i\u0026lt;=strlen(result)-2; i++){ // 처리할 부분만 잘라냄  test[i-2] = result[i];  cnt++;  }  test[cnt] = \u0026lsquo;\\0\u0026rsquo;;  atohex(test, cnt);  cnt=0;  }  else { // 자른 token이 문자열 상수이면 decimal  printf(\u0026ldquo;token : %s\\t\u0026rdquo;,result);  sum += atoi(result);  printf(\u0026quot;\\t\\tdec : %d\\n\u0026quot;, atoi(result));  }  result = strtok(NULL,\u0026quot; \\t\\n\u0026quot;);  }  }  void hextodec(char *test, int len){ // 16진수로 된 문자열  int decimal = 0;               // 10진수를 저장할 변수  int i;  int position = 0;  for (i = len - 1; i \u0026gt;= 0; i\u0026ndash;) {   // 문자열을 역순으로 반복  char ch = test[i];         // 각 자릿수에 해당하는 문자를 얻음  if (ch \u0026gt;= 48 \u0026amp;\u0026amp; ch \u0026lt;= 57) {      // 문자가 0\u003cdel\u003e9이면(ASCII 코드 48\u003c/del\u003e57)  // 문자에서 0에 해당하는 ASCII 코드 값을 빼고  // 16에 자릿수를 거듭제곱한 값을 곱함  decimal += (ch - 48) * pow(16, position);  }  else if (ch \u0026gt;= 65 \u0026amp;\u0026amp; ch \u0026lt;= 70) {   // 문자가 A\u003cdel\u003eF이면(ASCII 코드 65\u003c/del\u003e70)  // 대문자로 된 16진수의 처리  // 문자에서 (A에 해당하는 ASCII 코드 값 - 10)을 빼고  // 16에 자릿수를 거듭제곱한 값을 곱함  decimal += (ch - (65 - 10)) * pow(16, position);  }  else if (ch \u0026gt;= 97 \u0026amp;\u0026amp; ch \u0026lt;= 102) {  // 문자가 a\u003cdel\u003ef이면(ASCII 코드 97\u003c/del\u003e102)  // 소문자로 된 16진수의 처리  // 문자에서 (a에 해당하는 ASCII 코드 값 - 10)을 빼고  // 16에 자릿수를 거듭제곱한 값을 곱함  decimal += (ch - (97 - 10)) * pow(16, position);  }  position++;  }  printf(\u0026ldquo;dec : %d\\n\u0026rdquo;, decimal);  sum += decimal;  }  void atohex(char *ascii, int len){  char outword[10];  int i, tmp_len;  for(i = 0; i\u0026lt;len; i++){  sprintf(outword+i*2, \u0026ldquo;%02X\u0026rdquo;, ascii[i]);  }  tmp_len = strlen(outword);  printf(\u0026ldquo;hex : %s\\t\u0026rdquo;, outword);  hextodec(outword, tmp_len);  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e설명 :\u003c/strong\u003e\u003c/p\u003e","title":"시스템 프로그래밍 프로젝트 #4"},{"content":"문제 :\n간단한 그래픽 편집기를 콘솔 바탕으로 만들어보자. 그래픽 편집기의 기능은 \u0026ldquo;삽입\u0026rdquo;, \u0026ldquo;삭제\u0026rdquo;, \u0026ldquo;모두보기\u0026rdquo;, \u0026ldquo;종료\u0026rdquo; 의 4가지이고, 실행 과정은 다음과 같다.\n목적 및 힌트 :\n추상 클래스, 상속 종합 응용\nShape과 이를 상속받은 Circle, Line,Rect 클래스는 [그림9-13]을 이용하고 필요한 클래스와 main() 함수를 작성하라. 전체 프로그램은 대략 아래와 같이 구성된다.\n코드 :\n1 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 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 #include #include\u0026lt;stdlib.h\u0026gt; using namespace std; class UI { public: static int show_menu() { int num; cout \u0026laquo; \u0026ldquo;삽입:1, 삭제:2, 모두보기:3, 종료:4 \u0026raquo;\u0026rdquo; ; cin \u0026raquo; num; return num; } static int input_shape() { int num; cout \u0026laquo; \u0026ldquo;선:1, 원:2, 사각형:3 \u0026raquo; \u0026ldquo;; cin \u0026raquo; num; return num; } static int del_index() { int num; cout \u0026laquo; \u0026ldquo;삭제하고자 하는 도형의 인덱스 \u0026raquo; \u0026ldquo;; cin \u0026raquo; num; return num; } }; class Shape { // Node Shape* next; protected: virtual void draw() { cout \u0026laquo; \u0026ldquo;\u0026ndash;Shape\u0026ndash;\u0026rdquo; \u0026laquo; endl; } public: Shape() { next = NULL; } virtual ~Shape() {} Shape* add(Shape* p) { this-\u0026gt;next = p; return p; } Shape* getNext() { return next; } void paint() { draw(); } void setNext(Shape *p) { this-\u0026gt;next = p-\u0026gt;next; } }; class Line : public Shape { public: virtual void draw() { cout \u0026laquo; \u0026ldquo;Line\u0026rdquo; \u0026laquo; endl; } }; class Circle : public Shape { public: virtual void draw() { cout \u0026laquo; \u0026ldquo;Circle\u0026rdquo; \u0026laquo; endl; } }; class Rect : public Shape { public: virtual void draw() { cout \u0026laquo; \u0026ldquo;Rectangle\u0026rdquo; \u0026laquo; endl; } }; class GraphicEditor { // List int node_size; Shape* pStart; Shape* pLast; public: GraphicEditor() { pStart = NULL; node_size = 0; } int run() { cout \u0026laquo; \u0026ldquo;그래픽 에디터입니다.\\n\u0026rdquo;; while(true){ int num; num = UI::show_menu(); switch (num){ case 1:{ num = UI::input_shape(); input_new(num); break; } case 2:{ if(pStart == NULL){ cout \u0026laquo; \u0026ldquo;List Empty\\n\u0026rdquo;; break; } num = UI::del_index(); del(num); break; } case 3:{ show(); break; } case 4:{ exit(0); } default : cout \u0026laquo; \u0026ldquo;메뉴를 잘못 선택하셨습니다.\\n\u0026rdquo;; } } } void input_new(int n) { switch (n){ case 1: { if(node_size == 0) { pStart = new Line(); pLast = pStart; } else pLast = pLast-\u0026gt;add(new Line()); node_size++; break; } case 2: { if(node_size == 0){ pStart = new Circle(); pLast = pStart; } else pLast = pLast-\u0026gt;add(new Circle()); node_size++; break; } case 3: { if(node_size == 0){ pStart = new Rect(); pLast = pStart; } else pLast = pLast-\u0026gt;add(new Rect()); node_size++; break; } default : cout \u0026laquo; \u0026ldquo;메뉴를 잘못 선택하셨습니다.\\n\u0026rdquo;; } } bool del(int n) { int k=0; Shape* target_node = pStart; Shape* priv_node; if(n == 0){ pStart = pStart-\u0026gt;getNext(); delete target_node; } else{ while( (target_node != NULL) \u0026amp;\u0026amp; (k \u0026lt; n)){ priv_node = target_node; target_node = target_node-\u0026gt;getNext(); k++; } if(target_node == NULL){ cout \u0026laquo; \u0026ldquo;없는 노드입니다.\\n\u0026rdquo;; return false; } else { priv_node-\u0026gt;setNext(target_node); delete target_node; } } node_size\u0026ndash;; } void show() { Shape* p = pStart; int i=0; if(p == NULL) cout \u0026laquo; \u0026ldquo;List Empty\\n\u0026rdquo;; else while(p != NULL){ cout \u0026laquo; i \u0026laquo; \u0026ldquo;: \u0026ldquo;; p-\u0026gt;paint(); p = p-\u0026gt;getNext(); i++; } } }; int main() { GraphicEditor* g_editor = new GraphicEditor; g_editor-\u0026gt;run(); delete g_editor; } 설명 :\n전체적인 느낌을 참고만 하시면 될 것 같습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 2장 2번 (1) 2020.02.28 명품 C++ programming 실습 문제 2장 1번 (1) 2020.02.28 명품 C++ programming 실습 문제 9장 9번 (1) 2019.11.26 명품 C++ programming 실습 문제 9장 8번 (1) 2019.11.21 명품 C++ programming 실습 문제 9장 7번 (1) 2019.11.21 ","permalink":"https://blog.sobamemil.com/posts/017-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-9%EC%9E%A5-10%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e간단한 그래픽 편집기를 콘솔 바탕으로 만들어보자. 그래픽 편집기의 기능은 \u0026ldquo;삽입\u0026rdquo;, \u0026ldquo;삭제\u0026rdquo;, \u0026ldquo;모두보기\u0026rdquo;, \u0026ldquo;종료\u0026rdquo; 의 4가지이고, 실행 과정은 다음과 같다.\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/17/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e목적 및 힌트 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e추상 클래스, 상속 종합 응용\u003c/p\u003e\n\u003cp\u003eShape과 이를 상속받은 Circle, Line,Rect 클래스는 [그림9-13]을 이용하고 필요한 클래스와 main() 함수를 작성하라. 전체 프로그램은 대략 아래와 같이 구성된다.\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/17/img_2.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e코드 :\u003c/strong\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  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  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96  97  98  99  100  101  102  103  104  105  106  107  108  109  110  111  112  113  114  115  116  117  118  119  120  121  122  123  124  125  126  127  128  129  130  131  132  133  134  135  136  137  138  139  140  141  142  143  144  145  146  147  148  149  150  151  152  153  154  155  156  157  158  159  160  161  162  163  164  165  166  167  168  169  170  171  172  173  174  175  176  177  178  179  180  181  182  183\u003c/td\u003e\n          \u003ctd\u003e#include\u003ciostream\u003e  #include\u0026lt;stdlib.h\u0026gt;    using namespace std;    class UI {  public:  static int show_menu() {  int num;  cout \u0026laquo; \u0026ldquo;삽입:1, 삭제:2, 모두보기:3, 종료:4 \u0026raquo;\u0026rdquo; ;  cin \u0026raquo; num;  return num;  }  static int input_shape() {  int num;  cout \u0026laquo; \u0026ldquo;선:1, 원:2, 사각형:3 \u0026raquo; \u0026ldquo;;  cin \u0026raquo; num;  return num;  }  static int del_index() {  int num;  cout \u0026laquo; \u0026ldquo;삭제하고자 하는 도형의 인덱스 \u0026raquo; \u0026ldquo;;  cin \u0026raquo; num;  return num;  }  };    class Shape { // Node  Shape* next;  protected:  virtual void draw() { cout \u0026laquo; \u0026ldquo;\u0026ndash;Shape\u0026ndash;\u0026rdquo; \u0026laquo; endl; }  public:  Shape() { next = NULL; }  virtual ~Shape() {}  Shape* add(Shape* p) {  this-\u0026gt;next = p;  return p;  }  Shape* getNext() { return next; }  void paint() { draw(); }  void setNext(Shape *p) { this-\u0026gt;next = p-\u0026gt;next; }  };    class Line : public Shape {  public:  virtual void draw() { cout \u0026laquo; \u0026ldquo;Line\u0026rdquo; \u0026laquo; endl; }  };    class Circle : public Shape {  public:  virtual void draw() { cout \u0026laquo; \u0026ldquo;Circle\u0026rdquo; \u0026laquo; endl; }  };    class Rect : public Shape {  public:  virtual void draw() { cout \u0026laquo; \u0026ldquo;Rectangle\u0026rdquo; \u0026laquo; endl; }  };      class GraphicEditor { // List  int node_size;  Shape* pStart;  Shape* pLast;  public:  GraphicEditor() {  pStart = NULL;  node_size = 0;  }  int run() {  cout \u0026laquo; \u0026ldquo;그래픽 에디터입니다.\\n\u0026rdquo;;  while(true){  int num;  num = UI::show_menu();  switch (num){  case 1:{  num = UI::input_shape();  input_new(num);  break;  }  case 2:{  if(pStart == NULL){  cout \u0026laquo; \u0026ldquo;List Empty\\n\u0026rdquo;;  break;  }  num = UI::del_index();  del(num);  break;  }  case 3:{  show();  break;  }  case 4:{  exit(0);  }  default :  cout \u0026laquo; \u0026ldquo;메뉴를 잘못 선택하셨습니다.\\n\u0026rdquo;;  }  }  }  void input_new(int n) {  switch (n){  case 1: {  if(node_size == 0) {  pStart = new Line();  pLast = pStart;  }  else  pLast = pLast-\u0026gt;add(new Line());  node_size++;  break;  }  case 2: {  if(node_size == 0){  pStart = new Circle();  pLast = pStart;  }  else  pLast = pLast-\u0026gt;add(new Circle());  node_size++;  break;  }  case 3: {  if(node_size == 0){  pStart = new Rect();  pLast = pStart;  }  else  pLast = pLast-\u0026gt;add(new Rect());  node_size++;  break;  }  default :  cout \u0026laquo; \u0026ldquo;메뉴를 잘못 선택하셨습니다.\\n\u0026rdquo;;  }    }  bool del(int n) {  int k=0;  Shape* target_node = pStart;  Shape* priv_node;  if(n == 0){  pStart = pStart-\u0026gt;getNext();  delete target_node;  }  else{  while( (target_node != NULL) \u0026amp;\u0026amp; (k \u0026lt; n)){  priv_node = target_node;  target_node = target_node-\u0026gt;getNext();  k++;  }  if(target_node == NULL){  cout \u0026laquo; \u0026ldquo;없는 노드입니다.\\n\u0026rdquo;;  return false;  }  else {  priv_node-\u0026gt;setNext(target_node);  delete target_node;  }  }  node_size\u0026ndash;;    }  void show() {  Shape* p = pStart;  int i=0;  if(p == NULL)  cout \u0026laquo; \u0026ldquo;List Empty\\n\u0026rdquo;;  else  while(p != NULL){  cout \u0026laquo; i \u0026laquo; \u0026ldquo;: \u0026ldquo;;  p-\u0026gt;paint();  p = p-\u0026gt;getNext();  i++;  }  }  };    int main() {  GraphicEditor* g_editor = new GraphicEditor;  g_editor-\u0026gt;run();  delete g_editor;  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e설명 :\u003c/strong\u003e\u003c/p\u003e","title":"명품 C++ programming 실습 문제 9장 10번"},{"content":"문제 :\n다음 그림과 같은 상속 구조를 갖는 클래스를 설계한다.\n모든 프린터는 모델명(model), 제조사(manufacturer), 인쇄 매수(printedCount), 인쇄 종이 잔량(availableCount)을 나타내는 정보를 가진다. print(int pages) 함수와 show() 함수는 가상 함수로 구현하라. print(int pages)는 pages 만큼 프린트하는 함수이고, show() 함수는 현재 프린트의 모델, 제조사, 인쇄 매수, 인쇄 종이 잔량 등을 출력하는 함수이다.\n잉크젯 프린터는 잉크 잔량(availableInk) 정보를 추가적으로 가지며, 레이저 프린터는 토너 잔량(availableToner) 정보를 추가적으로 가진다. 이들의 print(int pages) 멤버 함수는 프린터 타입에 맞게 구현하라. 각 클래스를 설계 구현하고 다음과 같이 실행되도록 전체 프로그램을 완성하라. InkJetPrinter 객체와 LaserPrinter 객체를 각각 하나만 동적으로 생성하여 시작한다.\n실행결과 :\n목적 및 힌트 :\n가상 함수, 상속 종합 응용\n코드 :\n1 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 82 #include using namespace std; class Printer { protected: string model, manuf; int ptd_count,ava_count; public: Printer(string mo, string maf, int ava_c){ model = mo; manuf = maf; ava_count = ava_c; } virtual void print(int pages){;} virtual void show() {;} }; class InkJet : public Printer { int ava_ink; public: InkJet(string mo, string maf, int ava_c, int ava_ik) : Printer(mo, maf, ava_c){ ava_ink = ava_ik; } virtual void show(){ cout \u0026laquo; model \u0026laquo; \u0026quot; ,\u0026quot; \u0026laquo; manuf \u0026laquo; \u0026quot; ,남은 종이 \u0026quot; \u0026laquo; ava_count \u0026laquo; \u0026ldquo;장 ,남은 잉크 \u0026quot; \u0026laquo; ava_ink \u0026laquo; endl; } virtual void print(int pages){ if(ava_count \u0026gt;= pages \u0026amp;\u0026amp; ava_ink \u0026gt;= pages){ ava_count -= pages; ava_ink -= pages; cout \u0026laquo; \u0026ldquo;프린트하였습니다.\\n\u0026rdquo;; } else cout \u0026laquo; \u0026ldquo;용지가 부족하여 프린트 할 수 없습니다.\\n\u0026rdquo;; } }; class Laser : public Printer { int ava_toner; public: Laser(string mo, string maf, int ava_c, int ava_tnr) : Printer(mo, maf, ava_c){ ava_toner = ava_tnr;} virtual void show(){ cout \u0026laquo; model \u0026laquo; \u0026quot; ,\u0026rdquo; \u0026laquo; manuf \u0026laquo; \u0026quot; ,남은 종이 \u0026quot; \u0026laquo; ava_count \u0026laquo; \u0026ldquo;장 ,남은 토너 \u0026quot; \u0026laquo; ava_toner \u0026laquo; endl; } virtual void print(int pages){ if(ava_count \u0026gt;= pages \u0026amp;\u0026amp; ava_toner \u0026gt;= pages){ ava_count -= pages; ava_toner\u0026ndash;; cout \u0026laquo; \u0026ldquo;프린트하였습니다.\\n\u0026rdquo;; } else cout \u0026laquo; \u0026ldquo;용지가 부족하여 프린트 할 수 없습니다.\\n\u0026rdquo;; } }; int main() { int printer_num, pages; string choice; Printer* p[2]; p[0] = new InkJet(\u0026ldquo;Officejet V40\u0026rdquo;, \u0026ldquo;HP\u0026rdquo;, 5, 10); p[1] = new Laser(\u0026ldquo;SCX-6x45\u0026rdquo;, \u0026ldquo;삼성전자\u0026rdquo;, 3, 20); cout \u0026laquo; \u0026ldquo;현재 작동중인 2 대의 프린터는 아래와 같다\\n\u0026rdquo;; cout \u0026laquo; \u0026ldquo;잉크젯 : \u0026ldquo;; p[0]-\u0026gt;show(); cout \u0026laquo; \u0026ldquo;레이저 : \u0026ldquo;; p[1]-\u0026gt;show(); cout \u0026laquo; endl; while(true){ cout \u0026laquo; \u0026ldquo;프린터(1: 잉크젯, 2: 레이저)와 매수 입력\u0026raquo;\u0026rdquo;; cin \u0026raquo; printer_num \u0026raquo; pages; if(printer_num==1){ p[printer_num-1]-\u0026gt;print(pages); p[0]-\u0026gt;show(); p[1]-\u0026gt;show(); } else if(printer_num==2) { p[printer_num-1]-\u0026gt;print(pages); p[0]-\u0026gt;show(); p[1]-\u0026gt;show(); } else cout \u0026laquo; \u0026ldquo;잘못 입력하셨습니다.\\n\u0026rdquo;; cout \u0026laquo; \u0026ldquo;계속 프린트 하시겠습니까(y/n)\u0026raquo;\u0026rdquo;; cin \u0026raquo; choice; if(choice != \u0026ldquo;y\u0026rdquo;) return 0; cout \u0026laquo; endl; } } Colored by Color Scripter 설명 :\n8장 8번의 문제와 비슷한 문제입니다. 아래 링크를 참고하여 작성하시면 조금 더 수월하게 작성할 수 있습니다.\n2020/03/09 - [C++/명품 C++ programming] - 명품 C++ programming 실습 문제 8장 8번\n[명품 C++ programming 실습 문제 8장 8번\n문제 : 다음 그림과 같은 상속 구조를 갖는 클래스를 설계한다. 모든 프린터는 모델명(model), 제조사(manufacturer), 인쇄 매수(printedCount), 인쇄 종이 잔량(availableCount)을 나타내는 정보와 print(int pag..\nsobamemil.tistory.com](https://sobamemil.tistory.com/109)\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 2장 1번 (1) 2020.02.28 명품 C++ programming 실습 문제 9장 10번 (1) 2019.11.26 명품 C++ programming 실습 문제 9장 8번 (1) 2019.11.21 명품 C++ programming 실습 문제 9장 7번 (1) 2019.11.21 명품 C++ programming 실습 문제 9장 6번 (1) 2019.11.21 ","permalink":"https://blog.sobamemil.com/posts/018-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-9%EC%9E%A5-9%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e다음 그림과 같은 상속 구조를 갖는 클래스를 설계한다.\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/18/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e모든 프린터는 모델명(model), 제조사(manufacturer), 인쇄 매수(printedCount), 인쇄 종이 잔량(availableCount)을 나타내는 정보를 가진다. print(int pages) 함수와 show() 함수는 가상 함수로 구현하라. print(int pages)는 pages 만큼 프린트하는 함수이고, show() 함수는 현재 프린트의 모델, 제조사, 인쇄 매수, 인쇄 종이 잔량 등을 출력하는 함수이다.\u003c/p\u003e\n\u003cp\u003e잉크젯 프린터는 잉크 잔량(availableInk) 정보를 추가적으로 가지며, 레이저 프린터는 토너 잔량(availableToner) 정보를 추가적으로 가진다. 이들의 print(int pages) 멤버 함수는 프린터 타입에 맞게 구현하라. 각 클래스를 설계 구현하고 다음과 같이 실행되도록 전체 프로그램을 완성하라. InkJetPrinter 객체와 LaserPrinter 객체를 각각 하나만 동적으로 생성하여 시작한다.\u003c/p\u003e","title":"명품 C++ programming 실습 문제 9장 9번"},{"content":"문제 :\n입력 파일 :\n[sample.txt\n0.00MB](https://blog.kakaocdn.net/dna/rQmDA/btqBh0wGGuo/AAAAAAAAAAAAAAAAAAAAAOJH_v7vkHkLQ6qLzsNnWwGtEpIuLXHhdgVHWZ1_bdfn/sample.txt?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8\u0026amp;expires=1788188399\u0026amp;allow_ip=\u0026amp;allow_referer=\u0026amp;signature=g2umKymX%2Fy9G6jLj7w3iVVcqUKc%3D\u0026amp;attach=1\u0026amp;knm=tfile.txt) 실행결과 :\n소스코드 :\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 #include\u0026lt;stdio.h\u0026gt; #include\u0026lt;string.h\u0026gt; #include\u0026lt;stdlib.h\u0026gt; int len=0; void print_len_word(char *bp){ int i; for(i=0; bp[i]!=\u0026rsquo;\\0\u0026rsquo;; i++) // bp 배열의 끝이 나올때까지 loop if(bp[i]==\u0026rsquo;\\n\u0026rsquo;) bp[i] = \u0026lsquo;\\0\u0026rsquo;; // bp[i]가 개행문자이면 그곳을 NULL로 바꿈 printf(\u0026quot;%.2X: %s\\n\u0026quot;, len, bp); len += strlen(bp); } int main() { char buf[80]; FILE* fp; if(!(fp = fopen(\u0026ldquo;test1.txt\u0026rdquo;, \u0026ldquo;r\u0026rdquo;))) { printf(\u0026ldquo;file not open\\n\u0026rdquo;); exit(1); } while(fgets(buf, sizeof(buf), fp) != NULL) print_len_word(buf); fclose(fp); printf(\u0026quot;%X\u0026quot;, len); return 0; } 설명 :\n단어들의 전체 길이를 알기위해 len변수를 전역변수로 선언하고 함수 호출시마다 해당하는 단어의 길이를 더해줬습니다.\nfgets() 함수를 사용하면 끝에 개행문자가 들어가기 때문에 7, 8번 줄에서 개행문자를 NULL로 바꾸어 줬습니다.\nfor 문을 사용하지 않고 bp[strlen(bp) - 1] = NULL 같은 방법을 사용하여도 됩니다.\n실행 결과 세번째 줄에 문제에는 0A로 나와있는데 계산 결과 0B로 나오는게 맞습니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 시스템 \u0026amp; 임베디드\u0026rsquo; 카테고리의 다른 글 시스템 프로그래밍 프로젝트 #1 (1) 2020.01.12 시스템 프로그래밍 프로젝트 #2 (1) 2020.01.12 시스템 프로그래밍 프로젝트 #3 (1) 2020.01.12 시스템 프로그래밍 프로젝트 #4 (1) 2019.12.19 시스템 프로그래밍 프로젝트 #6 (1) 2019.11.21 ","permalink":"https://blog.sobamemil.com/posts/016-%EC%8B%9C%EC%8A%A4%ED%85%9C-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-5/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/16/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e입력 파일 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e[sample.txt\u003c/p\u003e\n\u003cp\u003e0.00MB](\u003ca href=\"https://blog.kakaocdn.net/dna/rQmDA/btqBh0wGGuo/AAAAAAAAAAAAAAAAAAAAAOJH_v7vkHkLQ6qLzsNnWwGtEpIuLXHhdgVHWZ1_bdfn/sample.txt?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8\u0026amp;expires=1788188399\u0026amp;allow_ip=\u0026amp;allow_referer=\u0026amp;signature=g2umKymX%2Fy9G6jLj7w3iVVcqUKc%3D\u0026amp;attach=1\u0026amp;knm=tfile.txt\"\u003ehttps://blog.kakaocdn.net/dna/rQmDA/btqBh0wGGuo/AAAAAAAAAAAAAAAAAAAAAOJH_v7vkHkLQ6qLzsNnWwGtEpIuLXHhdgVHWZ1_bdfn/sample.txt?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8\u0026amp;expires=1788188399\u0026amp;allow_ip=\u0026amp;allow_referer=\u0026amp;signature=g2umKymX%2Fy9G6jLj7w3iVVcqUKc%3D\u0026amp;attach=1\u0026amp;knm=tfile.txt\u003c/a\u003e)\n\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/16/img_2.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e실행결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/16/img_3.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e소스코드 :\u003c/strong\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23\u003c/td\u003e\n          \u003ctd\u003e#include\u0026lt;stdio.h\u0026gt;  #include\u0026lt;string.h\u0026gt;  #include\u0026lt;stdlib.h\u0026gt;  int len=0;  void print_len_word(char *bp){  int i;  for(i=0; bp[i]!=\u0026rsquo;\\0\u0026rsquo;; i++) // bp 배열의 끝이 나올때까지 loop  if(bp[i]==\u0026rsquo;\\n\u0026rsquo;) bp[i] = \u0026lsquo;\\0\u0026rsquo;; // bp[i]가 개행문자이면 그곳을 NULL로 바꿈  printf(\u0026quot;%.2X: %s\\n\u0026quot;, len, bp);  len += strlen(bp);  }  int main() {  char buf[80];  FILE* fp;  if(!(fp = fopen(\u0026ldquo;test1.txt\u0026rdquo;, \u0026ldquo;r\u0026rdquo;))) {  printf(\u0026ldquo;file not open\\n\u0026rdquo;); exit(1);  }  while(fgets(buf, sizeof(buf), fp) != NULL)  print_len_word(buf);  fclose(fp);  printf(\u0026quot;%X\u0026quot;, len);  return 0;  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e설명 :\u003c/strong\u003e\u003c/p\u003e","title":"시스템 프로그래밍 프로젝트 #5"},{"content":"문제 :\n입력 데이터 :\n[Command.txt\n0.00MB](https://blog.kakaocdn.net/dna/bnbU30/btqBgeimBnY/AAAAAAAAAAAAAAAAAAAAAAPakDbTA4jf0WyG_DmDE76emfyLiazho4x1advtOToN/Command.txt?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8\u0026amp;expires=1788188399\u0026amp;allow_ip=\u0026amp;allow_referer=\u0026amp;signature=2iAm290NW4CFkRgpHKAQHRqBvxw%3D\u0026amp;attach=1\u0026amp;knm=tfile.txt) 실행 결과 :\n코드 :\n1 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 #include\u0026lt;stdio.h\u0026gt; #include\u0026lt;string.h\u0026gt; #include\u0026lt;stdlib.h\u0026gt; void PrintAssm(char* name_buf, int name_size); struct OPTAB{ char name[8]; int len; } Wordtab[] = { {\u0026ldquo;LDA\u0026rdquo;, 3}, {\u0026ldquo;STA\u0026rdquo;, 4}, {\u0026ldquo;ADD\u0026rdquo;, 5}, {\u0026ldquo;TIX\u0026rdquo;, 2}, {\u0026ldquo;CMP\u0026rdquo;, 6} }; int main() { char name_buf[8]; int wordtab_size = sizeof(Wordtab)/12; // Wordtab에 정의된 단어 갯수, 12 = size of char[8] + int FILE* fp; if((fp = fopen(\u0026ldquo;Command.txt\u0026rdquo;, \u0026ldquo;r\u0026rdquo;))==NULL) { printf(\u0026ldquo;file not found\u0026hellip;\\n\u0026rdquo;); exit(1); } while(fgets(name_buf, sizeof(name_buf), fp) != NULL) { // fgets() 함수는 scanf나 gets()와는 달리 뒤에 개행문자가 붙는다 if(name_buf[0] == \u0026lsquo;\\n\u0026rsquo;) // name_buf 배열 맨 처음이 개행문자이면 메시지 출력 없이 무시 continue; if(name_buf[strlen(name_buf) - 1] == \u0026lsquo;\\n\u0026rsquo;) // name_buf 배열 맨 끝이 개행문자이면 name_buf[strlen(name_buf) - 1] = \u0026lsquo;\\0\u0026rsquo;; // naem_buf 배열 맨 끝에 붙은 개행문자 제거 PrintAssm(name_buf, wordtab_size); } fclose(fp); } void PrintAssm(char* name_buf, int wordtab_size){ static int k=1; // 줄 번호를 나타내는 변수 static int loc=0; // 단어의 시작 위치를 나타내는 변수 int i, res=-1; for(i=0; i\u0026lt;wordtab_size; i++){ res = strcmp(name_buf, Wordtab[i].name); // strcmp : 두 문자열이 같으면 0 리턴 if(res==0){ break; } } if(i==wordtab_size){ printf(\u0026quot; Undefined word\\n\u0026quot;); // Wordtab 배열 안에 정의되어 있지 않는 명령어면 출력하고 단어 무시 } else{ if(k \u0026lt; 10) printf(\u0026quot; \u0026ldquo;); printf(\u0026quot;%d, %.2X, %s, %.2d\\n\u0026rdquo;, k, loc, Wordtab[i].name, Wordtab[i].len); loc += Wordtab[i].len; // 단어의 해당길이를 더해서 다음 시작 위치를 알려줌 k++; } } Colored by Color Scripter 설명 :\n21번 줄 if문은 입력 데이터를 Enter를 여러개 입력한다면 무시하고 다음 데이터를 읽어오는 부분입니다.\nDev-C++ 5.11 에서 작성된 코드입니다. Linux에서 작성한다면 입력 데이터 파일로 .txt 확장자 대신 .s 확장자를 사용합니다.\n공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; 시스템 \u0026amp; 임베디드\u0026rsquo; 카테고리의 다른 글 시스템 프로그래밍 프로젝트 #1 (1) 2020.01.12 시스템 프로그래밍 프로젝트 #2 (1) 2020.01.12 시스템 프로그래밍 프로젝트 #3 (1) 2020.01.12 시스템 프로그래밍 프로젝트 #4 (1) 2019.12.19 시스템 프로그래밍 프로젝트 #5 (1) 2019.11.23 ","permalink":"https://blog.sobamemil.com/posts/015-%EC%8B%9C%EC%8A%A4%ED%85%9C-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-6/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/15/img_1.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e입력 데이터 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e[Command.txt\u003c/p\u003e\n\u003cp\u003e0.00MB](\u003ca href=\"https://blog.kakaocdn.net/dna/bnbU30/btqBgeimBnY/AAAAAAAAAAAAAAAAAAAAAAPakDbTA4jf0WyG_DmDE76emfyLiazho4x1advtOToN/Command.txt?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8\u0026amp;expires=1788188399\u0026amp;allow_ip=\u0026amp;allow_referer=\u0026amp;signature=2iAm290NW4CFkRgpHKAQHRqBvxw%3D\u0026amp;attach=1\u0026amp;knm=tfile.txt\"\u003ehttps://blog.kakaocdn.net/dna/bnbU30/btqBgeimBnY/AAAAAAAAAAAAAAAAAAAAAAPakDbTA4jf0WyG_DmDE76emfyLiazho4x1advtOToN/Command.txt?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8\u0026amp;expires=1788188399\u0026amp;allow_ip=\u0026amp;allow_referer=\u0026amp;signature=2iAm290NW4CFkRgpHKAQHRqBvxw%3D\u0026amp;attach=1\u0026amp;knm=tfile.txt\u003c/a\u003e)\n\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/15/img_2.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e실행 결과 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/15/img_3.png\"\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e코드 :\u003c/strong\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  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\u003c/td\u003e\n          \u003ctd\u003e#include\u0026lt;stdio.h\u0026gt;  #include\u0026lt;string.h\u0026gt;  #include\u0026lt;stdlib.h\u0026gt;    void PrintAssm(char* name_buf, int name_size);    struct OPTAB{  char name[8];  int len;  } Wordtab[] = { {\u0026ldquo;LDA\u0026rdquo;, 3}, {\u0026ldquo;STA\u0026rdquo;, 4}, {\u0026ldquo;ADD\u0026rdquo;, 5}, {\u0026ldquo;TIX\u0026rdquo;, 2}, {\u0026ldquo;CMP\u0026rdquo;, 6} };    int main() {  char name_buf[8];  int wordtab_size = sizeof(Wordtab)/12; // Wordtab에 정의된 단어 갯수, 12 = size of char[8] + int  FILE* fp;    if((fp = fopen(\u0026ldquo;Command.txt\u0026rdquo;, \u0026ldquo;r\u0026rdquo;))==NULL) {  printf(\u0026ldquo;file not found\u0026hellip;\\n\u0026rdquo;); exit(1);  }  while(fgets(name_buf, sizeof(name_buf), fp) != NULL) { // fgets() 함수는 scanf나 gets()와는 달리 뒤에 개행문자가 붙는다  if(name_buf[0] == \u0026lsquo;\\n\u0026rsquo;) // name_buf 배열 맨 처음이 개행문자이면 메시지 출력 없이 무시  continue;  if(name_buf[strlen(name_buf) - 1] == \u0026lsquo;\\n\u0026rsquo;) // name_buf 배열 맨 끝이 개행문자이면  name_buf[strlen(name_buf) - 1] = \u0026lsquo;\\0\u0026rsquo;; // naem_buf 배열 맨 끝에 붙은 개행문자 제거  PrintAssm(name_buf, wordtab_size);  }  fclose(fp);  }    void PrintAssm(char* name_buf, int wordtab_size){  static int k=1; // 줄 번호를 나타내는 변수  static int loc=0; // 단어의 시작 위치를 나타내는 변수  int i, res=-1;  for(i=0; i\u0026lt;wordtab_size; i++){  res = strcmp(name_buf, Wordtab[i].name); // strcmp : 두 문자열이 같으면 0 리턴  if(res==0){  break;  }  }  if(i==wordtab_size){  printf(\u0026quot; Undefined word\\n\u0026quot;); // Wordtab 배열 안에 정의되어 있지 않는 명령어면 출력하고 단어 무시  }  else{  if(k \u0026lt; 10)  printf(\u0026quot; \u0026ldquo;);  printf(\u0026quot;%d, %.2X, %s, %.2d\\n\u0026rdquo;, k, loc, Wordtab[i].name, Wordtab[i].len);  loc += Wordtab[i].len; // 단어의 해당길이를 더해서 다음 시작 위치를 알려줌  k++;  }  }  \u003ca href=\"http://colorscripter.com/info#e\"\u003eColored by Color Scripter\u003c/a\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e\u003cstrong\u003e설명 :\u003c/strong\u003e\u003c/p\u003e","title":"시스템 프로그래밍 프로젝트 #6"},{"content":"문제 :\n사각형에 내접하는 도형을 표현하기 위한 Shape 클래스가 있다.\n1 2 3 4 5 6 7 8 9 class Shape { protected: string name; // 도형의 이름 int width, height; // 도형이 내접하는 사각형의 너비와 높이 public: Shape(string n=\u0026quot;\u0026quot;, int w=0, int h=0) { name = n; width = w; height = h; } virtual double getArea() { return 0; } // dummy 값 리턴 string getName() { return name; } // 이름 리턴 }; Colored by Color Scripter 문제 7에 주어진 Shape 클래스를 추상 클래스로 만들고 문제 7을 다시 작성하라.\n2019/11/21 - [C++/명품 C++ programming] - 명품 C++ programming 실습 문제 9장 7번\n[명품 C++ programming 실습 문제 9장 7번\n문제 : 사각형에 내접하는 도형을 표한하기 위한 Shape 클래스가 있다. 1 2 3 4 5 6 7 8 9 class Shape { protected: string name; // 도형의 이름 int width, height; // 도형이 내접하는 사각형의 너비와 높이 p..\nsobamemil.tistory.com](https://sobamemil.tistory.com/13)\n1 2 3 4 5 6 7 8 9 10 int main() { Shape *p[3]; p[0] = new Oval(\u0026ldquo;빈대떡\u0026rdquo;, 10, 20); p[1] = new Rect(\u0026ldquo;찰떡\u0026rdquo;, 30, 40); p[2] = new Triangular(\u0026ldquo;토스트\u0026rdquo;, 30, 40); for(int i=0; i\u0026lt;3; i++) cout \u0026laquo; p[i]-\u0026gt;getName() \u0026laquo; \u0026quot; 넓이는 \u0026quot; \u0026laquo; p[i]-\u0026gt;getArea() \u0026laquo; endl; for(int i=0; i\u0026lt;3; i++) delete p[i]; } Colored by Color Scripter 실행 결과 :\n목적 및 힌트 :\n가상 함수를 가진 클래스를 추상 클래스로 만들기\nShape을 추상 클래스로 만들려면 getArea() 함수를 순수 가상 함수로 만들면 된다.\n코드 :\n1 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 #include using namespace std; class Shape { protected: string name; int width, height; public: Shape(string n=\u0026quot;\u0026quot;, int w=0, int h=0) { name = n; width = w; height = h; } virtual double getArea()=0; string getName() { return name; } }; class Oval : public Shape { public: Oval(string n, int w, int h) : Shape(n, w, h){;} virtual double getArea() { return 3.14 * width * height; } }; class Rect : public Shape { public: Rect(string n, int w, int h) : Shape(n, w, h){;} virtual double getArea() { return width * height; } }; class Triangular : public Shape { public: Triangular(string n, int w, int h) : Shape(n, w, h){;} virtual double getArea() { return (width * height) / 2; } }; int main() { Shape *p[3]; p[0] = new Oval(\u0026ldquo;빈대떡\u0026rdquo;, 10, 20); p[1] = new Rect(\u0026ldquo;찰떡\u0026rdquo;, 30, 40); p[2] = new Triangular(\u0026ldquo;토스트\u0026rdquo;, 30, 40); for(int i=0; i\u0026lt;3; i++) cout \u0026laquo; p[i]-\u0026gt;getName() \u0026laquo; \u0026quot; 넓이는 \u0026quot; \u0026laquo; p[i]-\u0026gt;getArea() \u0026laquo; endl; for(int i=0; i\u0026lt;3; i++) delete p[i]; } Colored by Color Scripter 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 9장 10번 (1) 2019.11.26 명품 C++ programming 실습 문제 9장 9번 (1) 2019.11.26 명품 C++ programming 실습 문제 9장 7번 (1) 2019.11.21 명품 C++ programming 실습 문제 9장 6번 (1) 2019.11.21 명품 C++ programming 실습 문제 9장 5번 (2) 2019.11.21 ","permalink":"https://blog.sobamemil.com/posts/014-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-9%EC%9E%A5-8%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e사각형에 내접하는 도형을 표현하기 위한 Shape 클래스가 있다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9\u003c/td\u003e\n          \u003ctd\u003eclass Shape {  protected:  string name; // 도형의 이름  int width, height; // 도형이 내접하는 사각형의 너비와 높이  public:  Shape(string n=\u0026quot;\u0026quot;, int w=0, int h=0) { name = n; width = w; height = h; }  virtual double getArea() { return 0; } // dummy 값 리턴  string getName() { return name; } // 이름 리턴  };  \u003ca href=\"http://colorscripter.com/info#e\"\u003eColored by Color Scripter\u003c/a\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e문제 7에 주어진 Shape 클래스를 추상 클래스로 만들고 문제 7을 다시 작성하라.\u003c/p\u003e","title":"명품 C++ programming 실습 문제 9장 8번"},{"content":"문제 :\n사각형에 내접하는 도형을 표한하기 위한 Shape 클래스가 있다.\n1 2 3 4 5 6 7 8 9 class Shape { protected: string name; // 도형의 이름 int width, height; // 도형이 내접하는 사각형의 너비와 높이 public: Shape(string n=\u0026quot;\u0026quot;, int w=0, int h=0) { name = n; width = w; height = h; } virtual double getArea() { return 0; } // dummy 값 리턴 string getName() { return name; } // 이름 리턴 }; Colored by Color Scripter Shape 클래스를 상속받아 타원을 표현하는 Oval, 사각형을 표현하는 Rect, 삼각형을 표현하는 Triangular 클래스를 작성하라. main()을 작성하고 실행하면 다음과 같다.\n1 2 3 4 5 6 7 8 9 10 int main() { Shape *p[3]; p[0] = new Oval(\u0026ldquo;빈대떡\u0026rdquo;, 10, 20); p[1] = new Rect(\u0026ldquo;찰떡\u0026rdquo;, 30, 40); p[2] = new Triangular(\u0026ldquo;토스트\u0026rdquo;, 30, 40); for(int i=0; i\u0026lt;3; i++) cout \u0026laquo; p[i]-\u0026gt;getName() \u0026laquo; \u0026quot; 넓이는 \u0026quot; \u0026laquo; p[i]-\u0026gt;getArea() \u0026laquo; endl; for(int i=0; i\u0026lt;3; i++) delete p[i]; } Colored by Color Scripter 목적 및 힌트 :\n가상 함수를 가진 클래스를 상속받는 파생 클래스 만들기\n코드 :\n1 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 #include using namespace std; class Shape { protected: string name; // 도형의 이름 int width, height; // 도형이 내접하는 사각형의 너비와 높이 public: Shape(string n=\u0026quot;\u0026quot;, int w=0, int h=0) { name = n; width = w; height = h; } virtual double getArea() { return 0; } // dummy 값 리턴 string getName() { return name; } // 이름 리턴 }; class Oval : public Shape { public: Oval(string n, int w, int h) : Shape(n, w, h){;} virtual double getArea() { return 3.14 * width * height; } }; class Rect : public Shape { public: Rect(string n, int w, int h) : Shape(n, w, h){;} virtual double getArea() { return width * height; } }; class Triangular : public Shape { public: Triangular(string n, int w, int h) : Shape(n, w, h){;} virtual double getArea() { return (width * height) / 2; } }; int main() { Shape *p[3]; p[0] = new Oval(\u0026ldquo;빈대떡\u0026rdquo;, 10, 20); p[1] = new Rect(\u0026ldquo;찰떡\u0026rdquo;, 30, 40); p[2] = new Triangular(\u0026ldquo;토스트\u0026rdquo;, 30, 40); for(int i=0; i\u0026lt;3; i++) cout \u0026laquo; p[i]-\u0026gt;getName() \u0026laquo; \u0026quot; 넓이는 \u0026quot; \u0026laquo; p[i]-\u0026gt;getArea() \u0026laquo; endl; for(int i=0; i\u0026lt;3; i++) delete p[i]; } Colored by Color Scripter 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 9장 9번 (1) 2019.11.26 명품 C++ programming 실습 문제 9장 8번 (1) 2019.11.21 명품 C++ programming 실습 문제 9장 6번 (1) 2019.11.21 명품 C++ programming 실습 문제 9장 5번 (2) 2019.11.21 명품 C++ programming 실습 문제 9장 4번 (3) 2019.11.21 ","permalink":"https://blog.sobamemil.com/posts/013-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-9%EC%9E%A5-7%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e사각형에 내접하는 도형을 표한하기 위한 Shape 클래스가 있다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9\u003c/td\u003e\n          \u003ctd\u003eclass Shape {  protected:  string name; // 도형의 이름  int width, height; // 도형이 내접하는 사각형의 너비와 높이  public:  Shape(string n=\u0026quot;\u0026quot;, int w=0, int h=0) { name = n; width = w; height = h; }  virtual double getArea() { return 0; } // dummy 값 리턴  string getName() { return name; } // 이름 리턴  };  \u003ca href=\"http://colorscripter.com/info#e\"\u003eColored by Color Scripter\u003c/a\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eShape 클래스를 상속받아 타원을 표현하는 Oval, 사각형을 표현하는 Rect, 삼각형을 표현하는 Triangular 클래스를 작성하라. main()을 작성하고 실행하면 다음과 같다.\u003c/p\u003e","title":"명품 C++ programming 실습 문제 9장 7번"},{"content":"문제 :\n다음 AbstractStack은 정수 스택 클래스로서 추상 클래스이다.\n1 2 3 4 5 6 7 class AbstrackStack { public: virtual bool push(int n) = 0; // 스택에 n을 푸시한다. 스택이 full이면 false 리턴 virtual bool pop(int\u0026amp; n) = 0; // 스택에서 팝한 정수를 n에 저장하고 스택이 empty이면 false 리턴 virtual int size() = 0; }; Colored by Color Scripter 이를 상속받아 정수를 푸시, 팝하는 IntStack 클래스를 만들고 사용 사례를 보여라.\n목적 및 힌트 :\n스택을 추상 클래스로 표현하고 구현하기\n실행 결과 :\n코드 :\n1 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 using namespace std; class AbstrackStack { public: virtual bool push(int n) = 0; // 스택에 n을 푸시한다. 스택이 full이면 false 리턴 virtual bool pop(int\u0026amp; n) = 0; // 스택에서 팝한 정수를 n에 저장하고 스택이 empty이면 false 리턴 virtual int size() = 0; }; class IntStack : public AbstrackStack { int s, full, top; int* int_stack; public: IntStack(int s = 3){ int_stack = new int [s]; full = s; top = -1; } ~IntStack(){ delete [] int_stack; } virtual bool push(int n){ if(top == full) return false; ++top; int_stack[top] = n; return true; } virtual bool pop(int\u0026amp; n){ if(top==-1) return false; n = int_stack[top]; top\u0026ndash;; return true; } virtual int size() { return top+1; } }; int main() { int c, pop; bool b; IntStack intstack(5); while(true){ cout \u0026laquo; \u0026ldquo;1: push\\t\\t2: pop\\t\\t3: show_size\\t\\t4: exit\\n선택하세요\u0026raquo; \u0026ldquo;; cin \u0026raquo; c; if(c == 1){ cout \u0026laquo; \u0026ldquo;push 할 정수를 입력하세요\u0026raquo;\u0026rdquo;; cin \u0026raquo; c; b = intstack.push(c); if(!b) cout \u0026laquo; \u0026ldquo;stack is full\u0026hellip;\\n\u0026rdquo;; else cout \u0026laquo; \u0026ldquo;success!\\n\u0026rdquo;; } else if(c == 2){ b = intstack.pop(pop); if(!b) cout \u0026laquo; \u0026ldquo;stack is empty\u0026hellip;\\n\u0026rdquo;; else cout \u0026laquo; \u0026ldquo;pop : \u0026ldquo;\u0026laquo; pop \u0026laquo; endl; } else if(c == 3) cout \u0026laquo; \u0026ldquo;size : \u0026quot; \u0026laquo; intstack.size() \u0026laquo; endl; else return 0; cout \u0026laquo; endl; } } Colored by Color Scripter 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 9장 8번 (1) 2019.11.21 명품 C++ programming 실습 문제 9장 7번 (1) 2019.11.21 명품 C++ programming 실습 문제 9장 5번 (2) 2019.11.21 명품 C++ programming 실습 문제 9장 4번 (3) 2019.11.21 명품 C++ programming 실습 문제 9장 3번 (2) 2019.11.21 ","permalink":"https://blog.sobamemil.com/posts/011-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-9%EC%9E%A5-6%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e다음 AbstractStack은 정수 스택 클래스로서 추상 클래스이다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7\u003c/td\u003e\n          \u003ctd\u003eclass AbstrackStack {  public:  virtual bool push(int n) = 0; // 스택에 n을 푸시한다. 스택이 full이면 false 리턴  virtual bool pop(int\u0026amp; n) = 0; // 스택에서 팝한 정수를 n에 저장하고 스택이 empty이면 false 리턴    virtual int size() = 0;  };  \u003ca href=\"http://colorscripter.com/info#e\"\u003eColored by Color Scripter\u003c/a\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e이를 상속받아 정수를 푸시, 팝하는 IntStack 클래스를 만들고 사용 사례를 보여라.\u003c/p\u003e","title":"명품 C++ programming 실습 문제 9장 6번"},{"content":"문제 :\n디지털 회로에서 기본적인 게이트로 OR 게이트, AND 게이트, XOR 게이트 등이 있다. 이들은 각각 두 입력 신호를 받아 OR 연산, AND 연산, XOR 연산을 수행한 결과를 출력한다. 이 게이트들을 각각 ORGate, XORGate, ANDGate 클래스로 작성하고자 한다. ORGate, XORGate, ANDGate 클래스가 AbstractGatef를 상속받도록 작성하라.\n1 2 3 4 5 6 7 class AbstractGate { // 추상 클래스 protected: bool x, y; public: void set(bool x, bool y) { this-\u0026gt;x = x; this-\u0026gt;y = y; } virtual bool operation()=0; }; Colored by Color Scripter ANDGate, ORGate, XORGate를 활용하는 사례와 결과는 다음과 같다.\n1 2 3 4 5 6 7 8 9 10 11 ANDGate andGate; ORGate orGate; XORGate xorGate; andGate.set(true, false); orGate.set(true, false); xorGate.set(true, false); cout.setf(ios::boolalpha); // 불린 값을 \u0026ldquo;true\u0026rdquo;, \u0026ldquo;false\u0026rdquo; 문자열로 출력할 것을 지시 cout \u0026laquo; andGate.operation() \u0026laquo; endl; // AND 결과는 false cout \u0026laquo; orGate.operation() \u0026laquo; endl; // OR 결과는 true cout \u0026laquo; xorGate.operation() \u0026laquo; endl; // XOR 결과는 true 목****적 및 힌트 :\n추상 클래스를 상속받는 파생 클래스 만들기\n코드 :\n1 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 #include using namespace std; class AbstractGate { // 추상 클래스 protected: bool x, y; public: void set(bool x, bool y) { this-\u0026gt;x = x; this-\u0026gt;y = y; } virtual bool operation()=0; }; class ANDGate : public AbstractGate { public: virtual bool operation() { if(x == true \u0026amp;\u0026amp; y == true) return true; else return false; } }; class ORGate : public AbstractGate { public: virtual bool operation() { if(x == true 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 9장 7번 (1) 2019.11.21 명품 C++ programming 실습 문제 9장 6번 (1) 2019.11.21 명품 C++ programming 실습 문제 9장 4번 (3) 2019.11.21 명품 C++ programming 실습 문제 9장 3번 (2) 2019.11.21 명품 C++ programming 실습 문제 9장 2번 (2) 2019.11.20 ","permalink":"https://blog.sobamemil.com/posts/010-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-9%EC%9E%A5-5%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e디지털 회로에서 기본적인 게이트로 OR 게이트, AND 게이트, XOR 게이트 등이 있다. 이들은 각각 두 입력 신호를 받아 OR 연산, AND 연산, XOR 연산을 수행한 결과를 출력한다. 이 게이트들을 각각 ORGate, XORGate, ANDGate 클래스로 작성하고자 한다. ORGate, XORGate, ANDGate 클래스가 AbstractGatef를 상속받도록 작성하라.\u003c/p\u003e\n\u003cp\u003e\u003cimg loading=\"lazy\" src=\"https://img.sobamemil.com/posts/10/img_1.png\"\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7\u003c/td\u003e\n          \u003ctd\u003eclass AbstractGate { // 추상 클래스  protected:  bool x, y;  public:  void set(bool x, bool y) { this-\u0026gt;x = x; this-\u0026gt;y = y; }  virtual bool operation()=0;  };  \u003ca href=\"http://colorscripter.com/info#e\"\u003eColored by Color Scripter\u003c/a\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eANDGate, ORGate, XORGate를 활용하는 사례와 결과는 다음과 같다.\u003c/p\u003e","title":"명품 C++ programming 실습 문제 9장 5번"},{"content":"문제 :\n다음 추상 클래스 LoopAdder가 있다.\n1 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 class LoopAdder { // 추상 클래스 string name; // 루프의 이름 int x, y, sum; // x에서 y까지의 합은 sum void read(); // x, y 값을 읽어드리는 함수 void write(); // sum을 출력하는 함수 protected: LoopAdder(string name=\u0026quot;\u0026quot;) { // 루프의 이름을 받는다. 초깃값은 \u0026quot;\u0026quot; this-\u0026gt;name = name; } int getX() { return x; } int getY() { return y; } virtual int calculate() = 0; // 순수 가상 함수. 루프를 돌며 합을 구하는 함수 public: void run(); // 연산을 진행하는 함수 }; void LoopAdder::read() { // x, y 입력 cout \u0026laquo; name \u0026laquo; \u0026ldquo;:\u0026rdquo; \u0026laquo; endl; cout \u0026laquo; \u0026ldquo;처음 수에서 두번째 수까지 더한다. 두 수를 입력하세요 \u0026raquo; \u0026ldquo;; cin \u0026raquo; x \u0026raquo; y; } void LoopAdder::write() { // 결과 sum 출력 cout \u0026laquo; x \u0026laquo; \u0026ldquo;에서 \u0026quot; \u0026laquo; y \u0026laquo; \u0026ldquo;까지의 합 = \u0026quot; \u0026laquo; sum \u0026laquo; \u0026quot; 입니다\u0026rdquo; \u0026laquo; endl; } void LoopAdder::run() { read(); // x, y를 읽는다 sum = calculate(); // 루프를 돌면서 계산한다. write(); // 결과 sum을 출력한다. } Colored by Color Scripter LoopAdder 클래스를 상속받아 다음 main() 함수와 실행 결과처럼 되도록 WhileLoopAdder, DoWhileLoopAdder 클래스를 작성하라. while 문, do-while 문을 이용하여 합을 구하도록 calculate() 함수를 각각 작성하면 된다.\n1 2 3 4 5 6 7 int main() { WhileLoopAdder whileLoop(\u0026ldquo;While Loop\u0026rdquo;); DoWhileLoopAdder doWhileLoop(\u0026ldquo;Do While Loop\u0026rdquo;); whileLoop.run(); doWhileLoop.run(); } Colored by Color Scripter 목적 및 힌트 :\n추상 클래스를 상속받는 파생 클래스 만들기\n코드 :\n1 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 #include using namespace std; class LoopAdder { // 추상 클래스 string name; // 루프의 이름 int x, y, sum; // x에서 y까지의 합은 sum void read(); // x, y 값을 읽어 들이는 함수 void write(); // sum을 출력하는 함수 protected: LoopAdder(string name=\u0026rdquo;\u0026quot;) { // 루프의 이름을 받는다. 초깃값은 \u0026quot;\u0026rdquo; this-\u0026gt;name = name; } int getX() { return x; } int getY() { return y; } virtual int calculate() = 0; // 순수 가상 함수. 루프를 돌며 합을 구하는 함수 public: void run(); // 연산을 진행하는 함수 }; void LoopAdder::read() { // x, y 입력 cout \u0026laquo; name \u0026laquo; \u0026ldquo;:\u0026rdquo; \u0026laquo; endl; cout \u0026laquo; \u0026ldquo;처음 수에서 두번째 수까지 더한다. 두 수를 입력하세요 \u0026raquo; \u0026ldquo;; cin \u0026raquo; x \u0026raquo; y; } void LoopAdder::write() { // 결과 sum 출력 cout \u0026laquo; x \u0026laquo; \u0026ldquo;에서 \u0026quot; \u0026laquo; y \u0026laquo; \u0026ldquo;까지의 합 = \u0026quot; \u0026laquo; sum \u0026laquo; \u0026quot; 입니다\u0026rdquo; \u0026laquo; endl; } void LoopAdder::run() { read(); // x, y를 읽는다 sum = calculate(); // 루프를 돌면서 계산한다. write(); // 결과 sum을 출력한다. } class WhileLoopAdder : public LoopAdder { string wloop; public: WhileLoopAdder(string wloop) : LoopAdder(wloop) { this-\u0026gt;wloop = wloop; } virtual int calculate() { int tmp_sum=0; int tmp_x = getX(); int tmp_y = getY(); while(tmp_x\u0026lt;=tmp_y){ tmp_sum += tmp_x; tmp_x++; } return tmp_sum; } }; class DoWhileLoopAdder : public LoopAdder { string dwloop; public: DoWhileLoopAdder(string dwloop) : LoopAdder(dwloop) { this-\u0026gt;dwloop = dwloop; } virtual int calculate() { int tmp_sum=0; int tmp_x = getX(); int tmp_y = getY(); do { tmp_sum += tmp_x; tmp_x++; }while(tmp_x\u0026lt;=tmp_y); return tmp_sum; } }; int main() { WhileLoopAdder whileLoop(\u0026ldquo;While Loop\u0026rdquo;); DoWhileLoopAdder doWhileLoop(\u0026ldquo;Do While Loop\u0026rdquo;); whileLoop.run(); doWhileLoop.run(); } Colored by Color Scripter 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 9장 6번 (1) 2019.11.21 명품 C++ programming 실습 문제 9장 5번 (2) 2019.11.21 명품 C++ programming 실습 문제 9장 3번 (2) 2019.11.21 명품 C++ programming 실습 문제 9장 2번 (2) 2019.11.20 명품 C++ programming 실습 문제 9장 1번 (1) 2019.11.20 ","permalink":"https://blog.sobamemil.com/posts/009-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-9%EC%9E%A5-4%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e다음 추상 클래스 LoopAdder가 있다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  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\u003c/td\u003e\n          \u003ctd\u003eclass LoopAdder { // 추상 클래스  string name; // 루프의 이름  int x, y, sum; // x에서 y까지의 합은 sum  void read(); // x, y 값을 읽어드리는 함수  void write(); // sum을 출력하는 함수  protected:  LoopAdder(string name=\u0026quot;\u0026quot;) { // 루프의 이름을 받는다. 초깃값은 \u0026quot;\u0026quot;  this-\u0026gt;name = name;  }  int getX() { return x; }  int getY() { return y; }  virtual int calculate() = 0; // 순수 가상 함수. 루프를 돌며 합을 구하는 함수  public:  void run(); // 연산을 진행하는 함수  };    void LoopAdder::read() { // x, y 입력  cout \u0026laquo; name \u0026laquo; \u0026ldquo;:\u0026rdquo; \u0026laquo; endl;  cout \u0026laquo; \u0026ldquo;처음 수에서 두번째 수까지 더한다. 두 수를 입력하세요 \u0026raquo; \u0026ldquo;;  cin \u0026raquo; x \u0026raquo; y;  }    void LoopAdder::write() { // 결과 sum 출력  cout \u0026laquo; x \u0026laquo; \u0026ldquo;에서 \u0026quot; \u0026laquo; y \u0026laquo; \u0026ldquo;까지의 합 = \u0026quot; \u0026laquo; sum \u0026laquo; \u0026quot; 입니다\u0026rdquo; \u0026laquo; endl;  }    void LoopAdder::run() {  read(); // x, y를 읽는다  sum = calculate(); // 루프를 돌면서 계산한다.  write(); // 결과 sum을 출력한다.  }  \u003ca href=\"http://colorscripter.com/info#e\"\u003eColored by Color Scripter\u003c/a\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eLoopAdder 클래스를 상속받아 다음 main() 함수와 실행 결과처럼 되도록 WhileLoopAdder, DoWhileLoopAdder 클래스를 작성하라. while 문, do-while 문을 이용하여 합을 구하도록 calculate() 함수를 각각 작성하면 된다.\u003c/p\u003e","title":"명품 C++ programming 실습 문제 9장 4번"},{"content":"문제 :\n다음 추상 클래스 LoopAdder가 있다.\n1 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 class LoopAdder { // 추상 클래스 string name; // 루프의 이름 int x, y, sum; // x에서 y까지의 합은 sum void read(); // x, y 값을 읽어 들이는 함수 void write(); // sum을 출력하는 함수 protected: LoopAdder(string name=\u0026quot;\u0026quot;) { // 루프의 이름을 받는다. 초깃값은 \u0026quot;\u0026quot; this-\u0026gt;name = name; } int getX() { return x; } int getY() { return y; } virtual int calculate() = 0; // 순수 가상 함수. 루프를 돌며 합을 구하는 함수 public: void run(); // 연산을 진행하는 함수 }; void LoopAdder::read() { // x, y 입력 cout \u0026laquo; name \u0026laquo; \u0026ldquo;:\u0026rdquo; \u0026laquo; endl; cout \u0026laquo; \u0026ldquo;처음 수에서 두번째 수까지 더한다. 두 수를 입력하세요 \u0026raquo; \u0026ldquo;; cin \u0026raquo; x \u0026raquo; y; } void LoopAdder::write() { // 결과 sum 출력 cout \u0026laquo; x \u0026laquo; \u0026ldquo;에서 \u0026quot; \u0026laquo; y \u0026laquo; \u0026ldquo;까지의 합 = \u0026quot; \u0026laquo; sum \u0026laquo; \u0026quot; 입니다\u0026rdquo; \u0026laquo; endl; } void LoopAdder::run() { read(); // x, y를 읽는다 sum = calculate(); // 루프를 돌면서 계산한다. write(); // 결과 sum을 출력한다. } LoopAdder 클래스를 상속받아 다음 main() 함수와 실행 결과처럼 되도록 ForLoopAdder 클래스를 작성하라. ForLoopAdder 클래스의 calculate() 함수는 for 문을 이용하여 합을 구한다.\n1 2 3 4 int main() { ForLoopAdder forLoop(\u0026ldquo;For Loop\u0026rdquo;); forLoop.run(); } 목적 및 힌트 :\n추상 클래스를 상속받는 파생 클래스 만들기\n코드 :\n1 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 #include using namespace std; class LoopAdder { // 추상 클래스 string name; // 루프의 이름 int x, y, sum; // x에서 y까지의 합은 sum void read(); // x, y 값을 읽어 들이는 함수 void write(); // sum을 출력하는 함수 protected: LoopAdder(string name=\u0026rdquo;\u0026quot;) { // 루프의 이름을 받는다. 초깃값은 \u0026quot;\u0026rdquo; this-\u0026gt;name = name; } int getX() { return x; } int getY() { return y; } virtual int calculate() = 0; // 순수 가상 함수. 루프를 돌며 합을 구하는 함수 public: void run(); // 연산을 진행하는 함수 }; void LoopAdder::read() { // x, y 입력 cout \u0026laquo; name \u0026laquo; \u0026ldquo;:\u0026rdquo; \u0026laquo; endl; cout \u0026laquo; \u0026ldquo;처음 수에서 두번째 수까지 더한다. 두 수를 입력하세요 \u0026raquo; \u0026ldquo;; cin \u0026raquo; x \u0026raquo; y; } void LoopAdder::write() { // 결과 sum 출력 cout \u0026laquo; x \u0026laquo; \u0026ldquo;에서 \u0026quot; \u0026laquo; y \u0026laquo; \u0026ldquo;까지의 합 = \u0026quot; \u0026laquo; sum \u0026laquo; \u0026quot; 입니다\u0026rdquo; \u0026laquo; endl; } void LoopAdder::run() { read(); // x, y를 읽는다 sum = calculate(); // 루프를 돌면서 계산한다. write(); // 결과 sum을 출력한다. } class ForLoopAdder : public LoopAdder { string str; public: ForLoopAdder(string str=\u0026rdquo;\u0026quot;) : LoopAdder(str) { this-\u0026gt;str = str; } virtual int calculate() { int sum=0; int x = getX(); int y = getY(); for(; x\u0026lt;=y; x++) sum += x; return sum; } }; int main() { ForLoopAdder forLoop(\u0026ldquo;For Loop\u0026rdquo;); forLoop.run(); } 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 9장 6번 (1) 2019.11.21 명품 C++ programming 실습 문제 9장 5번 (2) 2019.11.21 명품 C++ programming 실습 문제 9장 4번 (3) 2019.11.21 명품 C++ programming 실습 문제 9장 2번 (2) 2019.11.20 명품 C++ programming 실습 문제 9장 1번 (1) 2019.11.20 ","permalink":"https://blog.sobamemil.com/posts/008-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-9%EC%9E%A5-3%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e다음 추상 클래스 LoopAdder가 있다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  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\u003c/td\u003e\n          \u003ctd\u003eclass LoopAdder { // 추상 클래스  string name; // 루프의 이름  int x, y, sum; // x에서 y까지의 합은 sum  void read(); // x, y 값을 읽어 들이는 함수  void write(); // sum을 출력하는 함수  protected:  LoopAdder(string name=\u0026quot;\u0026quot;) { // 루프의 이름을 받는다. 초깃값은 \u0026quot;\u0026quot;  this-\u0026gt;name = name;  }  int getX() { return x; }  int getY() { return y; }  virtual int calculate() = 0; // 순수 가상 함수. 루프를 돌며 합을 구하는 함수  public:  void run(); // 연산을 진행하는 함수  };    void LoopAdder::read() { // x, y 입력  cout \u0026laquo; name \u0026laquo; \u0026ldquo;:\u0026rdquo; \u0026laquo; endl;  cout \u0026laquo; \u0026ldquo;처음 수에서 두번째 수까지 더한다. 두 수를 입력하세요 \u0026raquo; \u0026ldquo;;  cin \u0026raquo; x \u0026raquo; y;  }    void LoopAdder::write() { // 결과 sum 출력  cout \u0026laquo; x \u0026laquo; \u0026ldquo;에서 \u0026quot; \u0026laquo; y \u0026laquo; \u0026ldquo;까지의 합 = \u0026quot; \u0026laquo; sum \u0026laquo; \u0026quot; 입니다\u0026rdquo; \u0026laquo; endl;  }    void LoopAdder::run() {  read(); // x, y를 읽는다  sum = calculate(); // 루프를 돌면서 계산한다.  write(); // 결과 sum을 출력한다.  }\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eLoopAdder 클래스를 상속받아 다음 main() 함수와 실행 결과처럼 되도록 ForLoopAdder 클래스를 작성하라. ForLoopAdder 클래스의 calculate() 함수는 for 문을 이용하여 합을 구한다.\u003c/p\u003e","title":"명품 C++ programming 실습 문제 9장 3번"},{"content":"문제 :\n다음은 단위를 변환하는 추상 클래스 Converter이다.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 class Converter { protected: double ratio; virtual double convert(double src)=0; // src를 다른 단위로 변환한다. virtual string getSourceString()=0; // src 단위 명칭 virtual string getDestString()=0; // dest 단위 명칭 public: Converter(double ratio) { this-\u0026gt;ratio = ratio; } void run(){ double src; cout \u0026laquo; getSourceString() \u0026laquo; \u0026ldquo;을 \u0026quot; \u0026laquo; getDestString() \u0026laquo; \u0026ldquo;로 바꿉니다. \u0026ldquo;; cout \u0026laquo; getSourceString() \u0026laquo; \u0026ldquo;을 입력하세요\u0026raquo; \u0026ldquo;; cin \u0026raquo; src; cout \u0026laquo; \u0026ldquo;변환 결과 : \u0026quot; \u0026laquo; convert(src) \u0026laquo; getDestString() \u0026laquo; endl; } }; Converter 클래스를 상속받아 km를 mile(마일)로 변환하는 KmToMile 클래스를 작성하라. main() 함수와 실행 결과는 다음과 같다.\n1 2 3 4 int main() { KmToMile toMile(1.609344); // 1마일은 1.609344 KM toMile.run(); } 목적 및 힌트 :\n추상 클래스를 상속받는 파생 클래스 만들기\n코드 :\n1 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 #include using namespace std; class Converter { protected: double ratio; virtual double convert(double src)=0; // src를 다른 단위로 변환한다. virtual string getSourceString()=0; // src 단위 명칭 virtual string getDestString()=0; // dest 단위 명칭 public: Converter(double ratio) { this-\u0026gt;ratio = ratio; } void run(){ double src; cout \u0026laquo; getSourceString() \u0026laquo; \u0026ldquo;을 \u0026quot; \u0026laquo; getDestString() \u0026laquo; \u0026ldquo;로 바꿉니다. \u0026ldquo;; cout \u0026laquo; getSourceString() \u0026laquo; \u0026ldquo;을 입력하세요\u0026raquo; \u0026ldquo;; cin \u0026raquo; src; cout \u0026laquo; \u0026ldquo;변환 결과 : \u0026quot; \u0026laquo; convert(src) \u0026laquo; getDestString() \u0026laquo; endl; } }; class KmToMile : public Converter { double mile; public: KmToMile(double mile) : Converter(mile) { this-\u0026gt;mile = mile; } virtual double convert(double src){ return src/mile; } virtual string getSourceString(){ return \u0026ldquo;Km\u0026rdquo;; } virtual string getDestString() { return \u0026ldquo;Mile\u0026rdquo;; } }; int main() { KmToMile toMile(1.609344); // 1마일은 1.609344 KM toMile.run(); } 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 9장 6번 (1) 2019.11.21 명품 C++ programming 실습 문제 9장 5번 (2) 2019.11.21 명품 C++ programming 실습 문제 9장 4번 (3) 2019.11.21 명품 C++ programming 실습 문제 9장 3번 (2) 2019.11.21 명품 C++ programming 실습 문제 9장 1번 (1) 2019.11.20 ","permalink":"https://blog.sobamemil.com/posts/005-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-9%EC%9E%A5-2%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제 :\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e다음은 단위를 변환하는 추상 클래스 Converter이다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16\u003c/td\u003e\n          \u003ctd\u003eclass Converter {  protected:  double ratio;  virtual double convert(double src)=0; // src를 다른 단위로 변환한다.  virtual string getSourceString()=0; // src 단위 명칭  virtual string getDestString()=0; // dest 단위 명칭  public:  Converter(double ratio) { this-\u0026gt;ratio = ratio; }  void run(){  double src;  cout \u0026laquo; getSourceString() \u0026laquo; \u0026ldquo;을 \u0026quot; \u0026laquo; getDestString() \u0026laquo; \u0026ldquo;로 바꿉니다. \u0026ldquo;;  cout \u0026laquo; getSourceString() \u0026laquo; \u0026ldquo;을 입력하세요\u0026raquo; \u0026ldquo;;  cin \u0026raquo; src;  cout \u0026laquo; \u0026ldquo;변환 결과 : \u0026quot; \u0026laquo; convert(src) \u0026laquo; getDestString() \u0026laquo; endl;  }  };\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eConverter 클래스를 상속받아 km를 mile(마일)로 변환하는 KmToMile 클래스를 작성하라. main() 함수와 실행 결과는 다음과 같다.\u003c/p\u003e","title":"명품 C++ programming 실습 문제 9장 2번"},{"content":"문제:\n다음은 단위를 변환하는 추상 클래스 Converter이다.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #include using namespace std; class Converter { protected: double ratio; virtual double convert(double src)=0; // src를 다른 단위로 변환한다. virtual string getSourceString()=0; // src 단위 명칭 virtual string getDestString()=0; // dest 단위 명칭 public: Converter(double ratio) { this-\u0026gt;ratio = ratio; } void run(){ double src; cout \u0026laquo; getSourceString() \u0026laquo; \u0026ldquo;을 \u0026quot; \u0026laquo; getDestString() \u0026laquo; \u0026ldquo;로 바꿉니다. \u0026ldquo;; cout \u0026laquo; getSourceString() \u0026laquo; \u0026ldquo;을 입력하세요\u0026raquo; \u0026ldquo;; cin \u0026raquo; src; cout \u0026laquo; \u0026ldquo;변환 결과 : \u0026quot; \u0026laquo; convert(src) \u0026laquo; getDestString() \u0026laquo; endl; } }; Colored by Color Scripter Converter 클래스를 상속받아 달러를 원화로 환산하는 WonToDollar 클래스를 작성하라. main() 함수와 실행 결과는 다음과 같다.\n1 2 3 4 int main() { WonToDollar wd(1010); // 1달러에 1010원 wd.run(); } Colored by Color Scripter 목적 및 힌트:\n추상 클래스를 상속받는 파생 클래스 만들기\n코드 :\n1 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 #include using namespace std; class Converter { protected: double ratio; virtual double convert(double src)=0; // src를 다른 단위로 변환한다. virtual string getSourceString()=0; // src 단위 명칭 virtual string getDestString()=0; // dest 단위 명칭 public: Converter(double ratio) { this-\u0026gt;ratio = ratio; } void run(){ double src; cout \u0026laquo; getSourceString() \u0026laquo; \u0026ldquo;을 \u0026quot; \u0026laquo; getDestString() \u0026laquo; \u0026ldquo;로 바꿉니다. \u0026ldquo;; cout \u0026laquo; getSourceString() \u0026laquo; \u0026ldquo;을 입력하세요\u0026raquo; \u0026ldquo;; cin \u0026raquo; src; cout \u0026laquo; \u0026ldquo;변환 결과 : \u0026quot; \u0026laquo; convert(src) \u0026laquo; getDestString() \u0026laquo; endl; } }; class WonToDollar : public Converter { // Converter class 상속 int won; public: WonToDollar(int won) : Converter(won) { this-\u0026gt;won = won; } // 매개변수가 있는 Converter 생성자 호출 double convert(double src){ return src/won; } virtual string getSourceString(){ return \u0026ldquo;원\u0026rdquo;; } virtual string getDestString(){ return \u0026ldquo;달러\u0026rdquo;; } }; int main() { WonToDollar wd(1010); // 1달러에 1010원 wd.run(); } 공유하기\n게시글 관리\n코딩은 내일부터 ;\n저작자표시 (새창열림)\n\u0026lsquo;💻 개발 \u0026amp; CS \u0026gt; C++ 프로그래밍\u0026rsquo; 카테고리의 다른 글 명품 C++ programming 실습 문제 9장 6번 (1) 2019.11.21 명품 C++ programming 실습 문제 9장 5번 (2) 2019.11.21 명품 C++ programming 실습 문제 9장 4번 (3) 2019.11.21 명품 C++ programming 실습 문제 9장 3번 (2) 2019.11.21 명품 C++ programming 실습 문제 9장 2번 (2) 2019.11.20 ","permalink":"https://blog.sobamemil.com/posts/004-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-9%EC%9E%A5-1%EB%B2%88/","summary":"\u003cp\u003e\u003cstrong\u003e문제:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e다음은 단위를 변환하는 추상 클래스 Converter이다.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19\u003c/td\u003e\n          \u003ctd\u003e#include\u003ciostream\u003e  using namespace std;    class Converter {  protected:  double ratio;  virtual double convert(double src)=0; // src를 다른 단위로 변환한다.  virtual string getSourceString()=0; // src 단위 명칭  virtual string getDestString()=0; // dest 단위 명칭  public:  Converter(double ratio) { this-\u0026gt;ratio = ratio; }  void run(){  double src;  cout \u0026laquo; getSourceString() \u0026laquo; \u0026ldquo;을 \u0026quot; \u0026laquo; getDestString() \u0026laquo; \u0026ldquo;로 바꿉니다. \u0026ldquo;;  cout \u0026laquo; getSourceString() \u0026laquo; \u0026ldquo;을 입력하세요\u0026raquo; \u0026ldquo;;  cin \u0026raquo; src;  cout \u0026laquo; \u0026ldquo;변환 결과 : \u0026quot; \u0026laquo; convert(src) \u0026laquo; getDestString() \u0026laquo; endl;  }  };  \u003ca href=\"http://colorscripter.com/info#e\"\u003eColored by Color Scripter\u003c/a\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eConverter 클래스를 상속받아 달러를 원화로 환산하는 WonToDollar 클래스를 작성하라. main() 함수와 실행 결과는 다음과 같다.\u003c/p\u003e","title":"명품 C++ programming 실습 문제 9장 1번"}]