プロが教えるわが家の防犯対策術!

例えば

int number[] = {2,4,5,7,5,4,6,11};

をなんとかして2,4,4,5,5,6,7,11として並べたいのですが、どうやってプログラムを書いたらよいのでしょうか。

A 回答 (6件)

こんばんは。


再々登場の#4です。

>printfというのは出力するという意味なのでしょうか。

その通りです。
    • good
    • 0

こんばんは。

No.4です。補足します。

>ちなみに printf("%d",number[t]); これはどういう意味なんですか。

配列を表示するプログラムです。


>D:\prog>narabekae
2458355724535578
となり、並べ替えられていません。
どうすればよいのでしょう。

改行忘れました。見づらくてすみません。
では、訂正いたします。

#include<stdio.h>
int main(void)
{

int number[]={2,4,5,8,3,5,5,7};
int i,j,s;

for(i=0; i<8; i++){ /*配列の数が8つ*/
printf("%d",number[i]); /*最初に入っている配列を表示*/
}
printf("\n");
for(i=0; i<7; i++) {
for(j=i+1; j<8; j++) {
if(number[i]>number[j]) {
s=number[i];
number[i]=number[j];
number[j]=s;
}
}
}

for(i=0; i<8; i++) {
printf("%d",number[i]); /*並べ替えた配列を表示*/
}

return 0;
}

これも微妙ですがどうでしょうか?
それでも駄目だったら申し訳ないです(--;
もし違っていたらif()の中を変えてみてください。

私が使っているのはC言語なんですが、基本的なことは学べると思うので、参考までに下のURLを。

参考URL:http://www.geocities.co.jp/SiliconValley-Bay/8490/
    • good
    • 0
この回答へのお礼

2度もどうもありがとうございました。
とてもいい調子に並べてくれます。
私はC++なので分からない所があるのですが、printfというのは出力するという意味なのでしょうか。

お礼日時:2003/08/07 12:25

こんにちは。


最近配列ができるようになったので、あくまでもご参考に。

#include<stdio.h>
int main(void)
{

int number[]={2,4,…略};
int j,s,t;

for(t=0; t<8; t++) /*配列の数が8つ*/ {
printf("%d",nmuber[t]); }
for(j=0; j<8; j++) {
if(nmuber[j]>nmuber[j+]) {
s=number[j];
nmuber[j]=number[j+1];
number[j+1]=s; } }
for(t=0; t<8; t++) {
printf("%d",number[t]); }

return 0;
}

微妙ですが、これでどうでしょうか?

この回答への補足

#include<stdio.h>
int main(void)
{

int number[]={2,4,5,8,3,5,5,7};
int j,s,t;

for(t=0; t<8; t++){ /*配列の数が8つ*/
printf("%d",number[t]);
}
for(j=0; j<8; j++) {
if(number[j]>number[j+1]) {
s=number[j];
number[j]=number[j+1];
number[j+1]=s;
}
}

for(t=0; t<8; t++) {
printf("%d",number[t]);
}

return 0;
}

osiataoさんのを使わさせて貰いましたが、これをコンパイルしても

D:\prog>narabekae
2458355724535578

となり、並べ替えられていません。
どうすればよいのでしょう。

ちなみに
printf("%d",number[t]);
これはどういう意味なんですか。

補足日時:2003/08/07 00:06
    • good
    • 0

C++ ならこんな方法もあります。



#include <algorithm> // std::sort を使うためのおまじない

int number[] = {2,4,5,7,5,4,6,11};
const int n = sizeof(number)/sizeof(number[0]); // 要素数

std::sort(number, number + n); // 並べ替え
    • good
    • 0

#1です。



先にあげた例はあくまで例です。本当は、初期値つきの配列の中身を直接いじるのはあまり好ましくないやりかたです。
念のため、申しそえておきますね。
    • good
    • 0

qsort() というライブラリ関数を使います。



ちょっと使い方に癖がある関数なのでなれないと難しいかもしれませんが、とりあえず例を書いておきます。

本当は、この手のものは、最初はライブラリに頼らず自分で作ってみるととても勉強になるんですけどね。まともな入門書なら必ず書いてあるネタです。


---

#include <stdio.h>
#include <stdlib.h>

int number[] = {2,4,5,7,5,4,6,11};

int cmp( const void *a , const void *b ) {
return *(int *)a-*(int *)b ;
}

int main() {

int i ;

qsort( number , 8 , sizeof (int) , cmp ) ;
for ( i=0 ; i<8 ;i++ ) {
printf( "%d\n" , number[i] );
}
return 0 ;
}
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!