掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

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

掲示板2

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

No.24590

バブルソートについて
投稿者---ボンゴレ(2005/12/07 21:27:09)


どうもボンゴレです。またお世話になります。
任意の数をパソコン上から入力して、その数を小さいものから
並べるようにしたいので、バブルソートを用いてやってみました。
OS Linux, コンパイラ gcc, です。
まだコンパイルしてないのですが、どこか間違ってるところが
あれば添削をお願いしてもいいでしょうか?

#include <stdio.h>

#define MAX 100

void sort( int *p, int n );

int main void
{
    int m[MAX];
    int a = 0;
    int b;

    while(( a<MAX ) && (scanf("%d", &m[a])==1))
        a++;

    for( b=0; b<a; b++)
    {
        printf("%d", m[b]);
    }

    sort( &m );

    for( b=0; b<a; b++ )
    {
        printf("%d", m[b]);
    }

    return 0;
}

void sort(int *p, int n)
{
    int i; j; k;

    for( i=0 ; i<n-1; i++)
    {
        for( j=n-1 ; j>i ; j--)
        {
            if( *(p+j-1) < *(p+j) )
            {
                k=*(p+j-1);
                *(p+j-1) = *(p+j);
                *(p+j)=k;
            }
        }
    }
}


任意といっても100コまでで考えています。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:バブルソートについて 24591 Craft 2005/12/07 21:39:56
<子記事> Re:バブルソートについて 24593 fuku 2005/12/07 21:46:07


No.24591

Re:バブルソートについて
投稿者---Craft(2005/12/07 21:39:56)


>まだコンパイルしてないのですが、どこか間違ってるところが
>あれば添削をお願いしてもいいでしょうか?

せめてコンパイルしたほうがいいです。

Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
警告 W8075 21: 問題のあるポインタの変換(関数 main )
エラー E2193 21: 呼び出し時のパラメータが足りない:sort(関数 main )
エラー E2451 33: 未定義のシンボル j(関数 sort )
エラー E2451 33: 未定義のシンボル k(関数 sort )
警告 W8057 47: パラメータ 'p' は一度も使用されない(関数 sort )
*** 3 errors in Compile ***

添削はこれからしてみます


この投稿にコメントする

削除パスワード

No.24594

Re:バブルソートについて
投稿者---Craft(2005/12/07 21:51:27)


>>まだコンパイルしてないのですが、どこか間違ってるところが
>>あれば添削をお願いしてもいいでしょうか?

アルゴリズムは問題ないです。
コンパイル通せば正常に動きます。


この投稿にコメントする

削除パスワード

No.24593

Re:バブルソートについて
投稿者---fuku(2005/12/07 21:46:07)


>まだコンパイルしてないのですが、どこか間違ってるところが
>あれば添削をお願いしてもいいでしょうか?

文法ミスが多いから先に最低限なおしてきた方が
良いと思います
  int main void
とか
  int i; j; k;
とか
関数 sort の引数が異なってるとか



この投稿にコメントする

削除パスワード

No.24595

Re:バブルソートについて
投稿者---RAPT(2005/12/07 22:07:48)


sort()関数の第一引数の型がおかしいのでは?

int m[MAX]; 
のときの &m の型は、int(*)[MAX] 型(要素数MAX個であるint型の配列へのポインタ型)なのに、
sort()関数の仮引数の型は、int* 型(int型へのポインタ型)になっています。



この投稿にコメントする

削除パスワード

No.24599

Re:バブルソートについて
投稿者---fuku(2005/12/07 22:39:33)


#include <stdio.h>

#define MAX 100

void sort( int *p, int n );

int main (void)
{
    int m[MAX];
    int a = 0;
    int b;

    puts("数字入力100個まで  Ctrl + Z で終了");
    while(( a<MAX ) && ((scanf("%d", &m[a])==1))
        a++;

    for( b=0; b<a; b++)
    {
        printf("%d", m[b]);
    }

    sort( m,a );

    for( b=0; b<a; b++ )
    {
        printf("%d", m[b]);
    }

    return 0;
}

void sort(int *p, int n)
{
    int i, j, k;

    for( i=0 ; i<n-1; i++)
    {
        for( j=n-1 ; j>i ; j--)
        {
            if( *(p+j-1) < *(p+j) )
            {
                k=*(p+j-1);
                *(p+j-1) = *(p+j);
                *(p+j)=k;
            }
        }
    }
}


関数 sortの引数
m[MAX]は元から配列のため
関数に引き渡すときは & いりません
初心者のためのポイント学習C言語第11章2節
が役に立つかも


この投稿にコメントする

削除パスワード

No.24601

Re:バブルソートについて
投稿者---fuku(2005/12/07 22:44:56)


すいません
19行目
’(’
が一つ多い・・・


この投稿にコメントする

削除パスワード

No.24603

Re:バブルソートについて
投稿者---ボンゴレ(2005/12/08 03:22:13)


わざわざありがとうございます。fukuさんには感謝します。


この投稿にコメントする

削除パスワード

No.24597

Re:バブルソートについて
投稿者---ボンゴレ(2005/12/07 22:29:43)


初歩的なところが間違ってましたね、ご指摘ありがとうございます。その引数のところがよくわからないんですよ。どれがどの型かっていうのがこんがらがっちゃって、どうすればいいのでしょうか?


この投稿にコメントする

削除パスワード

No.24598

Re:バブルソートについて
投稿者---shu(2005/12/07 22:36:39)


>初歩的なところが間違ってましたね、ご指摘ありがとうございます。その引数のところがよくわからないんですよ。どれがどの型かっていうのがこんがらがっちゃって、どうすればいいのでしょうか?

「自分で調べる。」なんて返信がある前に、自分で調べていれば良いかと思います。


この投稿にコメントする

削除パスワード

No.24600

Re:バブルソートについて
投稿者---RAPT(2005/12/07 22:40:34)


有名所ですが、前橋氏の「C言語 ポインタ完全制覇」のページとか。



この投稿にコメントする

削除パスワード

No.24605

Re:バブルソートについて
投稿者---ボンゴレ(2005/12/08 03:23:38)


ありがとうございます。参考にさせていただきます。


この投稿にコメントする

削除パスワード

No.24604

Re:バブルソートについて
投稿者---ボンゴレ(2005/12/08 03:23:10)


やはり勉強不足ですよね、自分自身でちゃんとできるようにがんばります。


この投稿にコメントする

削除パスワード

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