import java.util.Scanner;
public class 과제0627 {
public static void main(String[] args) {
//과제1> 구구단을 출력하되, 곱하는 수가 단보다 커지면 중지합니다.(ex. 2단 : 2x2까지만 출력)
// 1
// 2 4
// 3 6 9
// 4 8 12 16
// 5 10 15 20 25
// 6 12 18 24 30 36
// 7 14 21 28 35 42 48
// 8 16 24 32 40 48 56 64
// 9 18 27 36 45 54 63 72 81
for(int i = 1; i<=9; i++) { // i : 단=행(row)
for(int j = 1; j<=i ; j++) { // j: 곱하는 수
System.out.print(i*j);
System.out.print(" ");
}
System.out.println(); //줄바꿈 의미
}
//과제2> 다음과 같이 출력하세요.
// *******
// *****
// ***
// *
for(int i = 4; i>=1; i--) {
for(int j = i ; j<=3 ; j++) {
System.out.print(" ");
}
for(int k = 1 ; k<=2*i-1 ; k++) {
System.out.print("*");
}
System.out.println();
}
//강사님 풀이
for(int i = 0; i<4; i++) { // 바깥부분 반복
for(int j = 0; j<i; j++) { //바깥 블랭크(blank) = null = " "
System.out.print(" ");
}
for(int k = 0 ; k<(5-i)*2-3 ; k++) { // 공식(rule)을 생각해BOA요.
System.out.print("*");
}
System.out.println(); // 줄바꿈
}
//과제3> 1~100사이의 연산의 합계를 구하세요. (숫자는 증가, 연산자는 덧셈,뺄셈 반복)
// 1-2+3-4+5-6+7-8+.......100 = ?
// 3가지 이상의 방법을 사용하여 풀어보세요.
//1. for문
int sum = 0;
for(int i = 1; i<=100; i++) {
if(i%2 == 1)
sum+=i;
else
sum-=i;
}System.out.println("for문 : " + sum); // -50
//강사님 풀이1 - 문제에 대한 흐름, 규칙을 잘 찾아내는 것이 중요하다.
int sum = 0, odd = 0, even=0;
for(int i = 1; i<=100; i++) {
if(i%2 == 1) // 홀수연산
odd+=i;
else
even-=i; // 짝수연산
}System.out.println("for문 : " + (odd + even)); // -50
//강사님 풀이2 - true, false이용
int i, sum=0, sw=1;//sw=true, sw=false
for(i=1; i<=100; i++) {
if(sw ==1) { // 홀수연산
sum+=i;
sw=0; //false
}else {
sum-=i; // 짝수연산
sw=1; // true
}
}System.out.println("true, false이용 : " + sum); // -50
//강사님 풀이3 - 부호변환(일반 수학적용)
int sum = 0, i, p=1; //p:부호변환용 기호(+,-) 변수
for(i=1; i<=100; i++) {
sum+=i * p;// sum = sum + (i * p); //p값은 변동되지 않고, 아래 변환지점에서 변환된다.
p*=-1;//p = p * -1; // 부호변환 지점(부분)
}
System.out.println("부호변환이용 : " + sum); // -50
//강사님 풀이4
int sum = 0, i;
for(i=1; i<=100; i++) {
if(i/2 != i/2.0) //0.0
sum+=i; //0 not equal 0.5 = 1, 1 1.5 =3
else //2 2 2.0=4
sum-=i;
}System.out.println("4번방법 : " + sum); // -50
//2. while문
int i = 1, sum = 0;
while(i<=100){
if(i%2 == 1)
sum+=i;
else
sum-=i;
i++;
}System.out.println("while문 : " + sum); // -50
//3. do ~ while문
int sum=0, i = 1;
do{
if(i%2 == 1)
sum+=i;
else
sum-=i;
i++;
}while(i<=100);
System.out.println("do ~ while문 :" + sum); // -50
//과제4> 반지름을 입력 받아서, 원의 넓이와 둘레를 구하여 출력하세요.
// 계속하려면 yes를 입력하고, no이면 중단합니다.
Scanner sc = new Scanner(System.in);
float p = 3.14f;
while(true) {
System.out.println("반지름을 입력하세요.");
float r = sc.nextInt();
double area = p * r * Math.pow(r,2);
double girth = 2 * p * r;
System.out.println("원의 넓이는 " + area + "원의 둘레는" + girth +"입니다.");
System.out.println("계속하려면 yes를, 중단하시려면 no를 입력하세요.");
String ans = sc.next();
if(ans.equals("yes")) {
continue;
}else if(ans.equals("no")) {
System.out.println("프로그램을 종료합니다..");
System.exit(0);
}
}
//강사님 풀이
double radian;
for( ; true ; ) {
System.out.println("반지름을 입력해 주세요.");
BufferedReader br2 = new BufferedReader(new InputStreamReader(System.in));
radian = Double.parseDouble((br2.readLine()));//
double d = radian * radian * 3.14159267;//원의 넓이
double e = radian * 2 * 3.14159267;//원의 둘레
System.out.println("원의 넓이 = " + d);
System.out.println("원의 둘레 = " + e);
System.out.println("계속하시겠습니까? (yes:계속, no:중단");
String str = br2.readLine();
if(!str.equals("yes")) {
System.out.println("프로그램이 정상적으로 종료되었습니다.");
break;
}
}
}
}