ページ 11

読み込んだ値の配列を逆に並べ替える

Posted: 2013年3月24日(日) 21:41
by まるくま
読み込んだ値の配列を逆順に並べ替えるという問題です。
配列の要素数は8とします。

プログラムを書いてみたのですが逆順に並べ替えられず
1つずつ数がずれてしまいます。

どうしてでしょうか?

あと scanf関数を利用したプログラムにデバッカを使おうとするとうまく機能しない
というか、for文の中にscanf関数があると使えません(´・ω・`)

コード:

#include <stdio.h>

int main(void)
{
	int i;
	int vx[8];

	for(i=0; i<8; i++){
		printf("vx[%d]:", i);
		scanf("%d", &vx[i]);
	}

	for(i=1; i<=4; i++){
		int temp = vx[i];
		vx[i]    = vx[8-i];
		vx[8-i]  = temp;
	}

	for(i=0; i<8; i++){
		printf("vx[%d] = %d\n", i, vx[i]);
	}

	return(0);
}


Re: 読み込んだ値の配列を逆に並べ替える

Posted: 2013年3月24日(日) 21:45
by みけCAT
i==4のとき、8-i==4です。

コード:

for(i=1; i<=4; i++){
のかわりに

コード:

for(i=0; i<4; i++){
とし、
8-iではなく8-i-1としてください。
図や表を書くとわかりやすいです。

Re: 読み込んだ値の配列を逆に並べ替える

Posted: 2013年3月24日(日) 22:01
by 初級者
ちょっとした例です。

コード:

#include <stdio.h>

#define N (8)

int main(void)
{
    int arr[N], i;
    
    for (i = 0; i < N; i++) {
        printf("[%d]=", i), scanf("%d", &arr[i]);
    }
    for (i = 0; i < N/2; i++) {
        int t = arr[i];
        arr[i] = arr[N-1-i];
        arr[N-1-i] = t;
    }
    for (i = 0; i < N; i++) {
        printf("%d ", arr[i]);
    }
    putchar('\n');
    return 0;
}

Re: 読み込んだ値の配列を逆に並べ替える

Posted: 2013年3月24日(日) 22:18
by 初級者
要素数が8ならば、
[0]と[7]を入れ替える。
[1]と[6]を入れ替える。
[2]と[5]を入れ替える。
[3]と[4]を入れ替える。
おしまい。

Re: 読み込んだ値の配列を逆に並べ替える

Posted: 2013年3月24日(日) 22:25
by まるくま
みけCATさん、初級者さん、ありがとうございます(`・ω・´)

コード:

#include <stdio.h>

int main(void)
{
	int i;
	int vx[8];

	for(i=0; i<8; i++){
		printf("vx[%d]:", i);
		scanf("%d", &vx[i]);
	}

	for(i=0; i<4; i++){
		int temp = vx[i];
		vx[i]    = vx[7-i];
		vx[7-i]  = temp;
	}

	for(i=0; i<8; i++){
		printf("vx[%d] = %d\n", i, vx[i]);
	}

	return(0);
}
初級者さん#defineとはどういう意味でしょうか?

Re: 読み込んだ値の配列を逆に並べ替える

Posted: 2013年3月24日(日) 22:32
by softya(ソフト屋)
前にも同じ様な間違いをしてませんか?
8-i-1とか前に似た感じのに見覚え有りませんでしょうか。

急いで進むだけでなく、前のもちゃんと復讐しましょう。
「C言語初心者のくだらない質問1」や「C言語初心者のくだらない質問2」とか問題は、今答えを見ずに書けますか?

Re: 読み込んだ値の配列を逆に並べ替える

Posted: 2013年3月24日(日) 22:51
by まるくま
やってみます。

自分が過去立てたトピック一欄が乗ってるページとかってあるんですか?

Re: 読み込んだ値の配列を逆に並べ替える

Posted: 2013年3月24日(日) 22:53
by softya(ソフト屋)
下の検索でご自分の名前を入れれば検索出来ますよ。
というか答えを見ないなら、問題は持っているのではないでしょうか?

Re: 読み込んだ値の配列を逆に並べ替える

Posted: 2013年3月24日(日) 22:59
by まるくま
わかりました。

いや自分でわかんないことどんどん聞いてるんで
どの問題だしたかはあんま覚えてません。

答え見ないでやってるんで大丈夫です。

Re: 読み込んだ値の配列を逆に並べ替える

Posted: 2013年3月27日(水) 16:05
by ホヅミ
厳しい言い方になると思いますが、
「わからないから聞く」ではなく「覚えるために聞く」ようにしましょう。
覚えるようにすればサクサクプログラムが書けるようになりますので、今よりももっと楽しくできますよ。
がんばって!

Re: 読み込んだ値の配列を逆に並べ替える

Posted: 2013年3月28日(木) 09:34
by まるくま
わかってます。覚えなければ聞く意味ないですから

Re: 読み込んだ値の配列を逆に並べ替える

Posted: 2013年3月28日(木) 10:38
by softya(ソフト屋)
まるくま さんが書きました:わかってます。覚えなければ聞く意味ないですから
その後はいかがでしょうか。
復習は出来ましたでしょうか?