2011-12-08 5 views
0

구조체 또는 사람들의 이름, 성 및 나이의 배열을 구성한 다음 문자열 라이브러리를 사용하여 입력 파일에서 출력 파일로 알파벳 순서로 구성해야합니다.C - 배열/구조체 토론

이것은 부분적으로 내가 내일 언급 한 실험실에서 TA가 위에서 언급 한 작업을 완료하도록 요청할 수 있다고 말한 것입니다. 나는 자신보다 C에서 훨씬 더 경험이 많은 개인으로부터 의견이나 제안을 얻으려고 노력하고 있으므로 내가별로 섹시하지 않은 마지막 실험실보다 더 준비하게 될 것입니다.

내가 시작해야 할 곳이 있습니까?

+5

지금까지 시도를 게시하여 협력 할 항목을 찾으십시오. –

+0

숙제 인 경우 [tag : 숙제] 태그를 추가하십시오. (그리고 [태그 : 토론] 태그가 특히 의미가 있다고 생각하지 않습니다.) –

+0

이것은 숙제가 아니며, 몇 시간 전의 이전 게시물이었습니다. 이것은 부분적으로는 내일 오후에 실험실에서 사용하기 때문에 TA가 위에서 언급 한 작업을 완료하도록 요청할 수 있다고 말한 것입니다. 저는 제 자신보다 C에서 훨씬 더 경험이 많은 개인으로부터 의견이나 제안을 얻으려고합니다. 이 태그를 다른 태그로 표시해야합니까? –

답변

1

글쎄, 입력과 출력을 읽고 쓰는 것은 아무렇지 않아야합니다. (파일을 열고 읽은 다음 쓰고 나서 끝내면 닫으십시오).

트릭은 성가신 문자열을 정렬하는 것입니다. strnig 정렬 방식은 정렬 정렬 배열입니다. 첫 번째 배열 수준은 모든 구조체에 대한 반복이며 두 번째 단계는 이름의 모든 문자에 대한 반복입니다 (일부 이름은 다른 이름보다 길다는 것에 유의하십시오).
1. 먼저 첫 번째 열을 정렬합니다.
2. 모든 하위 열 - 첫 번째 문자 그룹 내에서 두 번째 문자를 정렬합니다.
3. 정렬 할 문자가 부족할 때까지 1 & 2를 반복하십시오.

문자 배열 정렬은 바이트 배열 (AKA 문자)을 정렬하는 것과 같으며 거품 정렬과 같은 알고리즘으로 작업하는 경우 하위 배열에서 작업하는 것이 원활합니다.

희망이 아이디어는

0

당신은 두 개의 문자열을 비교하여 결과를 반환 string.h 도서관에서 strcmp를 사용할 수 있습니다. 입력 파일의 모든 문자열을 읽고 메모리에 보관해야합니다. 아마도 링크드리스트와 같은 목록을 사용하게 될 것입니다. 추가하는 동안 알파벳순으로 구성 할 수 있습니다. 다음은 그 예입니다.

  1. 목록에있는 요소를 가져옵니다.
  2. 새 문자열과 비교하십시오.
  3. 어디에 두어야합니까? 현재 요소 앞에 있어야한다면 현재 요소 앞에 놓습니다. 현재 요소 다음에 오는 경우 다음 요소에 대해 동일하게 수행하십시오.

이것은 간단한 알고리즘입니다.

0

까다로운 부분은 두 문자열의 비교를 구현하는 것입니다. strcmp 함수는 문자열이 동일한 지 여부 만 알려줍니다. char 배열을 반복 할 수 있습니다.

이렇게하면 나머지 정렬이 간단 해집니다.

+0

실제로는 3 개의 다른 값을 반환합니다. strcmp에 대한 위의 링크를 확인할 수 있습니다. – Mikael

관련 문제