728x90
중복삭제를 구현할때 배열을 한칸씩 땡겨오는 구조이기때문에
낮은확률로 중복숫자가 많이 나오면 뒤에 중복숫자가 나올수도있다
이상황을 방지하기 위해 배열의 크기를 8로 만들었다
사실 반복횟수는 깊게생각하고 넣지않았기때문에 잘못적은 부분이있을수있다
나중에 다시 확인해야할것같다
#include <time.h>//time 함수를 사용하기 위해
#include <stdio.h>
int main() {
srand(time(NULL));//랜덤시드
printf("정렬되지않은 배열을 출력합니다\n");
int rotto[8];//배열생성
for (int i = 0; i < 8; i++) {//반복하면서 배열에 값을 대입한다
rotto[i] = ((rand() % 45) + 1);//0이 아닌 1부터의 값이 필요하기때문에 1을 더했다
}
for (int i = 0; i <= 7; i++) {//출력
printf("%d 번째 값 %d\n", (i + 1), rotto[i]);
}
int runCount;
int i;
int temp;
for (runCount = 0; runCount < 8; runCount++) {
for (i = 0; i < 7; i++) {
if (rotto[i] > rotto[i + 1]) {//정렬을 한다 작은수부터 차례대로 나올것이다
temp = rotto[i];//temp는 스왑을 위해 잠시 저장하는 변수이다
rotto[i] = rotto[i + 1];
rotto[i + 1] = temp;
}
}
}
printf("정렬된 배열을 출력합니다\n");
for (int i = 0; i < 6; i++) {
printf("%d 번째 값 %d\n", (i + 1), rotto[i]);
}
printf("중복값을 제거한 배열을 출력합니다\n");
for (runCount = 0; runCount < 8; runCount++) {//배열 중복값제거
for (i = 0; i < 7; i++) {
if (rotto[i] == rotto[i + 1]) {//비교후 같으면 다음칸에서 다다음칸의 값을 땡겨온다
rotto[i + 1] = rotto[i + 2];
}
}
}
for (int i = 0; i < 6; i++) {
printf("%d 번째 값 %d\n", (i + 1), rotto[i]);
}
}
728x90
'개발 > C++기본문법' 카테고리의 다른 글
C언어에서 .txt파일을 읽고 배열에 저장한후 출력하는 예제 (0) | 2023.04.20 |
---|---|
scanf와 gets의 차이와 문자열 입력시 공백에 대한 해결방법 (0) | 2023.04.18 |
scanf와 printf의 예제 (0) | 2023.04.17 |
구조체와 레코드 (struct) (0) | 2023.04.10 |
함수 (0) | 2023.04.06 |