실습 2-1
#include <iostream>
using namespace std;
#define N 5
int main(){
int i;
int a[N];
for(i=0;i<N;i++){
cout << "a[" <<i << "] : ";
cin >> a[i];
}
cout << "각 요소의 값" <<endl;
for(i=0;i<N;i++){
cout << "a[" << i << "] = " <<a[i] <<endl;
}
return 0;
}
실습 2-2
#include <iostream>
using namespace std;
int main(){
int i;
int a[5] = {1,2,3,4,5};
int na=sizeof(a)/sizeof(a[0]);
cout << "배열 a의 요소 개수 : " << na <<endl;
for(i=0;i<na;i++)
cout << "a["<<i<<"] = " <<a[i] <<endl;
return 0;
}
int na=sizeof(a)/sizeof(a[0]); > 요소의 개수를 세는 코드
실습 2-3
#include <iostream>
using namespace std;
int main(){
int *x=new int;
*x= sizeof(int);
if(x==NULL){
cout << "메모리 할당에 실패했습니다. ";
} else {
*x=57;
cout << "*x = " <<*x;
} delete x;
return 0;
}
c++의 동적할당부분 공부한 것
실습 2-4
#include <iostream>
using namespace std;
int main(){
int i;
int na;
int *a = new int [na] ;
cout << "요소 개수 : ";
cin >> na;
*a = sizeof(int);
if(a==NULL)
cout << "메모리 확보에 실패했습니다. ";
else {
cout << na << "개의 정수를 입력하세요." <<endl;
for(i=0;i<na;i++){
cout << "a["<<i<<"] : ";
cin >> a[i];
}
for(i=0;i<na;i++)
cout << "a[" <<i<<"] = " << a[i] <<endl;
delete []a;
}
return 0;
}
실습 2-5
#include <iostream>
using namespace std;
int maxof(const int a[], int n){
int i;
int max = a[0];
for(i=1;i<n;i++)
if(a[i]>max) max=a[i];
return max;
}
int main(){
int i;
int *height;
int number;
cout << "사람 수 : ";
cin >> number;
*height = sizeof(int);
cout << "사람의 키를 입력하세요." <<endl;
for(i=0;i<number;i++){
cout << "height[" <<i<<"] : ";
cin >> height[i];
}
cout << "최댓값은 " << maxof(height, number) << "입니다. ";
delete []height;
return 0;
}
> 이유를 모르겠다,, 마지막 최댓값이 안보인다.
실습 2-6
> 실습 5에서 srand(time(NULL)); 을 추가하면 각 요소에 난수대입이 자동으로 이루어진다.
실습 2-7
#include <iostream>
using namespace std;
#define swap(type, x, y) do { type t = x; x = y; y = t;} while (0)
void ary_reverse(int a[], int n)
{
int i;
for (i = 0; i < n / 2; i++)
swap(int, a[i], a[n - i - 1]);
}
int main(void)
{
int i;
int *x = new int;
int nx;
cout << "요소 개수 : ";
cin >> nx;
*x = sizeof(int);
cout <<nx<< "개의 정수를 입력하세요.\n";
for (i = 0; i < nx; i++) {
cout << "x[" << i << "]: " ;
cin >> x[i];
}
ary_reverse(x, nx);
cout << "배열의 요소를 역순으로 정렬했습니다.\n";
for (i = 0; i < nx; i++)
cout << "x[" <<i << "] =" << x[i] << endl;
delete []x;
return 0;
}
실습 2-8
#include <iostream>
using namespace std;
int card_convr(unsigned x, int n, char d[])
{
char dchar[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int digits = 0;
if (x == 0)
d[digits++] = dchar[0];
else
while (x) {
d[digits++] = dchar[x % n];
x /= n;
}
return digits;
}
int main(void)
{
int i;
unsigned no;
int cd;
int dno;
char cno[512];
int retry;
cout << "10진수를 기수 변환합니다.";
do {
cout << "변환하는 음이 아닌 정수 : ";
cin >> no;
do {
cout << "어떤 진수로 변환할까요? (2-36) : ";
cin >> cd;
} while (cd < 2 || cd> 36);
dno = card_convr(no, cd, cno);
cout <<cd<<"진수로는";
for (i = dno - 1; i >= 0; i--)
cout << cno[i];
cout << "입니다.\n";
cout << "한 번 더 할까요? (1 … 예 /0 … 아니오) : ";
cin >> retry;
} while (retry == 1);
return 0;
}
연습문제1
#include <iostream>
using namespace std;
int minof(const int a[], int n)
{
int i;
int min = a[0];
for (i = 1; i < n; i++)
if (a[i] < min) min = a[i];
return min;
}
int main(void)
{
int i;
int *height=new int;
int number;
cout << "인원 :";
cin >> number;
*height = sizeof(int);
cout << number << " 명의 키를 입력하세요.\n";
for (i = 0; i < number; i++) {
cout << "height[" << i << "] : ";
cin >> height[i];
}
cout << "최솟값: " << minof(height, number) <<endl;
delete [] height;
return 0;
}
연습문제 7
#include <iostream>
using namespace std;
#define swap(type, x, y) do {type t = x; x = y; y = t;} while (0)
int card_conv(unsigned x, int n, char d[])
{
int i;
char dchar[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int digits = 0;
if (x == 0)
d[digits++] = dchar[0];
else {
while (x) {
cout << n << x << "...." << dchar[x % n];
cout << " + ---------- \n";
d[digits++] = dchar[x % n];
x /= n;
}
cout << x;
}
for (i = 0; i <digits / 2; i++)
swap(char, d[i], d[digits - i - 1]);
return digits;
}
int main(void)
{
int i;
unsigned no;
int cd;
int dno;
char cno[512];
int retry;
cout << "10 진수를 기수로 변환합니다.";
do {
cout << "변환하는 음이 아닌 정수 : ";
cin >> no;
do {
cout << "무슨 진수로 변환합니까?(2 ~ 36) : ";
cin >> cd;
} while (cd < 2 || cd > 36);
dno = card_conv(no, cd, cno);
cout << cd << "진수로 ";
for (i = 0; i <dno; i++)
cout << cno[i];
cout << "입니다.\n";
cout << "다시 한 번 할까요?(1 예 / 0 아니오): ";
cin >> retry;
} while (retry == 1);
return 0;
}
실습 2-9
#include <iostream>
using namespace std;
int main(void)
{
int i, n;
unsigned long counter = 0;
for (n = 2; n <= 1000; n++) {
for (i = 2; i < n; i++) {
counter++;
if (n % i == 0)
break;
}
if (n == i)
cout << n <<endl;
}
cout << "나눗셈을 실행한 횟수 : " << counter <<endl;
return 0;
}
실습 2-10
#include <iostream>
using namespace std;
int main(void)
{
int i, n;
unsigned long counter = 0;
for (n = 2; n <= 1000; n++) {
for (i = 2; i < n; i++) {
counter++;
if (n % i == 0)
break;
}
if (n == i)
cout << n <<endl;
}
cout << "나눗셈을 실행한 횟수 : " << counter <<endl;
return 0;
}
실습 2-11
#include <iostream>
using namespace std;
int main(void)
{
int i, n;
int prime[500];
int ptr = 0;
unsigned long counter = 0;
prime[ptr++] = 2;
prime[ptr++] = 3;
for (n = 5; n <= 1000; n += 2) {
int flag = 0;
for (i = 1; counter++, prime[i] * prime[i] <= n; i++) {
counter++;
if (n % prime[i] == 0) {
flag = 1;
break;
}
}
if (!flag)
prime[ptr++] = n;
}
for (i = 0; i < ptr; i++)
cout << prime[i] <<endl;
cout << "곱셈과 나눗셈을 실행한 횟수 : " << counter <<endl;
return 0;
}
실습 2-12
#include <iostream>
using namespace std;
int mdays[][12] = {
{ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
{ 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
};
int isleap(int year)
{
return year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
}
int dayofyear(int y, int m, int d)
{
int i;
int days = d;
for (i = 1; i < m; i++)
days += mdays[isleap(y)][i - 1];
return days;
}
int main(void)
{
int year, month, day;
int retry;
do {
cout << "년 : "; cin >>year;
cout << "월 : "; cin >>month;
cout << "일 : "; cin >>day;
cout << year << "년의 " << dayofyear(year, month, day) << "일째입니다. " <<endl;
cout << "다시 할까요? (1 … 예/0 … 아니오) : ";
cin >> retry;
} while (retry == 1);
return 0;
}
연습문제 11
#include <iostream>
using namespace std;
int mdays[][12] = {
{ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }, { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
};
int isleap(int year)
{
return year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
}
int dayofyear(int y, int m, int d)
{
while (--m)
d += mdays[isleap(y)][m - 1];
return (d);
}
int main(void)
{
int year, month, day;
int retry;
do {
cout << "년 : "; cin >> year;
cout << "월 : "; cin >>month;
cout << "일 : "; cin >>day;
cout << dayofyear(year, month, day) << "일째" <<endl;
cout << "다시 한 번 할까요?(1 예 / 0 아니오): ";
cin >> retry;
} while (retry == 1);
return 0;
}
'자료구조' 카테고리의 다른 글
[Do it 자료구조] 4단원 스택과 큐 c++로 풀기 (0) | 2021.03.07 |
---|---|
Do it 자료구조 3단원 c++로 풀기 (0) | 2021.03.07 |
[Do it 자료구조] 1단원 연습문제 c++로 풀기 (0) | 2021.02.25 |
[스터디 준비] 2. 기본 자료구조 (0) | 2021.02.18 |
[스터디 준비] 01. 기본 알고리즘 정리 (0) | 2021.02.18 |