C++ - Module 06 과제해석

이호용·2021년 9월 29일
0

cpp

목록 보기
14/16

C++ - Module 06

C++ Casts

c++ casts에 대해 배워보자.

bonus rule

• For each exercise, any cast situation is solved by a specific cast. The evaluation will
check if your choice corresponds to the expected cast.

Exercise 00: Scalar conversion

Exercise 00: Scalar conversion
Turn-in directory : ex00/
Files to turn in : Any file you need and a Makefile
Allowed functions : Any function to convert from a string to an int, a
float or a double. This will help, but won’t do the whole job.

허용함수 : 문자열에서 int, double, float형태로 변환시키는 함수들

Write a program that takes a string representation of a C++ literal value (in its most
common form) as a parameter. This literal must belong to one of the following a scalar
types: char, int, float or double. Only the decimal notation will be used

C++ 리터럴(문자) 값(가장 일반적인 모양)을 문자열로 받는 프로그램을 작성할 것.이 리터럴은 다음 스칼라 형식들 중 하나임 : char, int , float or double 소수 표기법만 사용됨.

Examples of char literal values: ’c’, ’a’... To simplify, please note that: non displayable characters can’t be passed as a parameter to your program, and if a conversion
to char is not displayable, output a notification instead.

예를들어 char literal값은 : 'c', 'a' 단순화 하기 위해, 다음을 참고하십시오 : 당신의 프로그램에서, 표시할수 없는 문자는 프로그램의 인자로 들어오지 않음. 그리고 변환ㄴ중에 char를 표시할수 없다면, 알람을 출력하세요.

Examples of int literal values: 0, -42, 42...
예를 들어 인트형은 : 0,-42, 42 ..

Examples of float literal values: 0.0f, -4.2f, 4.2f... You will also accept these
pseudo literals as well, you know, for science: -inff, +inff and nanf. (inf : 무한대, nan 잘못받음)
float 형 예제 : 0.0f, -4.2f ,4.2f.... 너는 또한 동의 과학을위해, 가짜 literals을 받을거다. : -inff, +inff 그리고 nanf

Examples of double literal values: 0.0, -4.2, 4.2... You will also accept these pseudo
literals as well, you know, for fun: -inf, +inf and nan

예를들어 double literal 값 : 0.0, -4.2, 4.2 ... 너는 또한 가짜 literals도 받을 거다. -inf, +inf and nan.

Your program must detect the literal’s type, acquire that literal in the right type (so
it’s not a string anymore), then convert it explicitly to each of the three other types and
display the results using the same formatting as below. If a conversion does not make
sense or overflows, display that the conversion is impossible. You can include any header
you need to handle numeric limits and special values
너의 프로그램은 리터럴의 유형을 감지해야합니다, 올바른 유형으로 해당 리터럴을 습득하세요. ( 더이상은 문자열이 아닙니다. ), 변환은 명시적으로 다른 세가지 유형으로 변환하고, 아래와 같은 형식을 사용하여 결과를 표시합니다. 변환이 의미가 없거나 오버플로되면 impossible이라고 표시합니다.

./convert 0
char: Non displayable
int: 0
float: 0.0f
double: 0.0
./convert nan
char: impossible
int: impossible
float: nanf
double: nan
./convert 42.0f
char: '*'
int: 42
float: 42.0f
double: 42.0

Exercise 01: Serialization

Exercise 01: Serialization
Turn-in directory : ex01/
Files to turn in : Any file you need and a Makefile
Allowed functions : None

Write a function "uintptr_t serialize(Data ptr);". This function will return
the parameter in an integer type.
uintptr_t serialize(Data
ptr);를 작성하자. 이 함수는 메게변수의 정수유형을 반환합니다.

Write a function "Data deserialize(uintptr_t raw);". This function will return
the raw data you created using "serialize" to a Data structure.
Data
deserialize(uintptr_t raw);를 작성하자. 이 함수는 raw데이터를 serialize를 사용해서 Data structure를 생성하고 반환합니다.

Wrap these two functions in a program that proves that everything works as intended.
You must create a valid data structure.
Take a Data address use serialize on it.
Send the return value in deserialize.
Check if the return value is equal to the first pointer.
Do not forget to include the Data structure you used.

두 함수가 정상적으로 작동하는지 확인하고, 너는 유효한 data structure를 생성해야합니다.
데이터 주소를 사용하여 직열화 하세요.
deserialize에서 반환 값을 보냅니다.
만약 리턴값이 처음 포인터화 같은지 확인합니다.
사용한 data structure를 포함하는 것을 잊지 마십시오.

Exercise 02: Identify real type

Exercise 02: Identify real type
Turn-in directory : ex02/
Files to turn in : Any file you need and a Makefile
Allowed functions : None

Create a class Base that only possesses a public virtual destructor. Create three
empty classes A, B and C that publicly inherit from Base.
가상소멸자만 소유하는 Base클래스 만들기. A,B,C public으로 Base를 상속받는 3개 클래스 생성

Write a function "Base generate(void);" that randomly instanciates A, B or C and returns the instance as a Base pointer. Feel free to use anything you like for the
randomness.
랜덤으로 A,B,C를 인터스턴스 하는 Base
generate(void); 함수를 만드세요. 결과값은 Base pointer. 랜덤 방법은 니 맘대로 해!

Write a function "void identify(Base p);" that displays "A", "B" or "C" according to the real type of p.
매게변수로 받는 p의 실제 데이터 타입 A 또는 B 또는 C 중 진짜 타입을 출력하는 void identify(Base
p);를 작성하세요.

Write a function "void identify(Base& p);" You should never use a pointer inside
this function. that displays "A", "B" or "C" according to the real type of p.
똑같이 만들지만, Base &임.

Wrap these functions in a program that proves that everything works as intended.
is forbidden
잘 작동하는지 확인하기.

0개의 댓글