昇順並び替えの出力
Posted: 2015年12月29日(火) 13:04
こんにちは
課題で少し分らないところがあるので助けてほしいです。
入力された10個の整数を昇順に並び替えて出力する。
というものなので
/**************
sort 10 data
***************/
#include <stdio.h>
#define OK 0
#define MAX 10
int inputnum(int num[]);
int outputnum(int num[]);
main(){
int num[MAX];
int status;
printf("学籍番号 名前\n");
status=inputnum(num);
status=sortnum(num);
status=outputnum(num);
return(OK);
}
/**************************
input 10 numbers to array
***************************/
int inputnum(int num[]){
int i;
for(i=0;i<MAX;i++){
printf("数値%d = ",i+1);
scanf("%d",&num);
}
printf("数値入力完了\n");
return(OK);
}
/****************
sort 10 numbers
*****************/
#define FON 1
#define FOFF 0
int sortnum(int num[]){
int i,j;
int work;
for(i=0;i<MAX;i++){
for(j=i+1;j<MAX;j++){
if(num>num[j]){
work=num[j];
num[j]=num;
num=work;
}
}
}
printf("並び替え完了\n");
return (OK);
}
/**************************
output 10 numbers to array
***************************/
int outputnum(int num[]){
int i;
for(i=0;i<MAX;i++){
printf("数値%d = %d\n",i+1,num);
}
printf("数値出力完了\n");
return(OK);
}
赤の部分を自分で作成しました。
(この部分だけ各自作成する課題です)
これでもちゃんと出力できるのですが、ループ(無駄?)が多いと言われました。
どこを直せば無駄なくできるのでしょうか。
また、コンパイル時に「statusに代入した値は使われていない(関数main)」という警告が出ます。
これは解決しなくても動くようですがこれを解決できればした方がいいとのことなのでどうすればよいかわかる方いましたら教えていただきたいです。
よろしくお願いします。
課題で少し分らないところがあるので助けてほしいです。
入力された10個の整数を昇順に並び替えて出力する。
というものなので
/**************
sort 10 data
***************/
#include <stdio.h>
#define OK 0
#define MAX 10
int inputnum(int num[]);
int outputnum(int num[]);
main(){
int num[MAX];
int status;
printf("学籍番号 名前\n");
status=inputnum(num);
status=sortnum(num);
status=outputnum(num);
return(OK);
}
/**************************
input 10 numbers to array
***************************/
int inputnum(int num[]){
int i;
for(i=0;i<MAX;i++){
printf("数値%d = ",i+1);
scanf("%d",&num);
}
printf("数値入力完了\n");
return(OK);
}
/****************
sort 10 numbers
*****************/
#define FON 1
#define FOFF 0
int sortnum(int num[]){
int i,j;
int work;
for(i=0;i<MAX;i++){
for(j=i+1;j<MAX;j++){
if(num>num[j]){
work=num[j];
num[j]=num;
num=work;
}
}
}
printf("並び替え完了\n");
return (OK);
}
/**************************
output 10 numbers to array
***************************/
int outputnum(int num[]){
int i;
for(i=0;i<MAX;i++){
printf("数値%d = %d\n",i+1,num);
}
printf("数値出力完了\n");
return(OK);
}
赤の部分を自分で作成しました。
(この部分だけ各自作成する課題です)
これでもちゃんと出力できるのですが、ループ(無駄?)が多いと言われました。
どこを直せば無駄なくできるのでしょうか。
また、コンパイル時に「statusに代入した値は使われていない(関数main)」という警告が出ます。
これは解決しなくても動くようですがこれを解決できればした方がいいとのことなのでどうすればよいかわかる方いましたら教えていただきたいです。
よろしくお願いします。