프로그래밍

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
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜 조회 수
180575 [컴퓨터] 회사에서 쓸 무소음 or 저소음 기계식 키보드 추천좀.. 냥드리퍼 0 11 분 전 12
180574 [컴퓨터] 컴퓨터 파워 몇w짜리 사는게 좋음? 8 룽니 0 33 분 전 33
180573 [잡담] 인텔 13,14세대 순정 가이드라인 188W로 잡힘 1 GNStout 0 1 시간 전 65
180572 [컴퓨터] 엔비디아 그래픽카드로 원격 플레이 하려면 컴터 사양 어느정... 1 어중E 0 2 시간 전 70
180571 [잡담] 아직 컴퓨터 1년 더 써야하는데 명조땜에 업글 계획 잡는중 10 손씨네원조비빔밥 0 2 시간 전 58
180570 [견적] 요즘 게이밍 PC 얼마 들어? 6 불타는밀밭 0 4 시간 전 174
180569 [잡담] 키보드 사진 두 개 리밍 1 4 시간 전 115
180568 [컴퓨터] 13년된 컴을 보내주려 합니다. 던파 원활히 돌아가는 견적 7 긍정축재 1 18 시간 전 364
180567 [잡담] 스피커 고민 개붕이 이어서.. 15 배프고다배파고 0 19 시간 전 220
180566 [잡담] 트랙패드 편하냐?? 5 fhana 0 19 시간 전 179
180565 [컴퓨터] 7800x3d로 롤 돌리는 사람 있음? 6 보거 0 19 시간 전 276
180564 [컴퓨터] 윈도우 부팅오류 도움!ㅠㅠ 3 qop 0 21 시간 전 88
180563 [컴퓨터] 윈10 인터넷 순간 끊김 문제 해결법 좀 5 해물잠봉 0 1 일 전 134
180562 [컴퓨터] 요새 그래픽카드 어디꺼가 좋음? 9 trader2 0 1 일 전 289
180561 [잡담] 님들 보통 마우스 얼마나 오래 씀 ?? 17 말릭스 0 1 일 전 224
180560 [컴퓨터] 윈도우10 노트북 화면 밝기가 자꾸 변하는데 해결 방법 좀 알... 4 두번하세요 0 1 일 전 80
180559 [프로그래밍] 공통코드테이블은 대체 왜 만드냐 9 잠적자 0 1 일 전 313
180558 [잡담] PC방에선 무선이어폰 못쓰나? 2 급병신미 0 1 일 전 210
180557 [컴퓨터] 모니터 이거 괜찮나여? 6 햄보칼쑤가없엉! 0 1 일 전 205
180556 [프로그래밍] 토이프로젝트 주제 선정 2 개드립눈팅1세대 0 1 일 전 169