프로그래밍

C언어 오름차순 질문좀

오름차순.png

 

목표는 1 2 3 4 6 7 9 나오게 하는건데

아무리 해도 3 6 7 2 4 1 9 나옴

뭐가 잘못됐을까?

33개의 댓글

2019.06.27

최소값을 찾아서 맨앞에 넣어야 하는데

정렬 안된 값을 다 훑고 보내는게 아니라

바로 뒤의 수랑 비교해서 앞뒤 바꾸고 인덱스 값 올라가닉까 그런듯

0
2019.06.27
@돗돗리판

퇴근점에 두번째 루프까지만 호다닥 계산해본거라

틀릴수도 있음 ㅎ

0
2019.06.27

이중포문

0
@Lssss

이중포문에서 변수를 각각 다른걸 채택해야함?

for(i=0 ... ){

for (i=0 ...) {

...}

}

 

이런 문장에서 i를 두개 곂치면 안됨??

0
2019.06.27
@그림으로말해요

똑같이 i를 집어넣으면 이중포문의 의미가 없지

대부분 i와 j로 많이 넣음

0
2019.06.27
@그림으로말해요

너 어제 걔 아냐? Char[5] 물어본애

겹치면 안됨 ㅇㅇ, 디버그한담에 f10 누르면서 한줄씩 따라가봐

0
@Lssss

그 친구 맞음

 

0
2019.06.27
@그림으로말해요

그렇게 하면 위쪽에 있는 포문은 아무런 의미 없는 포문이 되어버림

아래쪽에서 이미 i가 7이되서 나온 상태니까 한바퀴만 돌고 바로 종료

0
2019.06.27

열심히 하네

 

넌 꼭 성공해라

0
2019.06.27

쭉 질문글 봤는데..

 

C언어를 배우기 이전에 논리를 세우고 그걸 옮길 수 있는 능력을 길러야할것같다..

 

0
@잉텔

그걸 어떻게 길러야될지가 지금 고민임..

0
2019.06.27
@그림으로말해요

짜기 전에 흐름도 같은거 손으로 그려보고 하는게 좋음

생각대로 안나오면 함수 진행 과정 따라가보고

0
2019.06.27
@그림으로말해요

코딩하기전에 의사코드를 짜셈

 

코딩이라는건 무엇인가 생각났다고 그냥 짜는게 아니라

 

코딩은 내가 생각한 가설이나 방법에 대해서 증명하는 과정임 결국 수학이랑 똑같음

 

괜히 컴공이전에 전산학이라고불렸겠냐..

 

결국 니가 어떤 정렬 방법을 떠올렸고 그걸 의사코드로 적고 이렇게 되면 되겠지 생각을 하고 있다면 이제 그걸 C언어로 코딩해서 확인하는거임

 

그리고 의사코드를 작성하면서 너의 논리 사고를 보호 할 수 있고 시각화 할 수 있음

0
@잉텔

논리는 세웠는데 이걸 표현을 못하겠더라

 

코딩하기전에 직접 그려봤지

 

1. 첫번째 것과 두번째것을 비교해서 첫번째것이 크면

첫번째것을 임시값에 먼저 저장 그리고 첫번째 값에다가 두번째 값을 대입

그리고 두번째 값에다 임시값을 다시 대입

 

이걸 반복하다보면 오름차순이 될거같고

그래서 for 2중문을 쓴거고

 

근데 표현을 못하겠더라

0
2019.06.27
@그림으로말해요

그러니깐 그렇게 사람식으로 표현하지 말란소리임

 

구체적으로 변수 i에 뭘 넣고 증가 또는 증감 아니면 대입되고

 

조건은 이럴때 이렇게 된다 이렇게 표현을 해야됨

0
2019.06.27

그리고 위에서 말했듯이 알고리즘을 잘못짠것도 맞는거 같다.

오름차순의 알고리즘은

1. data[0] ~ data[6] 까지에서의 최소값을 찾고 이걸 data[0]에 넣음

2. data[1] ~ data[6] 까지에서의 최소값을 찾고 이걸 data[1]에 넣음

....

 

이렇게 마지막 배열까지 돌려서 뽑는게 기초적인 방법일거임

 

0
2019.06.27
@돗돗리판

너는 지금 단순하게 그 다음값과의 비교후 작은걸 앞으로 보내고 다음 인덱스로 넘어가니까

6.3.9.7.2.4.1 -> 3.6.9.7.2.4.1 -> 3.6.7.9.2.4.1 -> 3.6.7.2.9.4.1 -> 3.6.7.2.4.9.1 -> 3.6.7.2.4.1.9

이렇게 되는거

0
2019.06.27
@돗돗리판

저걸 계속 반복하면 버블정렬이 되긴 하는데 흠..

0
2019.06.27
@휘님

근데 그럴려고 한것도 아닌거 같구

이미 문법도 틀렸구 ㅋㅋㅋ

0
@돗돗리판

그래서 2중 for문을 사용해서 다시 비교하게 할려했는데 잘못된걸까?

 

니말대로 첫번째 하면 3672419 나오는데 2중포문을 이용하여 6번정도 돌리면

1234679가 나오더라고

그래서 2중 포문을 이용해서 7번을 6번 반복해서 나오게할려했는데

 

이중 포문 변수를 달리해도 안나오더라고

 

내 알고리즘이 잘못된건가?

0
2019.06.27
@그림으로말해요

자기 코드가 어디가 잘못되었는지는 사실 본인이 한줄한줄 디버깅하면서 찾는게 맞음..

이 줄에서 내가 의도한대로 되지 않는데 왜 그런지 알 수 없을 때 질문을 하거나 검색을 하는게 본인을 위해서도 더 좋음

근데 일단 코드를 어떻게 수정했는지 궁금은 하네 ㅋㅋ

0
2019.06.27
@그림으로말해요

바깥 for문 변수 i

안쪽 for문 변수 j로 한거 맞음?

0
@돗돗리판
[삭제 되었습니다]
2019.06.27
@그림으로말해요

a의 값을 계속 증가시키다보면, 배열의 범위를 넘어서지 않을까?

data 배열의 범위는 0에서 6까지인데, a의 값은 그보다 더 커지게 될텐데.

0
@SoftVanilla

와.. 아무리 생각해도 안됐는데

니말대로 하니까 되네

 

j은 1~ 6 에서만 움직이는 이유가

for 문에서 조건을 정해놨으니

1~6 에서만 움직인거고

a는 따로 범위를 지정안해서

계속 증가해서 오류가 난거야??

0
2019.06.27
@그림으로말해요

범위 설정이라고 볼 수도 있겠네.

i 루프가 한 번 끝나고 a에 대해 아무런 짓도 안하고 있으니,

a의 값이 data 배열의 크기를 넘어버리고, data[a]로 참조를 하려는데

a 변수의 값은 배열의 범위를 넘어서버렸으니 오류가 나버리는거지.

당장 i루프 한 번 돌고 나면(즉, i가 1이 되었을 때) a 값이 7만 되도 죽어버리겠지. data[7]은 없으니까.

 

그리고 코드를 보면서 생각난건데, 변수 a는 필요없는 변수가 아닐까?

0
@SoftVanilla

a는 필요없이 코딩하는것도 암

근데 그건 남이 짠 코드였고

 

내가생각한 거에서 왜 오류가 났는지

이게 궁금한거였어

답변 고마워

0
2019.06.27

정렬이 하고싶은거면 정렬알고리즘 하나만 검색해도 의사코드 엄청 많이 나와있고 C로 된 예제는 더 많으니까 질문하기 전에 검색이라도 해 제발

 

이렇게 질문만하면 너 실력 절대 안늘어난다

0
@꿈먹는하마

검색했었고 버블정렬이라며 bubble_sort 알아 근데 내가 한 코딩에서 뭐가 잘못된건지알려고 질문한거야

0
2019.06.27
@꿈먹는하마

ㄹㅇ 뭔가 만들려고 하지말고 코드 분석하는게 빠른길이긴하지

0
2019.06.27

중단점 잡고 디버깅해라

0
2019.07.01

for (i = 0; i < 7; i++) {

for (j = 0; j < 7; j++) {

if (data[i] > data[j]) {

temp = data[i];

data[i] = data[j];

data[j] = temp;

}

}

}

0
@사랑꾼

ㅇㅇ 그렇게 코딩했어 어쨋든 답변 고마워

0
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜 조회 수
180480 [컴퓨터] 긱바 보드 쿨러설정 영 별루네 베데엔차 0 20 분 전 11
180479 [잡담] 고사양 컴퓨터 사서 옛날게임하는.eu 오브 0 1 시간 전 64
180478 [견적] 컴맹) 컴퓨터 업글하려는데 다나와에서 사면되지? 2 착한댓글달자 0 1 시간 전 38
180477 [견적] 컴퓨터 사양좀 올릴라는데 5 악플러보면고백박는놈 0 1 시간 전 56
180476 [견적] 그냥 조립식 컴터 살려구 하는데 괜찮은가 봐주세요 13 메카다나카 0 2 시간 전 95
180475 [컴퓨터] 모니터 삿다 10 or5469 0 2 시간 전 74
180474 [컴퓨터] 형님들 컴맹이 윈도우 관련 질문 드립니다 4 우루루옳지 0 6 시간 전 104
180473 [컴퓨터] 님들 랜선 연결 어케해요? 12 플랑크톤상점버거 0 9 시간 전 266
180472 [컴퓨터] 올그떠 보인다길래 삭제함 1 Benetton 0 21 시간 전 178
180471 [잡담] wh xm4 끼고 자다가 오른쪽 박살남ㅠㅠ 8 곰문곰문곰문곰문... 0 21 시간 전 333
180470 [컴퓨터] 컴퓨터 완본체 샀는데 깔아야할 드라이버나 설정 있나요? 10 하이웨이 0 1 일 전 277
180469 [잡담] 좆데온 8천번대보다 7900xtx가 9 전기모기채는신이야 0 1 일 전 344
180468 [컴퓨터] 형님들 견적짠거 호환 문제없는지 확인 부탁드립니다 2 우루루옳지 0 1 일 전 114
180467 [정보] 크러쉬80 - 레이니75를 만든 Wob의 텐키리스 키보드 2 Veigrake 0 1 일 전 271
180466 [잡담] 여기 로봇 청소기도 물어봐도 됨?? 15 년째재수강 0 1 일 전 228
180465 [잡담] 윈도우12 전부 레거시쳐낸다는말이 하드웨어를 말한거구나 5 이거보인다면기분탓임 0 1 일 전 384
180464 [컴퓨터] 갤럭시80 넘나 이쁜것이예요 2 군마 1 1 일 전 470
180463 [모바일] 차량용 맥세이프 충전기 탁상용으로 쓰니 좋다 4 년째군대 0 1 일 전 230
180462 [잡담] 채터링 어캐잡습니까... 7 로우팡맨 0 1 일 전 219
180461 [잡담] 4월에 마우스 큰 게 두 개 나오네 16 GNStout 0 1 일 전 340