infinite loop, 조건에 따른 loop_220704
몇 번 loop 할지 알 수가 없을 때 while
문을 이용한 무한 루프를 사용한다.while(true)
라는 계속 반복하는 조건과 특정 조건 만족시 탈출이 가능하도록 하는 break
를 활용한다.while(1)
을 이용할 수도 있다
0 나올때까지 출력
숫자를 계속 입력받다가 0이 입력되기 전까지의 결과를 그대로 출력하는 프로그램을 작성해보세요.
#include <iostream>
using namespace std;
int main(){
int n;
while(true){
cin >> n;
if(n == 0) break;
cout<<n<<endl;
}
return 0;
}
특정 숫자 맞추기
숫자 25를 맞추는 게임을 합니다. 주어지는 정수값이 25보다 작으면 Higher를, 25보다 크면 Lower를 출력하는 작업을 반복하다가, 25가 주어지면 Good을 출력하고 중단하는 프로그램을 작성해보세요.
#include <iostream>
using namespace std;
int main(){
int n;
while(true){
cin >> n;
if(n<25) cout<<"Higher\n";
else if(n>25) cout<<"Lower\n";
else{
cout<<"Good";
break;
}
}
return 0;
}
출석 부르기 2
A반의 출석번호 1번은 John, 2번은 Tom, 3번은 Paul, 4번은 Sam입니다. 번호를 입력하면 해당하는 학생의 이름을 출력하는 작업을 반복하다가 해당하는 번호 이외의 숫자가 입력되면 Vacancy를 출력하고 종료하는 프로그램을 작성해보세요.
#include <iostream>
using namespace std;
int main(){
int n;
while(true){
cin >> n;
if(n == 1) cout<<"John"<<endl;
else if(n == 2) cout<<"Tom"<<endl;
else if(n == 3) cout<<"Paul"<<endl;
else if(n == 4) cout<<"Sam"<<endl;
else{
cout<<"Vacancy";
break;
}
}
return 0;
}
몫 출력하기
어떤 수가 주어졌을 때 홀수면 아무 작업도 하지 않고, 짝수면 2로 나눈 몫을 출력하는 작업을 3번까지 반복하는 프로그램을 작성해보세요.
#include <iostream>
using namespace std;
int main(){
int n, attemp= 3;
while(1){
cin >> n;
if(n%2==0) {
cout<<n/2<<endl;
attemp--;
}
if(attemp==0) break;
}
return 0;
}
사각형의 넓이 계속 계산하기
사각형의 가로세로의 길이와 문자가 주어집니다. 문자 C가 주어지는 줄까지 사각형의 넓이를 구하는 프로그램을 작성해보세요.
#include <iostream>
using namespace std;
int main(){
int row,col;
char a;
while(1){
cin >> row >> col >> a;
cout<<row*col<<endl;
if(a == 'C') break;
}
return 0;
}
20대의 평균 나이
몇 명의 사람들의 나이가 차례대로 주어질 때, 처음으로 20대가 아닌 다른 나이대의 사람이 나오기 전까지 입력된 나이들의 평균을 구하는 프로그램을 작성해보세요.
#include <iostream>
using namespace std;
int main(){
int age, n = 0, sum_ages = 0;
while(1){
cin >> age;
if(age<20||age>=30) break;
sum_ages+=age;
n++;
}
cout<<fixed;
cout.precision(2);
cout<<(double)sum_ages/n;
return 0;
}
3n + 1 수열
자연수 n이 주어집니다. n에서 시작하여 n이 짝수면 2로 나누고, n이 홀수면 3을 곱하고 1을 더하는 것을 n이 1이 되기 전까지 계속 반복하려고 합니다. 총 몇 번을 반복해야 1이 되는지를 계산하는 프로그램을 작성해보세요.
예를 들어 n = 3인 경우 3 -> 10 -> 5 -> 16 -> 8 -> 4 -> 2 -> 1 순서로 1이 되므로 답이 7이 됩니다.
#include <iostream>
using namespace std;
int main(){
int n, mul_count = 0;
cin >> n;
while(1){
if(n==1) break;
if(n%2==0) n /= 2;
else n = 3*n+1;
mul_count++;
}
cout<<mul_count;
return 0;
}
2의 거듭제곱수
2의 거듭제곱수 중 하나인 n을 입력받아, n=2^x
를 만족하는 x 값을 구하는 코드를 작성해보세요.
#include <iostream>
using namespace std;
int main(){
int n,val = 0;
cin >> n;
while(1){
if(n==1) break;
n/=2;
val++;
}
cout<<val;
return 0;
}
조건에 따른 연산
정수 a의 값에 따라 다음과 같은 연산을 진행할 때, n 번의 연산을 했을 때 처음으로1,000을 넘는다고 합니다. n의 값을 구해보는 프로그램을 작성해보세요.
a가 짝수일 때, a에 3을 곱하고 1을 더합니다.
a가 홀수일 때, a에 2를 곱하고 2를 더합니다.
#include <iostream>
using namespace std;
int main(){
int a, n=0;
cin >> a;
while(a<1000){
if(a%2==0) a=a*3+1;
else a=a*2+2;
n++;
}
cout<<n;
return 0;
}