【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※返信付き投稿の削除は禁止!
 ※マルチポスト(多重投稿)は慎んで!

 詳しくはこちら


本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.21222

ポインタを使っての並び替え
投稿者---カズ(2005/06/03 10:35:30)


簡単な問題だと思うのですが、プログラムが理想どおりに動きません。
どこが間違っているのでしょうか?

#include<stdio.h>
#define MAX 10

int main(void)
{
int input_num[MAX];
int *p,*q;
int i;

for(i=0;i<MAX;i++)
scanf("%d",&input_num[i]);

for(p=input_num;*(p-1);++p)
for(q = p+1;*q;++q)
if(*p>*q) {
int temp;
temp = *p;
*p = *q;
*q = temp;
}

for(i=0;i<MAX;i++)
printf("%d%c",input_num[i],((i%5)==4) ? '\n' : '\t');

return 0;
}

よろしくお願いします。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:ポインタを使っての並び替え 21223 επιστημη 2005/06/03 11:07:43


No.21223

Re:ポインタを使っての並び替え
投稿者---επιστημη(2005/06/03 11:07:43)


>簡単な問題だと思うのですが、プログラムが理想どおりに動きません。

理想って?

> for(p=input_num;*(p-1);++p)
> for(q = p+1;*q;++q)

ループ継続条件 *(p-1) および *q は何を意図しているのですか?



この投稿にコメントする

削除パスワード

No.21224

Re:ポインタを使っての並び替え
投稿者---カズ(2005/06/03 11:20:58)


理想は入力した数が昇順に並びかわってくれることです。
しかしこのプログラムでは関係ない数字まで出てきてしまうのです。

>ループ継続条件 *(p-1) および *q は何を意図しているのですか?
*(p-1)と*pはヌル文字がでたら抜けるとしたかったのですが・・・。
文字列で取ってるわけではないのでヌル文字では無いですね。
すみません。



この投稿にコメントする

削除パスワード

No.21227

Re:ポインタを使っての並び替え
投稿者---επιστημη(2005/06/03 11:44:10)


>>ループ継続条件 *(p-1) および *q は何を意図しているのですか?
>*(p-1)と*pはヌル文字がでたら抜けるとしたかったのですが・・・。
>文字列で取ってるわけではないのでヌル文字では無いですね。
>すみません。

ですね。なのでやり直し。
それにしても p=input_num; *(p-1) には驚きました。
配列で置き換えれば input_num[-1] となり、どう考えても範囲外。




この投稿にコメントする

削除パスワード

No.21409

Re:ポインタを使っての並び替え
投稿者---左団扇(2005/06/13 23:21:37)


恐らくバブルソートかなんかをやろうとしてるんだと思われ。



この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧