작성
·
167
0
안녕하세요 교수님!
강의 보면서 정말 도움 많이 받고 있습니다.
다름이 아니라, 이 문제를 for문, while문을 써서 풀려고 하다가 막혀서 질문드립니다.
제 코드는,
//가장 많이 사용된 숫자의 개수
#include<iostream>
using namespace std;
int main()
{
int a;
int arr[10];
cin >> a;
int k=a;
while (k >= 1)
{
for (int i = 0; i < 10; i++)
{
if (i = k % 10)
arr[i]++;
}
k = k / 10;
}
for (int i = 0; i < 10; i++)
{
cout << arr[i] << " ";
}
return 0;
}
이렇게 해서 일단 arr의 배열에 잘 들어갔는지 확인 하려고 했는데, 출력 값이 안나옵니다.
일단 while loop를 빠져나오지 못하는 것으로 판단되는데, 왜 저기를 빠져나오지 못하는지 모르겠어서 질문 드립니다.
감사합니다!
답변 1
1
교수님과 상관없이 지나가던 학생인데요...
우연히 보게되어, 아는 내용이 있어 지식 공유하고자 글 남겨봅니다...
if (i = k % 10)
arr[i]++;
여기부분에서 i==k%10 이 아니라 대입연산자 = 를 사용하셔서 무한루프 도는것 같네요.
그런데 = 를 ==로 고친 아래 코드도 굳이 for문을 사용하지않아도 될것 같아요
(물론 답을 도출하는데 있어서 문제는 없음 )
for (int i = 0; i < 10; i++)
{
if (i == k % 10)
arr[i]++;
}
arr[k%10]++; 이렇게 하는것이 훨씬 효율적으로 보입니다.
헐... 너무너무 감사합니다!!
for문을 쓸 필요가 없었네요..ㅜㅜ 정말 감사해요~