보관함
JUNGOL 기초다지기 16 구조체
niamdank
2020. 1. 6. 21:39
프로그래밍에서 가장 기초적인 내용을 다루는 기초 다지기입니다.
이번 포스팅은 기초 다지기 중 열여섯 번째인 구조체 문제를 풀어보도록 하겠습니다.
기초 내용인 만큼 다른 설명없이 문제와 코드만 간단하게 작성하도록 하겠습니다.
613 : 구조체 - 자가진단1
#include <iostream>
#include <string>
using namespace std;
struct Person
{
string name;
string school;
int grade;
};
int main()
{
Person p;
cin >> p.name >> p.school >> p.grade;
cout << "Name : " << p.name << endl;
cout << "School : " << p.school << endl;
cout << "Grade : " << p.grade << endl;
}
614 : 구조체 - 자가진단2
#include <iostream>
#include <string>
using namespace std;
struct Person
{
string school;
int grade;
};
int main()
{
Person p1{ "Jejuelementary", 6 }, p2;
cin >> p2.school >> p2.grade;
cout << p1.grade << " grade in " << p1.school << " School\n";
cout << p2.grade << " grade in " << p2.school << " School\n";
}
615 : 구조체 - 자가진단3
#include <iostream>
#include <string>
using namespace std;
struct Person
{
string name;
int ko;
int en;
};
int main()
{
Person people[2];
for (int i = 0; i < 2; ++i)
{
cin >> people[i].name >> people[i].ko >> people[i].en;
}
for (int i = 0; i < 2; ++i)
{
cout << people[i].name << ' ' << people[i].ko << ' ' << people[i].en << endl;
}
int avg[2]{
(people[0].ko + people[1].ko) / 2,
(people[0].en + people[1].en) / 2
};
cout << "avg " << avg[0] << ' ' << avg[1] << endl;
}
616 : 구조체 - 자가진단4
#include <iostream>
using namespace std;
template <typename T>
struct Point
{
T x;
T y;
};
int main()
{
Point<int> points[3];
Point<float> c{ 0, 0 };
for (int i = 0; i < 3; ++i)
{
cin >> points[i].x >> points[i].y;
c.x += points[i].x;
c.y += points[i].y;
}
cout.setf(ios::fixed);
cout.precision(1);
c.x /= 3.f;
c.y /= 3.f;
cout << '(' << c.x << ", " << c.y << ")\n";
}
617 : 구조체 - 자가진단5
#include <iostream>
#include <string>
using namespace std;
struct Person
{
string name;
int height;
};
int main()
{
Person shortestPerson{ "", 9999 };
Person temp;
for (int i = 0; i < 5; ++i)
{
cin >> temp.name >> temp.height;
if (temp.height < shortestPerson.height)
{
shortestPerson.name = temp.name;
shortestPerson.height = temp.height;
}
}
cout << shortestPerson.name << ' ' << shortestPerson.height << endl;
}
618 : 구조체 - 자가진단6
#include <iostream>
#include <string>
using namespace std;
struct Person
{
string name;
int height;
float weight;
};
int main()
{
Person people[5];
for (int i = 0; i < 5; ++i)
{
cin >> people[i].name >> people[i].height >> people[i].weight;
}
cout.setf(ios::fixed);
cout.precision(1);
for (int i = 0; i < 5; ++i)
{
for (int j = 0; j < 4 - i; ++j)
{
if (people[j].name > people[j + 1].name)
{
swap(people[j], people[j + 1]);
}
}
}
cout << "name" << endl;
for (int i = 0; i < 5; ++i)
{
cout << people[i].name << ' ' <<
people[i].height << ' ' << people[i].weight << endl;
}
cout << endl;
for (int i = 0; i < 5; ++i)
{
for (int j = 0; j < 4 - i; ++j)
{
if (people[j].weight < people[j + 1].weight)
{
swap(people[j], people[j + 1]);
}
}
}
cout << "weight" << endl;
for (int i = 0; i < 5; ++i)
{
cout << people[i].name << ' ' <<
people[i].height << ' ' << people[i].weight << endl;
}
}
195 : 구조체 - 형성평가1
#include <iostream>
#include <string>
using namespace std;
struct Person
{
string name;
string tel;
string addr;
};
int main()
{
Person people;
cin >> people.name >> people.tel >> people.addr;
cout << "name : " << people.name << endl;
cout << "tel : " << people.tel << endl;
cout << "addr : " << people.addr << endl;
}
196 : 구조체 - 형성평가2
#include <iostream>
#include <string>
using namespace std;
struct Person
{
string name;
string tel;
string addr;
};
int main()
{
Person people[3];
for (int i = 0; i < 3; ++i)
{
cin >> people[i].name >> people[i].tel >> people[i].addr;
}
for (int i = 0; i < 3; ++i)
{
int fast{ i };
for (int j = i + 1; j < 3; ++j)
{
if (people[fast].name > people[j].name)
fast = j;
}
swap(people[fast], people[i]);
}
cout << "name : " << people[0].name << endl;
cout << "tel : " << people[0].tel << endl;
cout << "addr : " << people[0].addr << endl;
}
197 : 구조체 - 형성평가3
그림이 나왔지만 사실 간단하게 생각하면 왼쪽 아래 좌표는 더 작은 값을 선택하고 오른쪽 위 값은 더 큰 값을 선택하면 됩니다.
#include <iostream>
using namespace std;
struct Point
{
int x;
int y;
};
struct Box
{
Point lb;
Point ru;
};
int main()
{
Box a, b;
cin >> a.lb.x >> a.lb.y >> a.ru.x >> a.ru.y;
cin >> b.lb.x >> b.lb.y >> b.ru.x >> b.ru.y;
Box c;
c.lb.x = a.lb.x < b.lb.x ? a.lb.x : b.lb.x;
c.lb.y = a.lb.y < b.lb.y ? a.lb.y : b.lb.y;
c.ru.x = a.ru.x > b.ru.x ? a.ru.x : b.ru.x;
c.ru.y = a.ru.y > b.ru.y ? a.ru.y : b.ru.y;
cout << c.lb.x << ' ' << c.lb.y << ' ' << c.ru.x << ' ' << c.ru.y << endl;
}
198 : 구조체 - 형성평가4
#include <iostream>
using namespace std;
struct Person
{
int height;
float weight;
};
int main()
{
Person f, m;
cin >> f.height >> f.weight;
cin >> m.height >> m.weight;
Person c;
c.height = (f.height + m.height) / 2 + 5;
c.weight = (f.weight + m.weight) / 2 - 4.5f;
cout.setf(ios::fixed);
cout.precision(1);
cout << "height : " << c.height << "cm\n";
cout << "weight : " << c.weight << "kg\n";
}
199 : 구조체 - 형성평가5
#include <iostream>
#include <string>
using namespace std;
struct Person
{
string name;
int score[3];
int total{ 0 };
};
int main()
{
int n;
cin >> n;
Person* people = new Person[n];
for (int i = 0; i < n; ++i)
{
cin >> people[i].name;
for (int j = 0; j < 3; ++j)
{
cin >> people[i].score[j];
people[i].total += people[i].score[j];
}
}
for (int i = 0; i < n; ++i)
{
for (int j = 0; j < n - i - 1; ++j)
{
if (people[j].total < people[j + 1].total)
{
swap(people[j], people[j + 1]);
}
}
}
for (int i = 0; i < n; ++i)
{
cout << people[i].name << ' ';
for (int j = 0; j < 3; ++j)
{
cout << people[i].score[j] << ' ';
}
cout << people[i].total << endl;
}
delete[] people;
}
http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&sca=10g0
JUNGOL | 문제은행 1 페이지
경기도 안양시 동안구 평촌대로 109 협성골드프라자 601호 TEL : 031-360-4144 FAX : 031-388-0996 E-mail : hancomc@hotmail.com, comkiwer@naver.com Copyrightⓒ 2010-2019 jungol. All right reserved. TOP
www.jungol.co.kr