*이 글은 2022년 1월~2월 진행한 스터디를 옮긴 글입니다.
(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;
}