📖/Hello Coding 프로그래밍
[Hello Coding] Chapter 9, Chapter 10 정리
모팔구
2023. 3. 24. 11:36
728x90
반응형
※ 9챕터는 상세하지 않음
Chapter 9. 반복횟수가 정해져 있다면, 반복문 for
1. while문으로 반복횟수가 정해진 코드 작성
- 반복횟수가 정해져 있는 코드를 while문으로 작성할 때 -> 잘 안씀 for 쓰면 됨
변수 초기화
while ( 변수 범위 설정 )
{
⋯
범위 += 1;
}
ex)
int passcodeIndex = 0;
while (passcodeIndex < passcodeLength)
{
⋯
passcodeIndex += 1;
}
2. for문으로 반복횟수가 정해진 코드 작성
- for (전) ~하는 동안
보통 반복횟수가 정해진 경우 for문을, 정해지지 않았을 때는 while문 사용 - for 문법
for ( (1)초기화 코드; (2)반복 조건식; (4)증감문)
{
(3)반복할 코드
}
(1)초기화 코드: 반복문이 실행되기 전에 딱 한번만 실행해서 변수를 초기화함
(2)반복 조건식: 반복문을 실행해야 하는지 검사: 반복문이 참이면 (3)반복할 코드 실행, 거짓이면 반복문 종료
(4)증감문: (3)반복할 코드 실행 뒤, 즉 한 번의 반복문 회차가 끝난 뒤 실행함
예시
for (int index = 0; index < 3; index++)
{
Console.Write(index);
Console.WriteLine("번째 반복입니다.");
}
- ++, --: 변수를 1씩 증가, 감소시키는 의미
- 반복횟수가 정해져 있는 코드를 for문을 이용해 작성하는 공식
1. 인덱스를 저장하는 변수를 0으로 초기화한다
2. 인덱스를 저장하는 변수가 총 반복횟수보다 작은지 비교한다.
3. 반복문 회차가 끝날 때마다 인덱스를 저장하는 변수를 1만큼 증가시킨다.
ex) 열 번 반복하는 for문
for (int index = 0; index < 10; index++)
3. 이중 for문
<생략>
기초문제
9-1. 다음 코드를 while문 대신 for문을 사용하도록 수정하세요.
Console.WriteLine("몇 명의 친구들에게 사과를 나눠줄까요?");
int friendCount = int.Parse(Console.ReadLine());
int[] appleNumbers = new int[friendCount];
int index = 0;
while (index < friendCount)
{
Console.Write(index);
Console.WriteLine("번째 친구가 가져갈 사과는 몇 개인가요?");
appleNumbers[index] = int.Parse(Console.ReadLine());
index += 1;
}
index = 0;
while (index < friendCount)
{
Console.Write(index);
Console.Write("번째 친구가 가져간 사괴의 개수는");
Console.Write(appleNumbers[index]);
Console.WriteLine("개 입니다.");
index += 1;
}
나의 답
Console.WriteLine("몇 명의 친구들에게 사과를 나눠줄까요?"); int friendCount = int.Parse(Console.ReadLine()); // int[] appleNumbers = new int[friendCount]; for (int i = 0; i < friendCount; i++) { Console.Write(i); Console.WriteLine("번째 친구가 가져갈 사과는 몇 개인가요?"); appleNumbers[i] = int.Parse(Console.ReadLine()); } // for (int i = 0; i < friendCount; i++) { Console.Write(i); Console.WriteLine("번째 친구가 가져간 사과의 개수는 "); Console.Write(appleNumbers[i]); Console.WriteLine("개입니다."); }
9-2. 다음 코드에서 반복되는 코드를 for문을 사용해서 수정하세요.
int[] scores = new int[5];
Console.Write(0);
Console.WriteLine("번째 과목의 성적을 입력하세요.");
scores[0] = int.Parse(Console.ReadLine());
Console.Write(1);
Console.WriteLine("번째 과목의 성적을 입력하세요.");
scores[1] = int.Parse(Console.ReadLine());
Console.Write(2);
Console.WriteLine("번째 과목의 성적을 입력하세요.");
scores[2] = int.Parse(Console.ReadLine());
Console.Write(3);
Console.WriteLine("번째 과목의 성적을 입력하세요.");
scores[3] = int.Parse(Console.ReadLine());
Console.Write(4);
Console.WriteLine("번째 과목의 성적을 입력하세요.");
scores[4] = int.Parse(Console.ReadLine());
Console.Write("총점은");
Console.Write(scores[0] + scores[1] + scores[2] + scores[3] + scores[4]);
Console.WriteLine("점 입니다.");
나의 답
Console.WriteLine("과목의 수를 입력하세요."); int subjectCount = int.Parse(Console.ReadLine()); int[] scores = new int[subjectCount]; // for (int i = 0; i < subjectCount; i++) { Console.Write(i); Console.WriteLine("번째 과목의 성적을 입력하세요."); scores[i] = int.Parse(Console.ReadLine()); } // Console.Write("총점은"); Console.Write(scores[0] + scores[1] + scores[2] + scores[3] + scores[4]); Console.WriteLine("점입니다");
9-3. 짝수단(2단, 4단, 6단, 8단)만 출력하도록 [코드 9-4]를 수정하세요.
(힌트: 9번 줄을 수정하세요.)
나의 답
for (int i = 2; i <= 9; i += 2) { Console.Write(i); Console.WriteLine("단"); for (int j = 1; j <= 9; j++) { Console.Write(i); Console.Write("x"); Console.Write(j); Console.Write("="); Console.Write(i * j); Console.Write(" "); } Console.WriteLine();
심화문제
9-1. [코드 9-2]를 수정해서 비밀번호를 다섯 번만 입력할 수 있게 바꾸세요.
(힌트: while문 대신 for문을 쓰세요.)
나의 답
int[] passcodeNumbers = { 6, 2, 1, 9, 4, 7 }; int passcodeLength = 6; int[] userInput = new int[passcodeLength]; for (int opportunity = 0; opportunity<5; opportunity++) { for (int passcodeIndex = 0; passcodeIndex < passcodeLength; passcodeIndex++) { Console.Write(passcodeIndex); Console.WriteLine("번째 숫자를 넣어주세요."); userInput[passcodeIndex] = int.Parse(Console.ReadLine()); } bool isPasswordCorrect = true; for (int passcodeIndex = 0; passcodeIndex < passcodeLength; passcodeIndex++) { if (userInput[passcodeIndex] != passcodeNumbers[passcodeIndex]) { isPasswordCorrect = false; Console.WriteLine("비밀번호가 틀렸습니다."); break; } } if (isPasswordCorrect) { Console.WriteLine("문이 열렸습니다"); break; } }
9-2. 3학년에 다섯 개의 반이 있고 한 반의 학생은 10명입니다. 각 반의 학생들의 성적을 입력받아서 반별로 평균을 구하세요.
(힌트: 이중 for문을 쓰세요.)
나의 답
int[] groupGrade = new int[10]; for (int group = 0; group < 5; group++) { Console.WriteLine("3학년 " + (group + 1) + "반 학생 10명의 성적을 입력하세요"); int studentGrade; int total = 0; for (studentGrade = 0; studentGrade < 10; studentGrade++) { groupGrade[studentGrade] = int.Parse(Console.ReadLine()); total += groupGrade[studentGrade]; } int average = 0; average = total / 10; Console.WriteLine("3학년 " + (group + 1) + "반의 평균: "); Console.WriteLine(average); }
Chapter 10. 언제나 똑같으면 재미가 없으니, 랜덤
1. 게임: 예측을 못해야 재미있어요
<생략>
2. 랜덤
- random (형)무작위의
- Random 클래스 예시
Random random = new Random();
int number1 = random.Next(1, 7);
int nubmer2 = random.Next(1, 7);
- next(min, max): min이상 max미만의 숫자가 나옴
기초문제
10-1. 다음 랜덤에서 나올 수 있는 숫자를 전부 열거하세요.
- random.Next(3, 10)
- random.Next(-2, 4)
나의 답
1. 3 4 5 6 7 8 9
2. -2 -1 0 1 2 3
10-2. 5 이상 60 미만의 숫자를 생성하도록 [코드 10-2]의 로또 번호 생성기 프로그램을 수정하세요.
<생략>
10-3. 8 이상 50 미만의 숫자를 무작위로 골라서 출력하느 ㄴ코드입니다. (1), (2)에 어떤 코드를 넣어야 할까요?
Random random = (1);
(2)
Console.Write("고른 숫자: ");
Console.WriteLine(randomNumber);
나의 답
(1) new Random() (2) int randomNumber = random.Next(8, 50);
심화문제
10-1. 숫자 맞추기 게임을 만드세요. 규칙은 다음과 같습니다.
(힌트: while문을 쓰세요.)
- 수비수가 1 이상 100 이하의 숫자를 무작위로 고릅니다.
- 공격수가 숫자를 입력합니다.
- 만약 입력한 숫자가 수비수가 고를 숫자보다 크면 "더 작은 숫자입니다."를 출력합니다.
- 만약 입력한 숫자가 수비수가 고를 숫자보다 작으면 "더 큰 숫자입니다."를 출력합니다.
- 만약 입력한 숫자가 수비수가 고를 숫자와 같다면 "정답입니다."를 출ㄹ역하고 프로그램을 종료합니다.
- 맞출 때까지 2~5를 반복합니다.
나의 답
Random random = new Random(); int dfNumber = random.Next(1, 101); // Console.WriteLine("수비수의 숫자가 준비되었습니다."); Console.WriteLine("공격수는 숫자를 입력하세요."); int fwNumber = int.Parse(Console.ReadLine()); // while(true) { if (dfNumber < fwNumber) { Console.WriteLine("입력한 숫자보다 더 작은 숫자입니다."); Console.WriteLine("다른 숫자를 입력하세요."); fwNumber = int.Parse(Console.ReadLine()); } else if (fwNumber < dfNumber) { Console.WriteLine("입력한 숫자보다 더 큰 숫자입니다."); Console.WriteLine("다른 숫자를 입력하세요."); fwNumber = int.Parse(Console.ReadLine()); } else if (fwNumber == dfNumber) { Console.WriteLine("정답입니다."); break; } }
10-2. 가위바위보 게임을 만드세요. 규칙은 다음과 같습니다.
- 1은 가위, 2는 바위, 3은 보입니다.
- 프로그램에서 1 이상 3이하인 숫자를 무작위로 고릅니다.
- 사용자가 1, 2, 3 중에 하나의 숫자를 고릅니다.
- 사용자가 지면 "졌습니다."를 출력합니다.
- 사용자가 이기면 "이겼습니다"를 출력합니다.
- 비겼다면 "비겼습니다."를 출력합니다.
- 비기면 2~6을 반복합니다.
나의 답
while (true) { Console.WriteLine("가위바위보를 시작합니다 1은 가위, 2는 바위, 3은 보입니다. 셋 중 아무 숫자를 입력하세요."); Random random = new Random(); int dfNumber = random.Next(1, 4); int user = int.Parse(Console.ReadLine()); // 사용자가 졌을 때 if ((dfNumber == 1 && user == 3) || (dfNumber == 2 && user == 1) || (dfNumber == 3 && user == 2)) { Console.WriteLine("졌습니다."); } // 사용자가 이겼을 때 else if ((dfNumber == 1 && user == 2) || (dfNumber == 2 && user == 3) || (dfNumber == 3 && user == 1)) { Console.WriteLine("이겼습니다"); } else if ((dfNumber == 1 && user == 1) || (dfNumber == 2 && user == 2) || (dfNumber == 3 && user == 3)) { Console.WriteLine("비겼습니다"); } }
728x90
반응형