1
4X4행렬을 저장할 수 있는 2차원 배열 matrix[4][4]를 선언하라.
키보드로부터 정수를 읽어 들여 matrix[4][4]에 저장하는 함수를 정의하라.
=> void readMatrix(int m[][4],int row,int col);
대각성 상에 있는 원소들의 합을 반환하는 함수를 정의하라.
=>int diagnolSum(int m[][4],int row,int col,int dir);
dir이 1이면 1시 방향 대각선에 대한 합을 구한다.
dir이 -1이면 11시 방향 대각선에 대한 합을 구한다.
위 함수를 이용하여 행렬에 16개의 데이터를 저장한 후 1시 방향과 11시 방향 대각선의 합을 구하여 출력하는 프로그램을 작성하시오.
#include <iostream>
using namespace std;
void readMatrix(int m[][4], int row, int col);
int diagonalSum(int m[][4], int row, int col, int dir);
void readMatrix(int m[][4], int row, int col) {
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
cin >> m[i][j];
}
}
}
int diagonalSum(int m[][4], int row, int col, int dir) {
int sum = 0;
if (dir == 1) {
for (int i = 0; i < row; i++) {
sum += m[i][row - i - 1];
}
}
if (dir ==-1) {
for (int i = row-1; i >=0; i--) {
sum += m[i][i];
}
}
cout << sum<<" "<<endl;
return sum;
}
int main() {
int matrix[4][4];
readMatrix(matrix, 4, 4);
cout << "1시방향 대각선 합";
diagonalSum(matrix, 4, 4, 1);
cout << "11시 방향 대각선 합";
diagonalSum(matrix, 4, 4, -1);
}

2
4X4행렬을 저장할 수 있는 2차원 배열 matrix[4][4]를 선언하라.
1과 10사이의 랜덤 넘버를 발생시켜 matrix[4][4]를 채워서 반환하는 함수를 정의하라. 단 11시 방향 대각선 상의 원소는 0으로 채운다.
=> void fillMartrix(int m[][4],int row,int col);
11시 방향 대각선을 기준으로 이 보다 위 또는 아래에 있는 원소들의 합을 반환하는 함수를 정의하라.
=>int triangularSum(int m[][4],int row,int col,int dir);
dir이 1이면 대각선 위에 있는 원소들의 합을 구한다.
dir이 -1이면 대각선 아래에 있는 원소들의 합을 구한다.
위 함수를 이용하여 행렬에 16개의 데이터를 저장한 후 대각선의 위/아래 원소들의 합을 구하여 출력하는 프로그램을 작성하시오.
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
void fillMatrix(int m[][4], int row, int col);
int triangularSum(int m[][4], int row, int col, int dir);
void fillMatrix(int m[][4], int row, int col) {
srand(time(0));
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
m[i][j] = rand() % 10 + 1;
}
}
for (int i = 0; i < row; i++) m[i][i] = 0;
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
cout << m[i][j] << " ";
cout << endl;
}
}
int triangularSum(int m[][4], int row, int col, int dir) {
int sum = 0;
if (dir == -1) {
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
if (i > j)sum += m[i][j];
}
}
}
if (dir == 1) {
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
if (i < j)sum += m[i][j];
}
}
}
cout << sum << endl;
return sum;
}
int main() {
int matrix[4][4];
fillMatrix(matrix, 4, 4);
cout << "대각선 위에 있는 원소 합:";
triangularSum(matrix, 4, 4, 1);
cout << "대각선 아래에 있는 원소 합:";
triangularSum(matrix, 4, 4, -1);
}

3
다음 급수를 계산하는 재귀 함수 double sum(int m,int n)을 정의하시오.
1+1/2+1/3+....+1/n
n값을 읽어 들인 후 sum(1,n)을 호출하여 1부터 1/n까지의 합을 구해서 출력하는 프로그램
#include <iostream>
using namespace std;
double sum(int m, int n);
double sum(int m, int n) {
if (n == 1)return 1;
return 1/ (double)n+ sum(m, n - 1);
}
int main() {
int n;
cout << "n="; cin >> n;
cout << "sum=" << sum(1, n) << endl;
return 0;
}
'💻 Programming > C | C++' 카테고리의 다른 글
[C++] 코딩과제 9 (0) | 2023.01.06 |
---|---|
[C++] 코딩과제 8 (0) | 2023.01.06 |
[C++] 코딩 과제 7 (0) | 2023.01.06 |
[C++] 코딩과제 1~6 (0) | 2022.11.01 |