목차 - https://wondangcom.tistory.com/2797
문제: 두명의 실수 왕자
옛날 옛적에, 숫자들의 왕국에 두 명의 실수 왕자가 살고 있었습니다. 첫 번째 왕자는 '파이'라고 불렸고, 두 번째 왕자는 '오일러'라고 불렸죠. 그들은 왕국에서 가장 아름다운 숫자들이었고, 모든 이들은 그들의 정확함과 우아함에 감탄했습니다.
어느 날, 왕국에 '소수점'이라는 마법사가 찾아왔습니다. 그는 두 왕자에게 특별한 능력을 주었는데, 그것은 바로 자신들의 모습을 소수점 둘째자리까지만 보여주는 것이었습니다. 이 마법은 왕자들이 더욱 명확하고 이해하기 쉬운 모습을 갖게 해주었습니다.
하지만 이것만으로는 충분하지 않았습니다. 왕국의 사람들은 두 왕자를 더욱 잘 보기 위해, 그들을 '왼쪽 정렬'이라는 거울 앞에 세웠습니다. 이 거울은 왕자들을 왼쪽으로 기울게 하여, 모든 사람들이 그들의 아름다움을 더욱 잘 볼 수 있게 해주었습니다.
그리하여, 파이 왕자와 오일러 왕자는 자신들의 새로운 모습을 자랑스럽게 선보였고, 왕국의 모든 이들은 그들의 새로운 모습에 환호했습니다. 그들은 이제 '소수점 둘째자리'와 '왼쪽 정렬'의 마법으로 더욱 사랑받는 존재가 되었습니다.
그리고 그들은 오래오래 행복하게 살았습니다.
여기서 실수 왕자의 모습을 소수점 둘째자리까지 보여주는 마법과 왼쪽 정렬하는 마법을 프로그램을 통해 구현해 주세요.
예)
# 입력 예시:
# 3.141592
# 2.71828
# 출력 예시:
# 소수점 둘째자리까지 출력: 3.14, 2.72
# 왼쪽 정렬 출력: |3.14 |, |2.72 |
C언어
#include <stdio.h>
int main() {
double first_number, second_number;
// 사용자로부터 실수 두 개를 입력 받음
printf("첫 번째 실수를 입력하세요: ");
scanf("%lf", &first_number);
printf("두 번째 실수를 입력하세요: ");
scanf("%lf", &second_number);
// 소수점 둘째자리까지 출력
printf("소수점 둘째자리까지 출력: %.2f, %.2f\n", first_number, second_number);
// 왼쪽 정렬 출력
printf("왼쪽 정렬 출력: |%-10.2f|, |%-10.2f|\n", first_number, second_number);
return 0;
}
여기서 오른쪽 정렬은 %10.2f 와 같은 서식 문자를 사용하고 %-10.2f와 같은 서식 문자를 사용하여 왼쪽 정렬하여 출력 할 수 있습니다. 앞의 10은 출력하는 공간을 의미하고 소숫점 뒤의 .2는 소수점 2자리까지 출력하겠다는 의미입니다.
공간을 할당하지 않고 소수점 2자리까지 출력하는 경우는 전체 공간을 0으로 설정하여 %0.2f와 같이 사용하면 되는데 여기서 0을 생략하여 %.2f와 같이 사용합니다.
C++
#include <iostream>
#include <iomanip> // std::setprecision 사용을 위한 헤더
int main() {
double first_number, second_number;
// 사용자로부터 실수 두 개를 입력 받음
std::cout << "첫 번째 실수를 입력하세요: ";
std::cin >> first_number;
std::cout << "두 번째 실수를 입력하세요: ";
std::cin >> second_number;
// 소수점 둘째자리까지 출력 설정
std::cout << std::fixed << std::setprecision(2);
// 소수점 둘째자리까지 출력
std::cout << "소수점 둘째자리까지 출력: " << first_number << ", " << second_number << std::endl;
// 왼쪽 정렬 출력
std::cout << "왼쪽 정렬 출력: |" << std::left << std::setw(10) << first_number << "|, |" << std::setw(10) << second_number << "|" << std::endl;
return 0;
}
fixed 와 setprecision(<iomanip> 헤더 필요) 으로 소수점 2자리를 고정으로 한 다음 left와 setw를 이용해서 왼쪽정렬과 너비를 설정하여 출력할 수 있습니다.
다만 이렇게 출력하는 것은 매우 번거롭기 때문에 C++은 C언어와 호환이 되므로 이런 경우 C언어의 printf 문을 이용하여 서식문자로 출력 하는 것이 더 수월 할 수 있겠네요.
Java
import java.util.Scanner;
public class NumberFormatting {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double firstNumber, secondNumber;
// 사용자로부터 실수 두 개를 입력 받음
System.out.print("첫 번째 실수를 입력하세요: ");
firstNumber = scanner.nextDouble();
System.out.print("두 번째 실수를 입력하세요: ");
secondNumber = scanner.nextDouble();
// 소수점 둘째자리까지 출력
System.out.printf("소수점 둘째자리까지 출력: %.2f, %.2f\n", firstNumber, secondNumber);
// 왼쪽 정렬 출력
System.out.printf("왼쪽 정렬 출력: |%-10.2f|, |%-10.2f|\n", firstNumber, secondNumber);
scanner.close();
}
}
C언어와 마찬가지로 서식문자를 사용하여 출력 하면 됩니다.
Python
# 사용자로부터 실수 두 개를 입력 받음
first_number = float(input("첫 번째 실수를 입력하세요: "))
second_number = float(input("두 번째 실수를 입력하세요: "))
# 소수점 둘째자리까지 출력
print(f"소수점 둘째자리까지 출력: {first_number:.2f}, {second_number:.2f}")
# 왼쪽 정렬 출력
print(f"왼쪽 정렬 출력: |{first_number:<10.2f}|, |{second_number:<10.2f}|")
f 문자열을 사용하여 위와 같이 {변수명:서식문자} 와 같이 사용할 수 있고 또는 C언어와 같이 서식문자를 사용할 수도 있습니다.
# 사용자로부터 실수 두 개를 입력 받음
first_number = float(input("첫 번째 실수를 입력하세요: "))
second_number = float(input("두 번째 실수를 입력하세요: "))
# 소수점 둘째자리까지 출력
print("소수점 둘째자리까지 출력: %.2f, %.2f" %(first_number,second_number))
# 왼쪽 정렬 출력
print("왼쪽 정렬 출력: |%-10.2f|, |%-10.2f|" %(first_number,second_number))
요약
실수를 10칸 공간 확보하여 출력하는 방법
C언어 : %10.2f와 같이 앞에 숫자를 붙여 주면 숫자만큼 공간을 확보하여 오른쪽 정렬하며 소숫점 이하 숫자만큼 자리수를 출력한다.
C++ : fixed 와 setprecision( 헤더 필요) 으로 소수점 자리수를 고정시킬 수 있다. setw(10) 으로 공간 확보를 한다. 왼쪽 정렬 시 left를 사용한다. 다만 명령어가 복잡해서 사용하기 어렵다면 C언어의 printf 문을 사용해도 된다.(단 cin과 printf 를 섞어서 사용하지는 말아야 한다.)
Java : printf문으로 서식문자를 사용하여 출력한다.(C언어와 동일)
Python : 포맷문자열 사용시 >(오른쪽 정렬), <(왼쪽 정렬) 과 같이 사용한다.
인천 검단 원당컴퓨터 학원(T 032-565-5497)
#정보올림피아드
#검단신도시코딩
#원당동코딩
#마전동코딩
#왕길동코딩
#당하동코딩
#아라동코딩
#풍무동코딩
#불로동코딩
#검단동코딩
#검암동코딩
'프로그래밍언어문법(C,C++,Python,JAVA)' 카테고리의 다른 글
3.2 순순이와 복합 대입 연산자 (5) | 2024.05.29 |
---|---|
3.1 산술 연산자 (7) | 2024.05.24 |
2-6.공간의 마술사 (8) | 2024.05.08 |
2-5. 말하는 거울 (4) | 2024.05.03 |
2-4. 단어의 숲을 거닐다. (10) | 2024.04.26 |