배열

ppparkta·2022년 3월 29일
1

자료구조

목록 보기
1/9
post-thumbnail

*이 글은 2022년 1월~2월 진행한 스터디를 옮긴 글입니다.

22.01.05 배열 복습(필기)


복습 중 작성한 코드

(1차원 배열)고려사항 적용하여 평균 구하기

#include <iostream>
#include <math.h>
using namespace std;

void main() {
	const int student = 10; //학생수
	const int clas = 2; //과목수
	double avg[clas] = {}; //과목별 평균
	int score[student] = {75,60,88,21,89,51,78,98,100,54}; //과목1 학생 점수
	int score2[student] = {88,21,89,51,78,21,89,51,78,98}; //과목2 학생 점수
	int sum = 0; //과목별 합
	double average = 0; //전체 점수 평균
	//과목별 평균 구하기
	//과목1 평균 구하기
	for (int i = 0; i < student; i++){sum += score[i];}
	avg[0] = (double)sum/student;
	sum = 0;
	cout << "과목1의 평균은" << avg[0] << "입니다." << endl;
	//과목2 평균 구하기
	for (int i = 0; i < student; i++){sum += score2[i];}
	avg[1] = (double)sum / student;
	cout << "과목2의 평균은" << avg[1] << "입니다." << endl;
	//전체 평균 구하기
	for (int k = 0; k < clas; k++) {average += avg[k];}
	average = average / clas;
	//전체 평균 출력
	cout << "학생 평균은 "<< std::round(average)<< "입니다." <<endl;
}

-(1차원 배열)과목별/학생별 평균 구하기

#include <iostream>
using namespace std;

void main() {
	const int student = 10;
	const int clas = 3;
	double class_avg[clas] = {};
	double stud_avg[student] = {};
	int lang_scores[10] = { 75,60,88,45,87,80,50,54,76,99 };
	int eng_scores[10] = {85,80,89,78,48,59,62,75,100,100};
	int math_scores[10] = {70,50,80,69,85,84,67,53,79,85};

	//과목별 성적 평균
	for (int i = 0; i < student; i++) {	class_avg[0] += lang_scores[i];	}
	class_avg[0] /= student;
	cout << "lang과목의 성적 평균은 " << class_avg[0] << "입니다." << endl;
	for (int i = 0; i < student; i++) {	class_avg[1] += eng_scores[i];	}
	class_avg[1] /= student;
	cout << "eng과목의 성적 평균은 " << class_avg[1] << "입니다." << endl;
	for (int i = 0; i < student; i++) {	class_avg[2] += math_scores[i];}
	class_avg[2] /= student;
	cout << "math과목의 성적 평균은 " << class_avg[2] << "입니다." << endl;
	//학생별 성적 평균
	for (int j = 0; j < student; j++)
 {
		stud_avg[j] = (lang_scores[j] + eng_scores[j] + math_scores[j]) / clas;
		cout << "학생 " << j << "의 평균 성적은 " << stud_avg[j] << "입니다." << endl;
	}
}

(3차원 배열)과목별 평균 구하기

/*
- 어느 고등학교 3학년에는 3개의 반이 존재한다. (1반, 2반, 3반)
- 각 반에는 학생 수도 모두 10명으로 동일하다고 가정한다.
- 중간고사로 국, 영, 수 3과목의 개인별 점수가 발표되었다. (점수는 임의로 입력 가능)
- 다음 통계 자료가 필요하다.
1, 각 반별 과목별 평균 (1반 국어, 1반 영어, 1반 수학, 2반 국어 ... 등 반별/과목별 평균 출력 )
2. 해당 학년의 과목별 평균 (국어, 영어, 수학 과목별 평균)
(참고) 출력값의 경우, 배열로 저장해도 되고, 그냥 출력해도 됩니다.
(고려사항) 과목수가 늘어날 수 있음을 고려하여 프로그램 개발 */
#include<iostream>
using namespace std;
#define clas 3
#define subject 3
#define student 10

void main() {
	double avg = 0;
	double middle[3][3][10] = {
	{ {20,50,61,20,10,6,48,59,87,54},{10,6,48,59,87,54,98,45,82,16},{87,54,98,45,82,51,32,65,98,54} },
	{ {4,98,45,82,51,32,6,89,45,20},{48,59,87,54,98,45,48,59,87,54},{54,98,45,82,51,32,65,98,84,12} },
	{ {10,6,48,59,87,54,98,45,82,16},{20,50,61,20,10,6,48,59,87,54},{48,59,87,54,98,45,48,59,87,54} } };
	//각 반별 / 과목별 평균
	for (int i = 0; i < clas; i++) {
		for (int j = 0; j < subject; j++){
			for (int k = 0; k < student; k++) {
				avg += middle[i][j][k];
			}
			cout << i + 1 << "반의 " << j + 1 << "번 과목 성적 평균은 " << avg/student << "입니다." << endl;
			avg = 0;
		}
	}
	//반 상관없이 과목별로 평균 내기
	for (int i = 0; i < subject; i++) {
		for (int j = 0; j < clas; j++) {
			for (int k = 0; k < student; k++) {
				avg += middle[j][i][k];
			}
		}
		cout << i + 1 << "번 과목의 전체 평균은 " << avg / (student * clas) << "입니다." << endl;
		avg = 0;
	}
}

(배열과 포인터)배열의 시작주소와 배열의 0번째 원소의 주소 비교

#include<iostream>
using namespace std;

void main() {
	//배열과 포인터의 연관성 찾기
	int inc[100] = {};
	cout << "&inc=" << &inc << '\n' 
		 << "inc=" << inc << '\n'
		 << "&inc[0]=" << &inc[0] << endl;
}
profile
겉촉속촉

0개의 댓글