정적 상수 정적 const는 기본적으로 static(저장 지정자)과 const(유형 한정자)의 조합입니다. static은 변수의 수명과 가시성/접근성을 결정합니다. 이는 변수가 정적 변수로 선언된 경우 프로그램이 실행되는 동안 내내 메모리에 남아 있는 반면 일반 또는 자동 변수는 함수(변수가 정의된 곳)가 끝나면 소멸된다는 것을 의미합니다. const는 유형 한정자입니다. 유형 한정자는 유형 시스템을 통해 값에 대한 추가 정보를 표현하는 데 사용됩니다. 변수가 const 유형 한정자를 사용하여 초기화되면 값이 더 이상 변경되지
순환 정렬은 다른 내부 정렬 알고리즘과 달리 원래 배열에 대한 총 쓰기 수의 관점에서 이론적으로 최적인 비교 정렬인 내부 불안정 정렬 알고리즘입니다. 이는 정렬할 순열을 사이클로 분해할 수 있다는 아이디어를 기반으로 하며, 사이클은 개별적으로 회전하여 정렬된 결과를 얻을 수 있습니다. 거의 모든 다른 종류와 달리 항목은 단순히 작업을 방해하기 위해 배열의 다른 곳에 기록되지 않습니다. 각 값은 이미 올바른 위치에 있는 경우 0번 기록되거나 올바른 위치에 한 번 기록됩니다. 이것은 완전한 내부 정렬에 필요한 최소 덮어쓰기 횟수와 일
양의 정수 1, 2, 3, 4...를 자연수라고 합니다. 이 프로그램은 사용자로부터 양의 정수를 취하며(사용자가 n을 입력했다고 가정) 이 프로그램은 13 값을 표시합니다. +23 +33 +....+n3 . Input: n = 3 Output: 36 설명 13+23+33 = 1 +8+27 = 36 이 프로그램은 사용자로부터 양의 정수를 취하며(사용자가 n을 입력했다고 가정) 이 프로그램은 13 값을 표시합니다. +23 +33 +....+n3 . 예시 #include <iostream> using namespace st
주어진 숫자가 2의 거듭제곱인지 확인합니다. 먼저 아래의 숫자가 2의 거듭제곱인지 아닌지 확인합니다. 이 코드는 숫자가 홀수인지 확인한 다음 0 또는 홀수가 될 때까지 동시에 나눕니다. 0이 되면 거듭제곱 2이고 그렇지 않으면 그렇지 않습니다. 더 나은 선택은 숫자의 로그를 취하는 것입니다. 정수이면 n은 2의 거듭제곱이고 그렇지 않으면 n입니다. 2의 거듭제곱인 숫자: 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048 ... 22 = 4 25 = 32 210 = 1024 Input: 8 O
프로그램은 문자열을 가져와서 공백을 제거합니다. 이것은 설명과 함께 다음 샘플의 공간을 절약하려는 경우에 유용합니다. Input: Hello World Output: HelloWorld 설명 문자열이나 문장에서 공백을 제거하거나 삭제하려면 사용자에게 문자열을 입력하도록 요청해야 합니다. 이제 공백 확인을 시작합니다. 공백이 발견되면 마지막 문자까지 공백에서 뒤쪽으로 다음 문자를 배치하기 시작하고 문자열에 있는 모든 공백을 제거하기 위해 다음 공백을 계속 확인합니다. 예시 #include <iostream> #includ
여기서 우리는 C++에서 mutable 키워드가 무엇인지 볼 것입니다. mutable은 C++의 스토리지 클래스 중 하나입니다. 가변 데이터 멤버는 항상 변경할 수 있는 그런 종류의 멤버입니다. 객체가 const 유형인 경우에도 마찬가지입니다. 하나의 멤버만 변수로, 다른 멤버는 상수로 필요하면 변경 가능하게 만들 수 있습니다. 아이디어를 얻기 위해 한 가지 예를 살펴보겠습니다. 예시 #include <iostream> using namespace std; class MyClass{ int x; &
여기에서 C++, Java 및 Python 간의 몇 가지 기본적인 차이점을 볼 수 있습니다. 처음에는 C++와 Java의 차이점을 보게 될 것이고, 그 다음에는 Java와 Python의 차이점을 보게 될 것입니다. 주제 C++ 자바 메모리 관리 포인터, 구조, 공용체 및 참조를 사용합니다. 포인터를 지원하지 않습니다. 참조를 지원합니다. 또한 스레드, 인터페이스를 지원합니다. 라이브러리 저수준 기능 라이브러리 다양한 기능을 갖춘 광범위한 라이브러리 다중 상속 일반 클래스를 사용한 다중 상속 지원 인터페이스만
프로그램은 이진 트리의 리프 노드를 왼쪽에서 오른쪽으로 인쇄해야 하지만 문제는 하나의 스택만 사용하는 것입니다. push() 함수를 통해 이진 트리의 노드를 삽입하고 pop() 작업을 통해 잎 노드를 표시합니다. 리프 노드는 왼쪽 및 오른쪽 포인터가 NULL인 끝 노드로 특정 노드가 부모 노드가 아님을 의미합니다. 예시 Input : 12 21 32 41 59 33 70 Output : 41 59 33 70 스택은 LIFO 구조인 데이터 구조로, 상단 포인터가 삽입된 마지막 요소를 가리키므로 리프 노드가 스택의 마지막에 삽
이진 트리가 주어지면 함수는 한 줄씩 트리의 레벨 순서 순회를 찾아야 합니다. 레벨 순서 순회:왼쪽 루트 오른쪽, 즉 루트 값보다 먼저 노드의 왼쪽 자식을 인쇄한 다음 오른쪽 자식으로 이동하지만 여기서는 왼쪽에서 시작하여 오른쪽에서 끝나는 한 줄씩 수행해야 합니다. 주어진 바이너리 트리의 노드. 위에 주어진 이진 트리는 다음 출력을 생성합니다 - Level 0: 3 Level 1: 2 1 Level 2: 10 20 30 알고리즘 START Step 1 -> create a structure of a node as &nb
이진 트리가 주어지면 이 함수는 노드에 저장된 키의 이진 값을 생성한 다음 해당 이진법에서 설정된 비트 수(1)를 반환합니다. 예시 다음과 같은 키를 갖는 이진 트리:10 3 211 140 162 100 및 146 키 동등한 바이너리 비트 설정(출력) 10 1010 2 3 0011 2 211 11010011 5 140 10001100 3 162 10100010 3 100 1100100 3 146 10010010 3 여기서 __builtin_popcount 함수를 사용하고 있습니다. 함수 프로토타입은 다
이진 트리가 주어지면 1에서 n까지 시작하여 노드에 저장된 모든 키와 관련된 수준을 인쇄하는 작업입니다. 위의 트리에서 노드는 - 레벨 13에서 10, 레벨 2140에서 211, 레벨 3에서 162, 100 및 146 키가 주어지면 프로그램은 특정 키의 레벨을 인쇄해야 합니다. 예시 입력:10 3 211 140 162 100 146출력:10레벨이 1레벨 3이 2레벨 211이 2레벨 140이 3레벨 162레벨이 3입니다. 100레벨이 3레벨 146레벨이 3입니다. 알고리즘 노드의 레벨을 찾는 함수 생성 void 수준(Node
이진 트리가 주어지면 프로그램은 트리의 홀수 레벨에 있는 노드를 인쇄해야 하고 이진 트리의 레벨은 1에서 n까지 시작해야 합니다. 언급된 것이 없으므로 재귀 또는 반복과 같은 두 가지 접근 방식 중 하나를 구현할 수 있습니다. 재귀적 접근 방식을 사용하고 있기 때문에 프로그램은 홀수 레벨의 노드를 가져와 반환하는 함수를 재귀적으로 호출합니다. 위의 이진 트리에서 - Nodes at level 1: 10 Nodes at level 2: 3 and 211 Nodes at level 3: 140, 162, 100 and 146
이진 트리가 주어지면 프로그램은 루트에서 리프까지 여러 경로를 찾아야 하므로 모든 경로가 인쇄되어야 하지만 문제는 재귀를 사용하지 않는 것입니다. 재귀 없이 트리를 수행하는 것이 제약 조건이므로 트리를 반복적으로 탐색합니다. 따라서 이를 달성하기 위해 루트 요소를 저장할 STL 맵을 사용할 수 있으며 레벨 순서 순회를 통해 리프 노드가 식별될 때마다 루트 노드를 가리키는 맵 포인터가 있으므로 루트에서 리프까지의 경로를 인쇄합니다. 위의 트리에는 루트에서 리프까지 도달하기 위해 생성될 수 있는 여러 경로가 있습니다 - 10
바이너리 트리가 주어지면 프로그램은 주어진 많은 경로 중에서 루트에서 리프까지의 최단 경로를 찾아야 합니다. 우리는 트리를 왼쪽에서 오른쪽으로 순회하므로 루트에서 리프까지의 최단 경로가 여러 개 있는 경우 프로그램은 첫 번째 탐색된 최단 경로를 트리의 왼쪽에 인쇄합니다. 레벨 순서 순회를 사용하여 각 레벨을 순회하는 큐를 사용할 수 있으며, 루트에서 리프까지의 최단 경로가 되기 때문에 레벨 수가 가장 적은 경로가 인쇄됩니다. 위의 트리에서 루트에서 리프까지의 여러 경로는 10 -> 3 (this one is the s
고유한 노드의 이진 트리와 이진 트리의 경로를 인쇄하려는 이진 트리의 두 노드가 제공됩니다. 예를 들어 − 노드 140에서 211 사이의 경로를 인쇄하고 싶으므로 출력은 다음과 같아야 합니다. - Output: 140->3->10->211 아이디어는 루트 노드에서 두 노드로 가는 경로를 찾아 두 개의 개별 벡터 또는 배열(path1 및 path2)에 저장하는 것입니다. 이제 두 가지 다른 경우가 발생합니다 - 두 노드가 루트 노드의 다른 하위 트리에 있는 경우 - 두 노드가 하나는 왼쪽에 다른 하나는 오른
이진 트리가 주어지면 리프 노드를 인쇄한 다음 해당 리프 노드를 제거한 다음 트리에 노드가 남지 않을 때까지 반복해야 합니다. 예시 따라서 문제의 출력은 다음과 같아야 합니다. - 6 7 9 13 143 421 접근 우리는 DFS를 적용하는 접근 방식을 채택했습니다. 임시 값을 적용하려면 모든 값에 0을 할당한 다음 최대(두 자식의 값)+1 값으로 모든 노드를 할당합니다. . 알고리즘 오른쪽 =NULL, 반환(노드)FUNCTION void postod(struct Node* node, vector
프로그래밍에서 알다시피 코드 실행은 한 줄씩 수행됩니다. 이제 이 흐름을 변경하기 위해 C++는 주로 특정 줄에서 특정 코드를 건너뛰는 데 사용되는 두 개의 명령문 break 및 coninue를 제공합니다. . 다음은 계속과 중단의 중요한 차이점입니다. Sr. 아니요. 키 나누기 계속 1 기능 break 문은 주로 break가 선언된 곳마다 while, do-while, for 또는 switch 문과 같은 둘러싸는 루프를 종료하는 데 사용됩니다. Continue 문은 주로 continue가 선언될 때마다 루프의 나머지 부분을
가상 기능이란 무엇입니까? 가상 함수는 기본 클래스에 정의될 때 정의가 없는 메서드입니다. 이 메소드는 상위 클래스에서 검은색으로 남아 있고 하위 클래스에서 재정의됩니다. 추상 클래스란 무엇입니까? 추상 클래스는 정의에 추상 멤버 또는 하나 이상의 순수 가상 함수가 있는 클래스입니다. 추상 클래스는 인스턴스화(객체 생성)할 수 없습니다. 상속만 가능하고 메소드를 덮어쓸 수 있습니다. 가상 소멸자가 있을 수 있나요? 예, 이것은 C++에서 합법적이지만 소멸자는 자식 클래스 대신 기본 클래스를 위한 것입니다. 모든 가상 기능을 재
맵은 키와 값 쌍의 형태로 정보를 저장하는 데이터 구조입니다. C++에서 지도는 STL로 정의됩니다. (표준 템플릿 라이브러리) 및 키를 정렬된 형식으로 저장합니다. 지도를 정의하는 구문 - map<key_type , value_type> map_name; 맵의 이 두 데이터 중 하나의 데이터 유형은 모든 데이터 유형이 될 수 있습니다. 기본 데이터 유형 또는 파생 데이터 유형을 맵의 키 또는 값 데이터 유형으로 가질 수 있습니다. 맵 키의 데이터 유형으로 모든 데이터 유형을 사용할 수 있습니다. 사용자가 정의한
math 또는 cmath에 포함된 수학 함수를 사용하여 C++ 프로그래밍 언어로 수학 계산을 수행할 수 있습니다. 도서관. 이러한 수학 함수는 복잡한 수학 계산을 수행하도록 정의됩니다. 하나씩 배워봅시다 − 사인 sin 방법은 각도의 인수로 주어진 각도의 sin을 계산하는 데 사용됩니다. 이 함수는 하나의 이중 정수를 인수로 받아들이고 sin(x°)의 값인 이중 정수를 반환합니다. 이중 죄(이중) 호출 구문 double x = sin(23.4); 예 #include <iostream> #include <math