ページ 1 / 1
C 初心者です
Posted: 2013年7月01日(月) 00:36
by tamagokun
配列の中の{0}の数字を一番最後にもっていくプログラムを作りたいです。
例 {2,0,3}→{2,3,0}
{2,5,0,2,0,5}→{2,5,2,5,0,0}のようにしたいのですが配列の個数が3個のとき,7個のときの表示が上手くいきません。
どうしてでしょうか? ご教授お願いします。
コード:
#include <stdio.h>
int main()
{
int m,i,k,j;
int a[]={};
m=sizeof(a) / sizeof(a[0]);
printf("m=%d\n",m);
for(i=0; i<m; i++)
{
// printf("i=%d\n",i);
for(j=0;j<m;j++)
{
if(a[j]==0)
{
k=a[j+1];
a[j+1]=a[j];
a[j]=k;
}
}
}
for(i=0;i<m;i++)
{
printf("配列の中身は%d\n",a[i]);
}
return 0;
}
Re: C 初心者です
Posted: 2013年7月01日(月) 02:09
by derok
jが配列の一番最後のとき、
j+1は配列の外にあるため、何が入っているのか分かりません。
それを無理矢理コピーしているのでおかしくなっています。
Re: C 初心者です
Posted: 2013年7月01日(月) 07:40
by box
tamagokun さんが書きました:
コード:
int a[]={};
m=sizeof(a) / sizeof(a[0]);
printf("m=%d\n",m);
mの値はいくつになっていますか?
このコードで、配列aがきちんと定義できているとは思えないのですけれど…。
Re: C 初心者です
Posted: 2013年7月01日(月) 09:38
by tamagokun
返信ありがとうございます。
>>derokさん
ではこのようなプログラムはどのように書けばいいのでしょうか ヒントをお願いします。m(--)m
>>derokさん
int a[]={この中身は任意の数字です。}
説明不足ですいません。
Re: C 初心者です
Posted: 2013年7月01日(月) 09:44
by tamagokun
解決しました。
ありがとうございました!!
Re: C 初心者です
Posted: 2013年7月01日(月) 21:48
by みけCAT
解決したのでしたら、解決したコードの掲示と解決チェックをお願いします。