• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:整数データの配列から同じ値のデータを削除する関数)

整数データの配列から同じ値のデータを削除する関数

このQ&Aのポイント
  • C言語で整数データの配列から同じ値のデータを削除する関数 int remove_same_data(int a[], int size)を作成する。この関数は重複したデータを削除して残った個数(整数)を関数の戻り値として返す。
  • 関数内で与えられた整数配列をソートし、重複したデータを削除する方法について説明します。削除された後の配列の要素数を戻り値として返します。
  • 与えられた整数配列をソートし、重複したデータを削除する関数を作成します。削除後の配列の要素数を戻り値として返します。

質問者が選んだベストアンサー

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.2

★質問者さんへ。 >ちなみにここまで出来ました。 >下にある途中の1,2,3ができればこのプログラミングができると思うんですが… >分かる方は知恵を貸してください。よろしくお願いします。  ↑  swap_array()…正しい  mysort()…正しい  remove_same_data()…1.2.3 の通りに処理を記述すればよいだけです。  処理手順は >2はこれを使えばできるらしいのですがなかなかできません。  ↑  これで良いと思います。 ・よってもう正しく重複データを削除できると思います。  何をアドバイスすればよいのでしょうか?  私も『補足要求』しますね。 ・ちなみに remove_same_data() 関数は 1.2.3 の手順どおりに  int remove_same_data( int a[], int size )  {   int i, j, p;      // ソート   mysort( a, size );      //ソート済みデータの重複の削除   p = a[0]; //前のデータの記憶   j = 0; //削除するデータ数を数える   for ( i = 1 ; i < size ; i++ ){    if( p == a[i] ){     j = j + 1;    }    else{     a[ i - j ] = a[ i ];//削除するデータ数分前へ     p = a[ i ];    }   }   return size - j;  }  ↑  で良いでしょう。 ・それでは。また。

その他の回答 (3)

回答No.4

下の回答者です。 すみません。自分の勘違いでしたね。 このプログラムで正解です。 申し訳ありませんでした。

回答No.3

***** はじめまして ***** >2はこれを使えばできるらしいのですがなかなかできません。 少々細かいところでミスをされているようです。 おそらく実験?的に用意した配列{1,3,3,4,4,5,6,6}を元に実行した結果、1,3,4,5,4と標示されるのではないでしょうか? 重要なのは最後に重複して発見された数字の処理です。このプログラムでは次の値が重複でないときに初めて的確な位置に挿入されるため、最後に重複した文字は正しい位置に挿入されません。 よって示されたプログラムを少々変更する必要があります。 ***** 提示していただいたプログラム ***** for(i=1;i<size;i++){ if(p==a[i]){ j=j+1; } else{ a[i-j]=a[i];//削除するデータ数分前へ p=a[i]; } } ***** 修正したプログラム ***** (見やすくするため、全角のスペースを入力します) for(i=1; i<size; i++){   if(p==a[i]){      j=j+1;      if(i == (size - 1))        a[i-j]=a[i];   }   else{   a[i-j]=a[i];//削除するデータ数分前へ   p=a[i];   } }

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

もう出来ておるようにお見受けしますが。

関連するQ&A

専門家に質問してみよう