입력 횟수만큼 입력받을 때
int n;
cin>>n;
while(n--){
//statement
}
while문이 끝나면 n의 값이 -1이 된다
그러므로 이를 유지하고 싶다면 while문 전에 n값을 다른 상수에 저장해두기
int n;
cin>>n;
int *arr = new int[n];
new를 통해 pointer로 해주어야 함
ios_base::sync_with_stdio(false);
cin.tie(NULL);
#include <iostream>
using namespace std;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int i,n, a, b;
cin>>n;
for(i=1; i<=n; i++){
cin>>a>>b;
cout<<"Case #"<<i<<": "<<a+b<<"\n";
}
return 0;
}
3
1 1
2 3
3 4
Case #1: 2
Case #2: 5
Case #3: 7
#include <iostream>
using namespace std;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n,a,b;
cin>>n;
while(n--){
cin>>a>>b;
int i=1;
cout<<"Case #"<<i<<": "<<a<<" + "<<b<<" = "<<a+b<<"\n";
i++;
}
return 0;
}
그러나 틀린 코드
i++을 저렇게 할 시 적용이 되지 않는다..
i는 반복문 밖에서 1로 선언 및 1로 초기화해주어야 한다. 그렇지 않으면 매 반복문마다 초기화되어서 1로 뜰 수밖에 없는 것
#include <iostream>
using namespace std;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n,a,b;
int i=1;
cin>>n;
while(n--){
cin>>a>>b;
cout<<"Case #"<<i<<": "<<a<<" + "<<b<<" = "<<a+b<<"\n";
i++;
}
return 0;
}
이렇게 해주는 것이 맞다.
for문과 while문을 이렇게 활용할 수도 있음
#include <iostream>
using namespace std;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int a,b;
// do {
// cin>>a>>b;
// cout<<a+b;
// }while(a==0&&b==0);
while(true){
cin>>a>>b;
if(a==0&&b==0) break;
cout<<a+b<<"\n";
}
return 0;
}
저 do-while문으로는 작동하지 않음
for문에서는 break를 어디에 거는지 잘 확인해야 함
ref
https://velog.io/@gogori6565/BOJ-cin.tieNULL%EA%B3%BC-iosbasesyncwithstdiofalse