配列の空白を削除するプログラム

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
bkf75581

配列の空白を削除するプログラム

#1

投稿記事 by bkf75581 » 13年前

char data_1[5]={'A',' ','B',' ','C'}
の空白を削除して
data_1[5]={'A','B','C',' ',' '}
に変換したいんですがプログラムをどのように書けば良いかわかりません。

while文を使って、空白でなくなるまでi番目とそれ以降の要素を入れ替えるという流れを
考えているのですがうまくいきません。どなたか教えてもらえないでしょうか?

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: 配列の空白を削除するプログラム

#2

投稿記事 by みけCAT » 13年前

bkf75581 さんが書きました:while文を使って、空白でなくなるまでi番目とそれ以降の要素を入れ替えるという流れを
考えているのですがうまくいきません。どなたか教えてもらえないでしょうか?
まずはこのプログラムを提示してもらえますか?
コードはcodeタグで囲んでください。(半角の[code]と[/code]でコードを挟んでください)
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

bkf75581

Re: 配列の空白を削除するプログラム

#3

投稿記事 by bkf75581 » 13年前

コード:

#include<stdio.h>
int main(void)
{
      int i,j;
      char w1;
      char data_1[5];
      char data_1[0]='X';
      char data_1[1]=' ';  //空白
      char data_1[2]='Y';
      char data_1[3]=' ';  //空白
      char data_1[4]='Z';

      for(i=0;i<5;i++){
         j=0;
         while(data_1[j} !=' '){
             w1=data_1[i];
             data_1[i]=data_1[j];
             data_1[j]=w1;
             j++
}

      for(i=0;i<5;i=0){
         printf("data_1[%d]=%c\n",i,data_1[i]);
}

      return(0);
}

これが今の段階で考えてるいるプログラムになります。

ただの屍のようだ

Re: 配列の空白を削除するプログラム

#4

投稿記事 by ただの屍のようだ » 13年前

アルゴリズムは基本的に空間と時間のトレードオフだと思います。
この問題に関しては配列2つ使うやりかたをお勧めします。
*一度コンパイラ通してから載せたほうがいいです。

usao

Re: 配列の空白を削除するプログラム

#5

投稿記事 by usao » 13年前

元の配列を直接書き換えてしまうなら こんな感じでどうでしょうか

コード:

int main()
{
	char D[6] = "X Y Z";

	int pos=0;	//' 'でない文字を見つけたときにその文字D[pos]へ移す
	for( int i=0; i<5; i++ )
	{
		if( D[i] != ' ' )
		{
			if( i != pos )
			{
				D[pos] = D[i];
				D[i] = ' ';
			}
			pos++;
		}
	}

	printf( "[%s]\n",D );
	getchar();
	return 0;
}

閉鎖

“C言語何でも質問掲示板” へ戻る