패리티를 배치를 C로 구현
- 최초 등록일
- 2005.05.12
- 최종 저작일
- 2005.05
- 6페이지/ 한컴오피스
- 가격 1,000원
소개글
패리티배치가 되는 방식을 C로 구현해보시오.
C로 짠 내용이 문서파일 안에 들어있음.
컴파일 실행환경
마이크로소프트 Visual C++6.0에서 작성한 C파일 임.
본문내용
3.알고리즘
① 디스크와 데이터의 개수를 입력받는다.
② 최대소수계산
전체 디스크개수(N)가 3이면 최대소수2개. 그 이외의 경우는 for문을 이용해 최대 소수(sosu)를 계산한다.
③ 패리티개수와 간격계산
패리티의 개수 계산 : Np = N - sosu
패리티와 패리티끼리의 간격 계산 ()
④ 이중 for문을 사용하여 data개수만큼의 행과 disk개수만큼의 열을 표시할 수 있 도록 한다.
⑤ 변수 mem값에 미리 disk의 개수를 대입시킨다. 변수 i는 disk개수만큼 열을 표 시하기 위해 도입한 for문에 사용되는 변수이다.
⑥ 각 행에서 만약 i의 값이 zz(= mem - a×패리티간격)과 같아지면 패리티를 배 치하도록 한다. 패리티로 표시할 때마다 p_num이라는 변수를 통해 패리티에 부여 되는 번호를 1 씩 증가시킨다.
⑦ a의 값은 0부터 시작하여 1씩 증가하며, 계산되었던 패리티의 개수가 될 때까 지 증가한다. (맨 오른쪽에 있어야 할 패리티를 먼저 알고있고, 그로인해 같은 크기 의 간격만큼 떨어져있는 위치를 또다른 패리티의 자리로 정하는 원리이다.)
⑧ 열의 개수를 다 채워 행이 바뀔 때마다 mem의 값을 1씩 감소시킨 후 행이 바 뀔 때까지 ⑥~⑦을 반복한다.
만약 어떤 행에서 가장 왼쪽에 있는 패리티의 위치가 zz = 1이 되었을 경우 mem 의 값은 다시 ‘disk의 개수’가 되도록 한다.
mem의 값을 1씩 감소시키는 이유는 패리티가 각 행마다 다른 위치에 골고루 배치 될 수 있도록 하기 위함이다.
⑨ 이중 for문이 모두 끝나면 프로그램을 종료시킨다.
참고 자료
없음