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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
まるくま
記事: 39
登録日時: 11年前
住所: 群馬県

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

#1

投稿記事 by まるくま » 11年前

読み込んだ値の配列を逆順に並べ替えるという問題です。
配列の要素数は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);
}


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

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

#2

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

i==4のとき、8-i==4です。

コード:

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

コード:

for(i=0; i<4; i++){
とし、
8-iではなく8-i-1としてください。
図や表を書くとわかりやすいです。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

初級者
記事: 200
登録日時: 13年前

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

#3

投稿記事 by 初級者 » 11年前

ちょっとした例です。

コード:

#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;
}

初級者
記事: 200
登録日時: 13年前

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

#4

投稿記事 by 初級者 » 11年前

要素数が8ならば、
[0]と[7]を入れ替える。
[1]と[6]を入れ替える。
[2]と[5]を入れ替える。
[3]と[4]を入れ替える。
おしまい。

まるくま
記事: 39
登録日時: 11年前
住所: 群馬県

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

#5

投稿記事 by まるくま » 11年前

みけ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とはどういう意味でしょうか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

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

#6

投稿記事 by softya(ソフト屋) » 11年前

前にも同じ様な間違いをしてませんか?
8-i-1とか前に似た感じのに見覚え有りませんでしょうか。

急いで進むだけでなく、前のもちゃんと復讐しましょう。
「C言語初心者のくだらない質問1」や「C言語初心者のくだらない質問2」とか問題は、今答えを見ずに書けますか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

まるくま
記事: 39
登録日時: 11年前
住所: 群馬県

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

#7

投稿記事 by まるくま » 11年前

やってみます。

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

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

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

#8

投稿記事 by softya(ソフト屋) » 11年前

下の検索でご自分の名前を入れれば検索出来ますよ。
というか答えを見ないなら、問題は持っているのではないでしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

まるくま
記事: 39
登録日時: 11年前
住所: 群馬県

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

#9

投稿記事 by まるくま » 11年前

わかりました。

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

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

ホヅミ
記事: 110
登録日時: 13年前

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

#10

投稿記事 by ホヅミ » 11年前

厳しい言い方になると思いますが、
「わからないから聞く」ではなく「覚えるために聞く」ようにしましょう。
覚えるようにすればサクサクプログラムが書けるようになりますので、今よりももっと楽しくできますよ。
がんばって!

まるくま
記事: 39
登録日時: 11年前
住所: 群馬県

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

#11

投稿記事 by まるくま » 11年前

わかってます。覚えなければ聞く意味ないですから

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

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

#12

投稿記事 by softya(ソフト屋) » 11年前

まるくま さんが書きました:わかってます。覚えなければ聞く意味ないですから
その後はいかがでしょうか。
復習は出来ましたでしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

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