9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오.
예를 들어, 서로 다른 9개의 자연수
3, 29, 38, 12, 57, 74, 40, 85, 61
이 주어지면, 이들 중 최댓값은 85이고, 이 값은 8번째 수이다.
첫째 줄부터 아홉 번째 줄까지 한 줄에 하나의 자연수가 주어진다. 주어지는 자연수는 100 보다 작다.
첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 몇 번째 수인지를 출력한다.
3
29
38
12
57
74
40
85
61
85
8
#include <stdio.h> int main() { int A[9]; int max=0, i, m; for (i=0; i<9; i++) scanf("%d", &A[i]); for (i=0; i<9; i++) { if (A[i]>max) { max=A[i]; m=i; } } printf("%d\n", max); printf("%d", m); return 0; }
왜 틀렸지 한참 고민하다가 도저히 모르겠어서 인터넷에 답 찾아봄ㅠㅠ
뭐가 틀렸는지 아시겠나요?? 배열 인덱스 생각해보면 바로 답이 나옵니다ㅎ
#include <stdio.h> int main() { int A[9]; int m, i, max=0; for (i=0; i<9; i++) { scanf("%d", &A[i]); if (A[i]>max) { max=A[i]; m=i; } } printf("%d\n%d", max, m+1); return 0; }
index를 출력하라고 한 게 아니라
몇 번째 수인지를 출력하라 했으니
인덱스가 m이라면 m+1번째 수가 되니
m이 아니라 m+1을 출력해줬어야 하는 것!!
내가 본 코드가 내가 짰던 코드보다 훨씬 효율적인 것 같다.
#include <iostream> using namespace std; int main() { int A[9]; int i, m, max=0; for (i=0; i<9; i++){ cin >> A[i]; if (max<A[i]){ max = A[i]; m = i; } } cout << max << '\n' << m+1; return 0; }