Super Kawaii Cute Cat Kaoani
본문 바로가기
💻 Programming/C | C++

[C++] 코딩과제 10

by wonee1 2023. 1. 6.
728x90

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;

}
728x90

'💻 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