配列のユニーク処理
面白そうな題材を見つけました。
配列の要素に同じ要素が含まれていたら除去するという処理です。
#include "mylib.h" int unique (int *num, int array_size) { int i,j,k; int uniq; for(j=i=0;i<array_size;++i){ uniq = 0; for(k=0;k<i;k++){ if ( num[k] == num[i] ) { uniq = 1; break; } } if ( !uniq ) { num[j++] = num[i]; } } return j; } int main (void) { int num[] = { 1,4,4,5,6,3,8,9,3,2,1,9,0,2}; int array_size; array_size = unique(num,ARRAY_NUM(num)); printf_array("%d ",num,array_size); return 0; }
$ main 1 4 5 6 3 8 9 2 0
できました。ちゃんと順番も崩さずに処理できています。