48번 질문있습니다!
319
작성한 질문수 5
#include <iostream>
using namespace std;
int a[9][9];
int b[9];
int main(){
freopen("input.txt","rt",stdin);
int i,j,max,rev=0,tmp=2147000000;
float x=0.0,sum=0.0;
int c[9];
for(i=0;i<9;i++){
for(j=0;j<9;j++){
cin>>a[i][j];
sum+=a[i][j];
}
b[i]=(sum/9.0)+0.5;
sum=0.0;
}
for(i=0;i<9;i++){
for(j=0;j<9;j++){
tmp=a[i][j]-b[i];
if(tmp<0){
tmp*=-1;
}
if(tmp<max){
max=tmp;
rev=a[i][j];
}
if(max==tmp){
if(rev<a[i][j]){
rev=a[i][j];
}
}
}
c[i]=rev;
max=2147000000;
}
for(i=0;i<9;i++){
cout<<b[i]<<' '<<c[i]<<endl;
}
return 0;
}
이렇게 짰을때 출력창에서 나머지는 다 똑같이 나오는데 첫번째 행의 평균과 가장 가까운수가 0이 나옵니다. 혹시 왜 이렇게 나오는지 알려주실 수 있나요...?
답변 1
0
안녕하세요, 인프런 AI 인턴이에요.
주어진 코드에서 문제가 있는 부분을 찾아볼게요.
첫째로, tmp 변수를 초기화하는 부분에서 문제가 있습니다. tmp 변수의 초기값을 2147000000으로 설정했는데, 이는 답이 될 수 있는 범위보다 큰 값입니다. 따라서 tmp 변수의 초기값을 첫 번째 입력값 a[0][0]의 차이로 설정해야 합니다.
둘째로, max 변수와 rev 변수의 위치가 잘못되어 있습니다. max 변수와 rev 변수를 초기화하는 부분을 첫 번째 반복문 바깥으로 이동해야 합니다. 그렇지 않으면 매 반복마다 max 변수가 초기화되기 때문에 잘못된 결과가 나옵니다.
수정된 코드를 아래에 보여드릴게요.
#include <iostream>
using namespace std;
int a[9][9];
int b[9];
int main() {
freopen("input.txt", "rt", stdin);
int i, j, rev = 0, tmp, max = 2147000000;
float x = 0.0, sum = 0.0;
int c[9];
for (i = 0; i < 9; i++) {
for (j = 0; j < 9; j++) {
cin >> a[i][j];
sum += a[i][j];
}
b[i] = (sum / 9.0) + 0.5;
sum = 0.0;
}
for (i = 0; i < 9; i++) {
tmp = a[i][0] - b[i];
if (tmp < 0) {
tmp *= -1;
}
max = tmp;
rev = a[i][0];
for (j = 1; j < 9; j++) {
tmp = a[i][j] - b[i];
if (tmp < 0) {
tmp *= -1;
}
if (tmp < max) {
max = tmp;
rev = a[i][j];
}
if (max == tmp) {
if (rev < a[i][j]) {
rev = a[i][j];
}
}
}
c[i] = rev;
}
for (i = 0; i < 9; i++) {
cout << b[i] << ' ' << c[i] << endl;
}
return 0;
}
위의 코드를 실행하면 첫 번째 행의 평균과 가장 가까운 수가 제대로 출력될 것입니다. 문제를 해결하는 데 도움이 되었기를 바랍니다. 추가로 궁금한 점이 있으면 언제든지 물어보세요!
87번 채점 프로그램에 오류가 있는 것 같습니다.
0
89
2
그리디 파트
0
115
2
안녕하세요. 선생님(54번 코드 관련 문의)
0
141
2
테스트 파일 exit_coe_1, time_limit_exceeded 질문
0
143
1
C언어로 코드를 짜면 채점 시에 한 문제 빼고 시간 초과가 발생하는데 해결하는 방법이 있을까요?
0
172
1
19번 질문있습니다
0
123
1
6번 관련 채점오류입니다
0
88
2
22번 문제는 C로 풀어주신 건가요 C++로 풀어주신 건가요?
0
166
2
dev C++ 콘솔창 바로 닫힘
0
245
1
최신화하기
0
171
1
채점이 안되요...
1
261
1
안녕하세요 강사님 정렬에 대해서 설명이 조금 더 듣고 싶습니다.
0
113
1
45번 공주구하기 문제를 list를 이용해서 이렇게 풀어도 될까요?
0
155
1
39번 두 배열 합치기 문제 채점 오류인가 코드 오류인가
0
155
0
채점기에서 틀렸다고 나오는데 이유를 모르겠습니다.
0
149
2
해당 강의에서 C언어로만 진행하는 강의 문의 건
0
145
2
87번 문제 섬나라 아일랜드 질문
0
128
1
16번 문제에서 직접 답을 대입하면 정답이 나오는데 채점에서 wrong answer가 나옵니다.
0
149
1
40번 교집합 문제
0
166
1
43번 뮤직비디오 문제 테스트케이스 4번을 만족 못합니다.
0
170
1
41. 연속된 자연수의 합 문제 질문있습니다.
0
166
1
질문있습니다.
0
193
2
시간초과가 나요
0
172
1
43번 문제 3 ~ 5번에 문제가 있는것 같습니다.
0
249
1





