게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
[질문글]C언어 걸음마 단계 공부 중입니다.-본삭금
게시물ID : programmer_16317짧은주소 복사하기
작성자 : 두루마리
추천 : 0
조회수 : 554회
댓글수 : 5개
등록시간 : 2016/03/23 01:11:57
옵션
  • 본인삭제금지

안녕하세요, 서버관리쪽에서 일하는 서른살 IT뉴비입니다.
개발쪽...이라고 하면 아직은 잘 모르겠고 단지 프로그래밍 공부가 재밌어서
독학을 하고 있습니다.

C언어 책 하나 사서 공부하다가 프로그래밍의 핵심은 알고리즘이라고 하길래
예전에 정보처리기사 공부할 때 배웠던 알고리즘을 대충 프로그램으로 구현해보고 있습니다.
(학원이나 학교 숙제 문제가 아닙니다 ㅠㅠ 순수하게 독학 중 모르는 부분 질문.)

검색은 해보았지만 검색어를 정확하게 뭐라고 해야될지 몰라서 깊게는 못했습니다...
첫글부터 질문글이라 죄송합니다.

서두는 이쯤하고...

구현하려는 알고리즘은 
"입력한 10개의 숫자 중 특정 수(여기선 7)에서 가장 가까운 수 찾기"
입니다.

알고리즘 자체는 아래의 소스로 만들어서 잘 동작하는 것을 확인했는데
혹시나 해서 확인해본 결과 6과 8. 즉 같은 간격(?)을 가진 숫자 2개를
뽑아내려고 하니까 이상한 값이 출력되더라구요.

변수 하나 더 주고 if문으로 만약 min=num2[i] 면 해당 변수에 넣으라고 해서
출력해도 안나오구요...

되도록 스스로 해결해보려고 했는데 으으... 힌트라도 얻고 싶어서 글을 올려봅니다.

#include <stdio.h>

 int main(void){
int max,min,min_X,min_Y,i,num2[10];
int num[10]; // 사용할 변수 max는 가장 먼 값, min은 가장 가까운 값, min_X는 가장 가까운 값이 몇번째인지 담아둘 값, num2는 각 숫자별 간격 담아둘 배열

for(i=0;i<10;i++){
    printf("num[%d] ->> ",i);
    scanf("%d", &num[i]);
}
printf("num ->>\n ");//숫자 10개 입력 받습니다.
max=num[0];
min=num[0];//초기화 해주지 않으면 이상한 값을 출력하기 때문에 배열 안에 있는 숫자로 초기화
for(i=0;i<10;i++){
printf("num[%d]=%d\n ",i, num[i]);
}
for(i=0;i<10;i++){
    if(num[i]>7){
        num2[i]=num[i]-7;}
   else{
        num2[i]=7-num[i];
    }
}//입력 받은 10개의 숫자에서 목적이 되는 숫자 만큼 빼줍니다.
for(i=0;i<10;i++){
    if(max<num2[i]){
        max=num2[i];}
    if(min>num2[i]){
        min=num2[i];
        min_X=i;
        }
    }//빼준 숫자가 각 숫자 별 '간격'이므로 간격 중에 가장 먼 수와 가장 가까운 수를 나타냅니다.
printf("\n");
printf("max=%d\n",max);
printf("min=%d\n",min);
printf("가장 가까운 수 => num[%d]번째\n",min_X);
return 0;
}



꼬릿말 보기
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호