#1
by tara » 6年前
数値をいくつか読み込んで降順に並び替えるプログラムを作ったのですがうまくいきません。
条件として
・バブルソートを使うこと
・入力データはdouble型の配列で、この配列を並び替えて表示させる
・要素数nであるdouble型の配列dataの要素を降順にソートする以下のような関数を添字演算子を用いずに作成し、これを用いること。void descending_sort(double *data,int n)
・ポインタxとyが指すオブジェクトの値を交換する以下のような関数を作成し、これをdescending_sortで用いること。
void swap(double *x, double *y)
これらの4つです
コンパイルは通るのですが数値を打ち込んだ後、エラーが出て強制終了してしまいます。
また、条件の3つ目と4つ目がよくわからないので無視してソースコードを作ってしまいました。
これらを修正してくださると助かります。
よろしくお願いいたします
//以下ソースコードです
#include<stdio.h>
#define NUMBER 10
void descending_sort(double *data,int n)
{
int a,b,temp;
for(a=0;a<(n-1);a++){
for(b=(n+1);b<n;b++){
if(data[a]<data){
temp=data[a];
data[a]=data;
data=temp;
}
}
}
}
int main(void)
{
int data[NUMBER],i,j,n=NUMBER;
printf("%d個の数値を入力してください\n",NUMBER);
for(j=0;j<NUMBER;j++){
printf("data[%d]: ",j);
scanf("%lf",&data[j]);
}
void descending_sort(data,n);
for(i=0;i<10;i++){
printf("data[%d]: %f\n",i,data);
}
return 0;
}
数値をいくつか読み込んで降順に並び替えるプログラムを作ったのですがうまくいきません。
条件として
・バブルソートを使うこと
・入力データはdouble型の配列で、この配列を並び替えて表示させる
・要素数nであるdouble型の配列dataの要素を降順にソートする以下のような関数を添字演算子を用いずに作成し、これを用いること。void descending_sort(double *data,int n)
・ポインタxとyが指すオブジェクトの値を交換する以下のような関数を作成し、これをdescending_sortで用いること。
void swap(double *x, double *y)
これらの4つです
コンパイルは通るのですが数値を打ち込んだ後、エラーが出て強制終了してしまいます。
また、条件の3つ目と4つ目がよくわからないので無視してソースコードを作ってしまいました。
これらを修正してくださると助かります。
よろしくお願いいたします
//以下ソースコードです
#include<stdio.h>
#define NUMBER 10
void descending_sort(double *data,int n)
{
int a,b,temp;
for(a=0;a<(n-1);a++){
for(b=(n+1);b<n;b++){
if(data[a]<data[b]){
temp=data[a];
data[a]=data[b];
data[b]=temp;
}
}
}
}
int main(void)
{
int data[NUMBER],i,j,n=NUMBER;
printf("%d個の数値を入力してください\n",NUMBER);
for(j=0;j<NUMBER;j++){
printf("data[%d]: ",j);
scanf("%lf",&data[j]);
}
void descending_sort(data,n);
for(i=0;i<10;i++){
printf("data[%d]: %f\n",i,data[i]);
}
return 0;
}