[복습] 261025 - C# 4챕터

강현구
∙∙조회 1

Q4. 할인 후 적립금

문제

상품 단가, 구매 수량, 할인율을 한 줄씩 입력받음. 주문 전체에 할인율을 적용하고, 할인 후 결제액의 2%를 적립함. 금액은 decimal로 계산하고 결제액·적립액은 소수점 둘째 자리까지 반올림함. 정확한 중간값은 0에서 먼 쪽으로 처리하며 적립 기준은 반올림한 결제액임. 단가는 0.011000, 수량은 1100의 정수, 할인율은 0~1이며 소수점은 점으로 입력함.

입력 예시

plain text
12.50
3
0.10

예상 결과

makefile
결제액: 33.75
적립액: 0.68

ini
using System;

decimal price = decimal.Parse(Console.ReadLine());
int count = int.Parse(Console.ReadLine());
decimal discount = decimal.Parse(Console.ReadLine());

//

//결제액
decimal payment = (price * count) - ((price * count) * discount);
decimal collect = payment * 0.02m;



Console.WriteLine($"결제액: {payment:F2}");
Console.WriteLine($"적립액: {collect:F2}");

시도 횟수: 2
AI 사용: O
소요시간: 2분
종합평가: F

 


Q5. 주차 시간 정산

문제

주차한 분 수를 한 줄 입력받아 완전히 지난 시간 수, 과금 시간 수, 요금을 출력함. 시작한 한 시간마다 1500원을 부과하고 0분은 무료임. 입력은 0~1440v의 유한한 소수이며 소수점은 점으로 씀. 시간 수는 시간 단위의 정수 값으로 계산함.

입력 예시

plain text
61

예상 결과

makefile
완전히 지난 시간: 1
과금 시간: 2
요금: 3000원

arduino
using System;

int minutes = int.Parse(Console.ReadLine());

//60당 1시간...

//
int spendTime = minutes / 60;
int payTime = minutes == 0 ? 0 : (minutes + 59) / 60;
int fee = 1500 * payTime;

//int로 해서 정수만 딱 뜸
Console.WriteLine($"완전히 지난 시간: {spendTime}");
Console.WriteLine($"과금시간: {payTime}");
Console.WriteLine($"요금: {fee}");

시도 횟수: 1
AI 사용: O 과금시간 구하기
소요시간: 4분
종합평가: F


 

Q6. 반올림 시점 비교

문제

첫째·둘째 작업의 보상액을 한 줄씩 입력받아 두 정산 방식을 비교함. A는 각 보상액을 정수로 반올림한 후 합산하고, B는 원래 보상액을 합산한 후 정수로 반올림함. 두 방식 모두 Math.Round의 기본 중간값 규칙을 사용하며 B에서 A를 뺀 차이를 출력함. 입력은 -1000~1000의 유한한 소수이고 decimal로 계산하며 소수점은 점으로 씀.

입력 예시

plain text
2.5
2.5

예상 결과

makefile
건별 정산: 4
합산 정산: 5
차이: 1

scss
using System;

//보상액 = 정확해야함  = decimal
decimal firstReward = decimal.Parse(Console.ReadLine());
decimal secondReward = decimal.Parse(Console.ReadLine());

//

//A는 각 보상액을 정수로 반올림한 후 합산
//는 원래 보상액을 합산한 후 정수로 반올림함.

//Math.Round의 기본 중간값 규칙을 사용하며 B에서 A를 뺀 차이를 출력함.
//즉 후 캐스팅

//A
//string 변환이 아니니 여긴 그냥 캐스팅
decimal resultA = Math.Round(firstReward) + Math.Round(secondReward);
decimal resultB = (firstReward) + (secondReward);



Console.WriteLine($"건별 정산: {(int)resultA}");
Console.WriteLine($"합산 정산: {Math.Round(resultB)}");

Console.WriteLine($"차이: {(int)(resultB - resultA)}");

시도 횟수: 1
AI 사용: X (인터넷에 Math.Round 검색함)
소요시간: 7분 54초
종합평가: A