6장. 실습문제
1.
add() 함수를 호출하는 main() 함수는 다음과 같다
1)
#include <iostream>
using namespace std;
int add(int *a, int b) {
int sum = 0;
for (int i = 0; i < b; i++)
sum += a[i];
return sum;
}
int add(int *a, int b, int *c) {
int sum = 0;
for (int i = 0; i < 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);
int d = add(a, 5, b);
cout << c << endl;
cout << d << endl;
}
C++
복사
2)
#include <iostream>
using namespace std;
int add(int *a, int b, int *c = NULL) {
int sum = 0;
for (int i = 0; i < 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);
int d = add(a, 5, b);
cout << c << endl;
cout << d << endl;
}
C++
복사
2.
함수 big() 을 호출하는 경우는 다음과 같다
#include <iostream>
using namespace std;
int big(int a, int b, int c = 100) {
int big = a;
int max = c;
if (big < b)
big = b;
if (big > max)
big = max;
return big;
}
int main() {
int x = big(3, 5);
int y = big(300, 60);
int z = big(30, 60, 50);
cout << x << ' ' << y << ' ' << z << endl;
}
C++
복사
3.
다음과 같은 static 멤버를 가진 Random 클래스를 완성하라. 그리고 Random 클래스를 이용해 다음과 같이 랜덤한 값을 출력하는 main() 함수도 작성하라. main()에서 Random 클래스의 seed() 함수를 활용하라
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
class Random {
public:
static void seed() { srand((unsigned)time(0)); } // 씨드 설정
// min과 max 사이의 랜덤 정수 리턴
static int nextInt (int min = 0, int max = 32767);
static char nextAlphabet();
static double nextDouble(); // 0보다 크거나 같고, 1보다 적은 실수 리턴
};
int Random::nextInt(int min, int max) {
int a = 0;
while (true) {
a = rand() % (max+1);
if (min <= a)
break;
}
return a;
}
char Random::nextAlphabet() {
char b = 0;
while (true) {
b = rand() % 'z';
if (b >= 'a' || ('A' <= b && b <= 'Z'))
break;
}
return b;
}
double Random::nextDouble() {
double c = -(rand() / (double)(RAND_MAX+1));
return c;
}
int main() {
Random::seed();
cout << "1에서 100까지 랜덤한 정수 10개를 출력합니다\n";
for (int i = 0; i < 10; i++) {
cout << Random::nextInt(1, 100) << ' ';
}
cout << endl << "알파벳을 랜덤하게 10개를 출력합니다\n";
for (int i = 0; i < 10; i++) {
cout << Random::nextAlphabet() << ' ';
}
cout << endl << "랜덤한 실수를 10개를 출력합니다\n";
for (int i = 0; i < 10; i++) {
cout << Random::nextDouble() << ' ';
if (i == 4) cout << endl;
}
}
C++
복사
ㅇ