[C++] 10주차 과제 리뷰

yeohn·2022년 12월 13일
0

2022-2 C++ 과제 리뷰

목록 보기
10/10

문제

다음 헤더를 사용하여 행렬에서 지정된 열의 모든 요소의 합계를 구하는 함수를 작성하여라.

const in SIZE = 4;
double sumColumn(const double m[][SIZE], 
int rowSize, int columnIndex);

3 X 4 행렬을 읽고 각 열의 합계를 출력하는 테스트 프로그램을 작성하여라.

(문제 출처 - C++로 시작하는 객체지향 프로그래밍 8.1)


잘못 작성한 코드

#include <iostream>
using namespace std;

const int SIZE = 4;
double sumColumn(const double m[][SIZE], int rowSize, int columnIndex);

int main()
{
	double matrix[3][4];
	cout << "Enter a 3-by-4 matrix row by row: ";

	for (int i = 0; i < 3; i++)
		for (int j = 0; j < 4; j++)
		{
			cin >> matrix[i][j];
			sumColumn(matrix, i, j); // 배열 전체를 다시 돌리면 안 됨
		}
}

double sumColumn(const double m[][SIZE], int rowSize, int columnIndex)
{
	double sum = 0;
	for (int C = 0; C < SIZE; C++)
		for (int R = 0; R < rowSize; R++)
		{
			sum += m[R][C]; //

			cout << "Sum of the elements at column " << C <<
            " is " << sum << endl;
		} // 열의 합이기 때문에 중첩 for문을 쓰지 않고 rowSize를 전송해야함
}

작성한 코드

#include <iostream>
using namespace std;

const int SIZE = 4;
double sumColumn(const double m[][SIZE], int rowSize, int columnIndex);

int main()
{
	double matrix[3][4];
	cout << "Enter a 3-by-4 matrix row by row: " << endl;

	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 4; j++)
		{
			cin >> matrix[i][j];
		}
	}
	for (int j = 0; j < 4; j++)
		cout << "Sum of the elements at column " << j << 
        " is " << sumColumn(matrix, 3, j) << endl;
	// 따로 반복문을 줘서 j번째 열을 변수로 전달하고 
    // 그 열의 합을 행만큼 더해서 들어오게 함

	return 0;
}

double sumColumn(const double m[][SIZE], int rowSize, int columnIndex)
{
	double sum = 0;
	for (int R = 0; R < rowSize; R++)
	{
		sum += m[R][columnIndex]; // 각 열의 합이니까 행만큼만 돌리기
	}

	return sum;
}

0개의 댓글