23.03.23 Day38

오윤범·2023년 3월 23일
0

C++ programming

  • 동적할당

#include<iostream>
#include<string.h>
#include<stdlib.h>
using namespace std;
char * makestradr(int len)
{
	char* str = (char*)malloc(sizeof(char) * len);
	return str;
}
int main(void)
{
	char* str = makestradr(20);
	strcpy(str, "I am so happy~");
	cout << str << endl;
	free(str);
	return 0;
}

  • 구조체

#include<iostream>
#include<stdio.h>
using namespace std;
struct human
{
	char name[20];
	int age;
};
int main()
{
	struct human h = { "홍길동", 23 };
	cout << "이름:" << h.name << endl;
	cout << "나이:" << h.age << endl;
	return 0;
}

  • 구조체 + 함수

#include<iostream>
using namespace std;
#define id_len	20
#define max_spd	200
#define fuel_step	2
#define acc_step	10
#define brk_step	10

struct Car
{
	char gamerid[id_len];//소유자id
	int fuelgauge;//연료량
	int curspeed;//현재속도
};

void showcarstate(const Car& car)
{
	cout << "소유자ID " << car.gamerid << endl;
	cout << "연료량 " << car.fuelgauge <<"%" << endl;
	cout << "현재속도 " << car.curspeed<<"km/s" << endl << endl;
}

void accel(Car& car)
{
	if (car.fuelgauge <= 0)
		return;
	else
		car.fuelgauge -= fuel_step;

	if (car.curspeed + acc_step >= max_spd)
	{
		car.curspeed = max_spd;
		return;
	}

	car.curspeed += acc_step;
}

void Break(Car & car)
{
	if (car.curspeed < brk_step)
	{
		car.curspeed = 0;
		return;
	}
	car.curspeed -= brk_step;
}

int main(void)
{
	Car run99 = { "run99",100,0 };
	accel(run99);
	accel(run99);
	showcarstate(run99);
	Break(run99);
	showcarstate(run99);

	Car sped77 = { "sped77",100,0 };
	accel(sped77);
	Break(sped77);
	showcarstate(sped77);
	return 0;
}

  • Class

#include<iostream>
using namespace std;
class Myclass
{
private://외부접근 불가
	int private_val;
public ://외부접근 가능
	int public_val;
protected://상속시에만 접근가능
	int protected_val;

public:
	void set(int num) // 클래스 내부 private값 접근 위함
	{
		private_val = num; 
	}
	void get()
	{
		cout << public_val << endl;
		cout << private_val << endl;
	}
};
int main()
{
	Myclass o;
	o.public_val = 100;
	o.set(1000);
	o.get();
}

private으로 선언한 변수 접근 시 class 내부에 함수를 만들어서 해당 변수에 접근해야만 하는점 유의

프로그래머스

  • 피자 나눠 먹기(2)

    최소공배수 이용해서 풀고싶은데 프로그래머스는 버전이 3.8.5로 되어있고 math 모듈에서 lcm 사용은 3.9버전부터 가능해서 소스코드 제출은 불가능

def solution(n):
    import math
    answer=math.lcm(n,6)//6
    return answer

solution(4)

1) 문제를 반복해서 읽어보니 사람수와 6의 최소공배수를 구하면 되는 문제였음
2) math 모듈의 lcm함수를 이용해서 math.lcm(x,y) -> x,y의 최소공배수 구해짐
3) 다음과 같이 편하게 풀 수 있는데 프로그래머스는 파이썬 버전 3.8.5를 지원하고 해당 모듈은 3.9버전 부터 사용 할 수 있어서 소스코드 제출은 못함

0개의 댓글