c++ 배열 ( 배열에서 반복되는 값 삭제하기 )

Jaewoong2·2020년 9월 17일
0

C++

목록 보기
4/13
#include <iostream>
using namespace std;

// Chapter 5. 2번문제 설계 계획 =>
// 2개의 for 문을 사용해서 처음 for문을 위해 사용 할 때 쓰이는 'i' 값을 
// 인수로 갖는 배열 a[i] 값을 기준으로
// i보다 크고 size값보다 작은 j를 인수로 갖는 a[j]와 비교한다.
// 그리고 a[j]와 a[i] 가 같으면 a[j] 를 빈값으로 나둔다.
// 빈 값으로 나두기 위해서 a 배열을 j번째 요소~ size번 째 요소 를 왼쪽으로 댕긴다. (a[0] 을 1번째로 봤을때.)
// 왼쪽으로 당기기 위해서 deleteValue 함수를 사용한다.

void deleteRepeats(char a[], int size);
// 이 함 수는 '배열 a'와 배열의 실제 값이 들어있는 'size' 를 인수를 받아서
// a안에 들어 있는 반복되는 값을 제거하는 함수이다.
// return 하는 것은 없지만 인수로 쓰인 a의 값을 바꾸는 것을 기능한다.


int sizeOfArray(char a[]);
// 이 함수는 배열 a를 받고 a배열 안의 a[0]부터 검사하면서
// 값이 없을 떄까지 의 수를 return 하는 함수이다.
// 배열의 사이즈를 알기 위해 사용된다.

void deleteValue(char a[], int size, int index);
// 값을 지우고 싶은 배열과, 그 배열의 크기, 그리고 지우고 싶은 배열 요소의 인덱스값을 받아온다.
// 인덱스 값~size 까지의 모든 배열을 for문을 통해서 a[i] = a[i + 1] 식으로 모든 값들을 왼쪽으로 옮긴다. 

int main()
{
	char a[10] = {'a', 'b', 'a', 'c', 'a', '3', 'a', 'b', 'd'};
	int size = sizeOfArray(a); //4
	deleteRepeats(a, size);
	cout << a << endl;
	return 0;
}

int sizeOfArray(char a[]) 
{
	int size = 0;
	while (a[size])
	{
		size++;
	}
	return size;
}

void deleteRepeats(char a[], int size)
{
	for (int i = 0; i < size; i++)
	{
		for (int j = i + 1; j < size; j++)
		{
			if (a[i] == a[j])
			{
				deleteValue(a, size, j);
			}
		}
	}
}

void deleteValue(char a[], int size, int index)
{
	for (int i = index; i < size; i++)
	{
		a[i] = a[i + 1];
	}
}
profile
DFF (Development For Fun)

0개의 댓글