package ArrayS;
import java.util.Arrays;
import java.util.Random;
public class 과제0703 {
public static void main(String[] args) {
/*과제1> 다음과 같이 출력하시오.
* 1 2 3 4 5
* 6 7 8
* 9
* 10 11 12
* 13 14 15 16 17
*/
int num = 1;
int gj1[][] = new int[5][5];
//저장하는 부분
for(int i=0;i<gj1.length;i++){
if(i<3) //입력하면서 감소하는 부분
for(int j=i;j<5-i;j++){
gj1[i][j]=num;
num++;
}
}else{ //입력하면서 증가하는 부분
for(int j=4-i;j<=i;j++){
gj1[i][j]=num;
num++;
}
}
}
//출력하는 부분
for(int i=0; i<gj1.length;i++) {
for(int j=0; j<gj1.length; j++) {
if(gj1[i][j]==0)
System.out.print(" ");
else if(gj1[i][j]<10)
System.out.print(gj1[i][j] + " ");
else
System.out.print(gj1[i][j] + " ");
}
System.out.println();
}
//강사님 풀이법
int Exam1[][] = new int[5][5];
int i, j, n=0;
//입력하면서 감소하는 부분.
for(i=0; i<3; i++) { // 0<3, 1<3, 2<3, 3<3
for(j=i; j<5-i; j++) { //2<3, 3<3
n+=1;//1-> 2->3...->9
Exam1[i][j] = n;//1,2,3,4,5
}
}
//입력하면서 증가하는 부분.
for(i=3;i<5; i++) { //3, 4
for(j=4-i; j<i+1; j++) { //1,2,3, 4<4, 0, 1<5, 2<5, 3<5, 4<5, 5<5
n+=1; //10, 11, 12, 13, 14, 15
Exam1[i][j] = n; //[3][1]=10, [3][2]=11, [3][3]=12,
//[4][0]= 13, [4][1]=14, [4][2]=15,
}
}
//배열 출력
for(i=0; i<5; i++) {
for(j=0; j<5; j++) {
System.out.print(Exam1[i][j] + "\t");
}
System.out.println();
}
/*과제2> 변경 후와 같이 출력하시오.
* 배열 num(10)에는 10개의 숫자가 저장되어 있습니다.
* <변경전>
* 10 20 30 40 50 60 70 80 90 100
* <변경후>
* 20 10 40 30 60 50 80 70 100 90
*/
int num[] = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100};
int num2[] = new int [10];
for(int i = 0; i<num.length-1; i+=2) {
if(num[i]<num[i+1]) {
num2[i] = num[i+1];
num2[i+1] = num[i];
}
}
for(int i = 0; i<num2.length;i++) {
System.out.print(num2[i] + " ");
}
/*과제3> 다음과 같이 출력하시오.
* 1
* 3 2
* 6 5 4
* 10 9 8 7
* 15 14 13 12 11
*/
int gj3[][] = new int[5][5];
int temp=1; //표시할 값 temp
//입력
for(int i = 0; i<gj3.length; i++) { //i는 행
for(int j = i ; j>=0; j--) { //j는 열
gj3[i][j]=temp++; //[0][0] = 1, [1][1] = 2, [1][0] = 3....
}
}
//출력
for(int i = 0; i<gj3.length; i++) {
for(int j = 0 ; j<=i; j++) {
System.out.print(gj3[i][j] + " ");
}
System.out.println();
}
/*과제4> 다음과 같이 출력하시오.
* 21 22 23 24 25
* 16 17 18 19 20
* 11 12 13 14 15
* 6 7 8 9 10
* 1 2 3 4 5
*/
int gj4[][] = new int[5][5];
int num = 1;
//입력
for(int i = gj4.length-1; i>=0; i--) { //i는 행
for(int j = 0 ; j<gj4.length ; j++) { //j는 열
gj4[i][j]=num; //[4][0]=1, [4][1]=2, [4][2]=3....(밑에서부터 찍음)
num++;
}
}
//출력
for(int i=0;i<gj4.length;i++) {
for(int j=0;j<gj4[i].length;j++) {
System.out.print(gj4[i][j] + " ");
}
System.out.println();
}
//과제5> boolean형 난수를 100개 생성하여 출력하세요.
Random ran = new Random();
Boolean gj5[] = new Boolean[100];
int i = 0;
for(i=0;i<gj5.length;i++) {
gj5[i] = ran.nextBoolean();
System.out.println((i+1) + "번째 난수는 = " +gj5[i]);
}
//과제6> 100점대 난수를 100개 발생하여 출력하세요.
int gj6[] = new int[100];
int i = 0;
for(i=0;i<gj6.length;i++) {
gj6[i] = (int) (Math.random()*100);
System.out.println((i+1) + "번째 난수는 = " +gj6[i]);
}
//강사님 풀이법
Random rand = new Random();
for(int i=0; i<100; i++) {
double ranDouble2 = rand.nextDouble() + 100;//
System.out.print(ranDouble2 + "\n");
}
//과제7> 10~50을 초기값으로 갖는 1차원 배열을 text라는 이름으로 선언합니다.
// 4번째 원소의 값을 100으로 변경하고, 출력합니다.
// 모든 원소의 값을 0원으로 초기화하고, 출력합니다.
// 각 단계별 출력을 모두 실행이 되도록 합니다.
int text[] = new int[41];
int i = 0;
for(i=0;i<text.length;i++) {
text[i] = i + 10;
}
text[3] = 100;
String one = Arrays.toString(text);
System.out.println("1. 4번째 원소의 값을 100으로 변경하여 출력한 값");
System.out.println(one);
for(i=0;i<text.length;i++) {
text[i] = 0;
}
String one2 = Arrays.toString(text);
System.out.println("2. 모든 원소의 값을 0으로 초기화한 값");
System.out.println(one2);
}
}