관리 메뉴

FU11M00N

[ C++ ] C++ 포인터 | C++ 로또 , 랜덤 숫자, 최대값 구하기 본문

Programming/C++

[ C++ ] C++ 포인터 | C++ 로또 , 랜덤 숫자, 최대값 구하기

호IT 2021. 3. 10. 13:35

- 포인터

 

포인터는 실행 중 메모리의 주소 값

 

주소를 이용하여 메모리에 직접 값을 쓰거나 메모리로부터 값을 읽어올 수 있음.

 

 

- 포인터 변수

 

포인터, 즉 주소를 저장하는 변수

 

int n=5;
int *p; // 포인터 변수 p 선언

p = &n; // p 에는 n의 주소값이 들어가게 된다.

 

 

*p 를 출력하면, n 의 값 5가 출력되는 것을 알 수 있습니다.

 

 

 

#include <iostream>
using namespace std;

int main() { 

    int n = 5;
    int* p;
    p = &n;
    cout << p << endl << *p;
    return 0;
    
 }

 

 

실행결과는 아래와 같습니다.

 

 

 

 

- C++ 랜덤 숫자 출력

 

 

#include <iostream>
#include <time.h>
#include <stdlib.h>

using namespace std;
int main() {
	srand(time(NULL));
	cout << rand() % 100 + 1 << endl; // 1-100 사이의 임의의 숫자 출력
}


 

 

 

 

- C++ 로또 프로그램 (중복 고려 x)

 

 

#include <iostream>
#include <time.h>
#include <stdlib.h>

using namespace std;
int main() {
	srand(time(NULL));

	for (int i = 0; i < 6; i++) {
		cout << rand() % 45 + 1 << endl;
	}
}

 

 

 

중복을 고려 한다면, 배열을 써서 값이 같으면 i 를 하나 감소시키고 다시 랜덤을 돌리면 된다.

 

 

 

 

- C++ 배열을 이용해 합과 최대값 구하기

 

 

#include <iostream>
#include <time.h>
#include <stdlib.h>

using namespace std;

void getMax() {

	int arr[10];
	int sum = 0, max=0;

	for (int i = 0; i < 10; i++) {
		arr[i] = rand() % 100 + 1;
		sum += arr[i];
		if (arr[i] > max) {
			max = arr[i];
		}
	}
	cout << "합 :" << sum << "최대값 : " << max;

}
int main() {
	srand(time(NULL));

	getMax();

 }

 

 

 

- C++ 을 이용한 오름차순 / 내림차순 정렬

 

 

#include <iostream>
#include <time.h>
#include <stdlib.h>

using namespace std;

void up(int* arr){
	int tmp = 0;
	for (int i = 0; i < 9; i++) {
		for (int j = i; j < 9; j++) {
			if (arr[i] > arr[j]) {
				tmp = arr[i];
				arr[i] = arr[j];
				arr[j] = tmp;
			}
		}
		cout << arr[i] << " ";
	}
}
void down(int* arr) {
	int tmp = 0;
	for (int i = 0; i < 9; i++) {
		for (int j = i; j < 9; j++) {
			if (arr[i] < arr[j]) {
				tmp = arr[i];
				arr[i] = arr[j];
				arr[j] = tmp;
			}
		}
		cout << arr[i] << " ";
	}
}
void getMax() {

	int arr[10];
	int sum = 0, max = 0, tmp =0;

	for (int i = 0; i < 10; i++) {
		arr[i] = rand() % 100 + 1;
		sum += arr[i];
		if (arr[i] > max) {
			max = arr[i];
		}
	}
	cout << "합 :" << sum << "최대값 : " << max <<endl;
	cout << "오름차순 정렬 ===> ";
	up(arr);
	cout <<endl<< "내림차순 정렬 ===> ";
	down(arr);

}
int main() {
	srand(time(NULL));
	getMax();
	return 0;
}
Comments