Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++

  1. C++로 구현하는 복소수 곱셈 프로그램 완벽 가이드

    복소수(複素數)는 a + bi 형태로 표현되는 수입니다. 여기서 i는 허수 단위를 의미하며, a와 b는 각각 실수입니다. 복소수의 대표적인 예시는 다음과 같습니다.2+3i5+9i4+2i이번 글에서는 두 개의 복소수를 입력받아 곱셈 결과를 계산하는 C++ 프로그램을 살펴보겠습니다.예제 코드#include<iostream>using namespace std;int main(){    int x1, y1, x2, y2, x3, y3;    cout<&

  2. C++ 재귀 유클리드 호제법으로 두 수의 최대공약수(GCD) 구하기

    최대공약수(GCD, Greatest Common Divisor)란 두 숫자를 모두 나눌 수 있는 가장 큰 수를 의미합니다.예를 들어 63과 21이라는 두 숫자가 있다고 가정해 보겠습니다.63 = 7 * 3 * 3 21 = 7 * 3두 수의 공통 약수 중 가장 큰 값은 7 × 3 = 21이므로, 63과 21의 최대공약수는 21입니다.재귀적 유클리드 호제법이란?유클리드 호제법(Euclidean Algorithm)은 두 양의 정수 a와 b에 대해 b와 a % b(a를 b로 나눈 나머지)를 반복적으로 계산하다가, b가 0이 되는 시점의 a

  3. C++로 구현하는 Fisher-Yates(피셔-예이츠) 알고리즘: 배열 셔플링 완벽 가이드

    피셔-예이츠(Fisher-Yates) 알고리즘은 배열 요소들의 무작위 순열(random permutation)을 생성하는 알고리즘입니다. 즉, 배열의 모든 요소를 무작위로 섞는(shuffle) 데 사용됩니다. 이 알고리즘은 편향되지 않았기(unbiased) 때문에 가능한 모든 순열이 동일한 확률로 나타난다는 것이 큰 장점입니다.아래는 C++로 배열 셔플링을 위한 피셔-예이츠 알고리즘을 구현한 프로그램입니다.예제 코드#include <iostream> #include <stdlib.h> using namespac

  4. C++로 구현하는 행렬의 LU 분해 프로그램

    행렬의 LU 분해(LU Decomposition)는 하나의 행렬을 하삼각행렬(Lower Triangular Matrix)과 상삼각행렬(Upper Triangular Matrix)의 곱 형태로 나타내는 기법입니다. 이름 그대로 LU에서 L은 Lower(하삼각), U는 Upper(상삼각)를 의미합니다. 다음은 행렬의 LU 분해에 대한 간단한 예시입니다. 주어진 행렬: 1 1 0 2 1 3 3 1 1 L 행렬: 1 0 0 2 -1 0 3 -2 -5 U 행렬: 1 1 0 0 1 -3 0 0 1 이어서 행렬의 LU 분해를 수행하는 C++

  5. C++로 이진수와 8진수 상호 변환하는 프로그램 만들기

    컴퓨터 시스템에서 이진수(binary)는 이진법으로 표현되고, 8진수(octal)는 8진법으로 표현됩니다. 이진수는 밑(base)이 2인 수 체계이며, 8진수는 밑이 8인 수 체계입니다. 이진수와 이에 대응하는 8진수의 예는 다음과 같습니다. 이진수8진수010101200111711001311000020 아래는 이진수를 8진수로, 8진수를 이진수로 변환하는 C++ 프로그램입니다. 예제 코드 #include <iostream> #include <cmath> using namespace std; int BinaryT

  6. C++로 8진수를 2진수로 변환하는 방법

    컴퓨터 시스템에서 2진수(binary)는 2진 기수법으로, 8진수(octal)는 8진 기수법으로 표현됩니다. 2진수는 밑(base)이 2인 수 체계이고, 8진수는 밑이 8인 수 체계입니다.대표적인 2진수와 이에 대응하는 8진수의 예시는 다음과 같습니다.2진수8진수0110115001015101102601010128진수를 2진수로 변환하는 프로그램아래는 8진수를 2진수로 변환하는 C++ 프로그램입니다.예제 코드#include <iostream> #include <cmath> using namespace std; i

  7. C++로 병렬 배열(Parallel Array) 구현하기

    병렬 배열(parallel array)은 여러 개의 배열을 하나의 논리적 구조로 묶어 사용하는 자료 표현 방식입니다. 각 배열은 모두 동일한 크기를 가지며, 같은 인덱스 위치에 있는 요소들은 서로 연관되어 있어 하나의 공통된 개체(entity)를 나타냅니다. 병렬 배열의 예시 employee_name = { Harry, Sally, Mark, Frank, Judy } employee_salary = {10000, 5000, 20000, 12000, 5000} 위 예시에서는 5명의 직원 정보가 2개의 배열에 나누어 저장되어 있습니다

  8. C++로 가변 길이 배열 구현하기: 동적 메모리 할당 완벽 가이드

    가변 길이 배열(Variable Length Array)은 사용자의 필요에 따라 크기를 자유롭게 지정할 수 있는 배열입니다. 즉, 컴파일 시점에 크기가 고정되는 일반 배열과 달리, 실행 시점에 원하는 크기를 유동적으로 결정할 수 있습니다.C++에서는 new 연산자를 활용한 동적 메모리 할당을 통해 가변 길이 배열을 손쉽게 구현할 수 있습니다. 아래는 그 구현 예제입니다.예제 코드#include <iostream> #include <string> using namespace std; int main() {

  9. C++ 벡터(Vector) 구현 프로그램 – 메뉴 기반 동적 배열 예제

    벡터(Vector)란 무엇인가?벡터는 요소가 삽입되거나 삭제될 때 스스로 크기를 조절할 수 있는 동적 배열(dynamic array)입니다. 벡터의 요소들은 연속된 메모리 공간에 저장되며, 저장 공간의 할당과 해제는 컨테이너가 자동으로 처리하기 때문에 개발자가 직접 메모리를 관리할 필요가 없습니다.이번 글에서는 사용자가 메뉴를 선택하여 벡터의 다양한 연산을 수행할 수 있는 C++ 프로그램을 살펴보겠습니다.예제 코드다음은 벡터를 구현한 전체 C++ 프로그램입니다.#include <iostream> #include <v

  10. C++ 구조체를 활용해 두 거리(피트-인치)를 더하는 프로그램 만들기

    구조체란 무엇인가?구조체(structure)는 서로 다른 데이터 타입의 항목들을 하나로 묶어 놓은 집합입니다. 여러 자료형으로 이루어진 복잡한 데이터 구조를 만들 때 매우 유용하며, C++에서는 struct 키워드를 사용하여 정의합니다.예를 들어, 피트와 인치 단위의 거리를 표현하는 구조체는 다음과 같이 정의할 수 있습니다.struct DistanceFI {    int feet;    int inch;};위 구조체는 하나의 거리를 피트(feet)와 인치(inc

  11. 구조체를 함수에 전달하여 복소수를 더하는 C++ 프로그램

    복소수란 무엇인가?복소수는 a+bi 형태로 표현되는 수입니다. 여기서 i는 허수 단위이며, a와 b는 실수입니다. 복소수의 대표적인 예는 다음과 같습니다.2+5i3-9i8+2i이 글에서는 구조체(structure)를 함수에 전달하여 두 복소수를 더하는 방법을 C++ 프로그램으로 살펴보겠습니다.전체 예제 코드#include <iostream>using namespace std;typedef struct complexNumber {   float real;   float

  12. C++로 문자열 요소를 사전순(Lexicographical Order)으로 정렬하는 방법

    사전순 정렬이란?사전순(Lexicographical order)은 목록에 있는 단어들을 알파벳 순서를 기준으로 배열하는 방식을 의미합니다. 영어 사전에서 단어가 배치되는 순서와 동일한 개념입니다. 예를 들어 다음과 같습니다.단어 목록:HarryAdamSam사전순으로 정렬된 단어:AdamHarrySam이번 글에서는 C++를 사용하여 사용자가 입력한 여러 개의 문자열을 사전순으로 정렬하는 프로그램을 살펴보겠습니다.C++ 예제 코드요소를 사전순으로 정렬하는 프로그램은 다음과 같습니다.#include <iostream>using

  13. C++에서 rand()와 srand() 함수로 난수 생성하기

    C++에서는 rand() 함수를 사용하여 난수(random number)를 생성할 수 있습니다. 그리고 srand() 함수는 rand()가 사용하는 난수 생성기의 시드(seed)를 설정하는 역할을 합니다.시드 값에 따라 출력 결과가 어떻게 달라지는지 두 가지 예제를 통해 살펴보겠습니다.예제 1: 고정된 시드 사용#include <iostream> #include <stdlib.h> #include <time.h> using namespace std; int main() { srand(1);

  14. 비트 연산자만으로 덧셈을 구현하는 C++ 프로그램 완벽 가이드

    비트 연산자(Bitwise Operator)는 데이터를 구성하는 개별 비트(bit)를 직접 조작하는 연산을 수행하는 연산자입니다. 대표적인 비트 연산자로는 비트 AND(&), 비트 OR(|), 비트 XOR(^) 등이 있습니다.일반적으로 덧셈은 + 연산자를 사용하지만, 비트 연산자만을 활용해서도 덧셈을 구현할 수 있습니다. 그 원리는 다음과 같습니다.XOR(^): 자리올림(carry)을 제외한 두 수의 부분합을 계산합니다.AND(&): 자리올림이 발생하는 비트 위치를 찾아냅니다.왼쪽 시프트(<< 1): 자리올

  15. C++ substr() 함수로 부분 문자열 쉽게 추출하기

    부분 문자열(Substring)이란 하나의 문자열에서 일부를 잘라낸 문자열을 의미합니다. C++에서는 substr() 함수를 사용하면 손쉽게 부분 문자열을 추출할 수 있습니다.substr() 함수의 매개변수substr() 함수는 두 개의 매개변수를 받으며, 그 역할은 다음과 같습니다.pos: 부분 문자열이 시작되는 위치(인덱스)를 지정합니다.len: 추출할 부분 문자열의 문자 개수를 지정합니다.즉, str.substr(pos, len) 형태로 호출하면 str 문자열의 pos 위치부터 len개의 문자를 새로운 문자열로 반환받게 됩니다

  16. C++ strstr() 함수 완벽 가이드: 문자열에서 부분 문자열 찾는 방법

    C++ strstr() 함수란?strstr() 함수는 C++의 <string.h> 헤더 파일에 미리 정의되어 있는 표준 라이브러리 함수입니다. 이 함수는 하나의 문자열 안에서 특정 부분 문자열(substring)이 처음 나타나는 위치를 찾는 데 사용됩니다. 문자열 검색은 널 종료 문자인 \0을 만나면 중단되며, \0 자체는 검색 대상에 포함되지 않습니다.strstr() 함수의 문법char *strstr( const char *str1, const char *str2)위 문법에서 strstr()은 str1 문자열 내에서 s

  17. C++ 다중 상속 완벽 가이드: 개념부터 예제 코드까지

    다중 상속(Multiple Inheritance)이란?다중 상속은 하나의 클래스가 둘 이상의 기반(base) 클래스로부터 상속받는 것을 의미합니다. 다중 상속을 활용하면 파생 클래스가 여러 기반 클래스의 멤버 변수와 함수를 한꺼번에 물려받을 수 있어 코드 재사용성이 크게 향상됩니다. 이는 C++를 대표하는 객체 지향 프로그래밍의 핵심 기능 중 하나입니다.다중 상속의 구조를 나타낸 다이어그램은 아래와 같습니다.C++ 다중 상속 구현 예제다음은 C++에서 다중 상속을 구현한 전체 프로그램입니다.#include <iostream&g

  18. C++ isspace() 함수란? 공백 문자 판별 방법과 예제 코드 총정리

    isspace() 함수란?isspace() 함수는 <ctype.h>(C++에서는 <cctype>) 헤더 파일에 미리 정의되어 있는 함수로, 인자로 전달된 문자가 공백 문자(whitespace)인지 아닌지를 판별합니다. 문자가 공백이면 0이 아닌 값(true)을, 공백이 아니면 0(false)을 반환합니다.C 표준에서 isspace()가 공백으로 판별하는 문자는 다음과 같습니다.스페이스 ( )수평 탭 (\t)줄바꿈 (\n)수직 탭 (\v)폼 피드 (\f)캐리지 리턴 (\r)예제 1: 문자열에서 공백 개수 세기다음

  19. C++ 정적 데이터 멤버(Static Data Member) 완벽 이해하기

    정적 데이터 멤버(static data member)는 static 키워드를 사용하여 선언된 클래스 멤버입니다. 정적 데이터 멤버의 가장 큰 특징은 객체가 몇 개 생성되더라도 클래스 전체에서 단 하나의 복사본만 존재한다는 점입니다. 모든 객체가 이 멤버를 공유하기 때문입니다. 또한 첫 번째 클래스 객체가 생성될 때 정적 데이터 멤버는 항상 0으로 초기화됩니다.정적 데이터 멤버의 문법정적 데이터 멤버의 선언 문법은 다음과 같습니다.static data_type data_member_name;위 문법에서 static 키워드가 사용되며,

  20. C++ 참조에 의한 호출(Call by Reference)로 세 숫자를 순환 순서로 교환하는 방법

    개요C++에서는 참조에 의한 호출(Call by Reference) 방식을 활용하면 세 개의 숫자를 함수에 전달하여 순환 순서(Cyclic Order)로 손쉽게 교환할 수 있습니다. 이 글에서는 cyclicSwapping() 함수를 정의하고, 포인터를 통해 원본 변수의 값을 직접 변경하는 방법을 단계별로 살펴봅니다.순환 교환이란?순환 교환은 세 변수의 값을 한 칸씩 밀어내듯이 바꾸는 연산입니다. 예를 들어 x = 2, y = 5, z = 7일 때 순환 교환을 수행하면 다음과 같은 결과가 됩니다.x ← z의 값 (2 → 7)y ← x

Total 5981 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:21/300  20-컴퓨터/Page Goto:1 15 16 17 18 19 20 21 22 23 24 25 26 27