質問:
/* c410 -- sorting*/

#include<stdio.h>

#define NMAX 200

int n;
int a[NMAX],x[NMAX];

void yomikomi()
{
for(n=0;scanf("%d%d",&a[n],&x[n])!=EOF;n++);
return;
}

void hyoozi()
{
int i;

for(i=0;i<n;i++)
printf("%5d %5d\n",a[i],x[i]);
return;
}

void seiretu()
{
int i,j,max,k,w;

for(i=0;i<n-1;i++){
max=x[i]; k=i;
for(j=i+1;j<n;j++)
if(x[j]>max){
max=x[j]; k=j;
}
w=a[k]; a[k]=a[i]; a[i]=w;
x[k]=x[i]; x[i]=max;
}
return;
}

main()
{
printf("Sorting\n");
yomikomi();
printf("\nInput data\n");
hyoozi();
seiretu();
printf("\nSorted data\n");
hyoozi();
return;
}

このプログラムを、偶数と奇数に分けてソートするプログラムに改良するにはどうしたらいいでしょうか。どなたかわかる方がいましたら、教えてください。
答え:
具体的に何を 偶数奇数に分けてソートしたいのでしょう?
ご提示のソースですと 入力されたデータの配列 xをソートして
それをキーに 配列aをソートしているようです

このxを 偶数/奇数に分けてソートするのでしょうか?
その場合 偶数を先に表示して 奇数をその後といった具合なのでしょうか

入力されるデータの範囲は規定されているのでしょうか
データ範囲が規定されているのであれば
偶数/奇数の先に表示する側を マスク処理してやるといった方法でできると思います

たとえば データが0から255までであるなら マスクとして0x4000などを使ってみてはいかがでしょう

hyoujiルーチンを
void hyouji()
{
for( int i=0; i < n; i++ ) {
printf( "%5d %5d\n", a[i], x[i] & 0xFF );
}
}

yomikomiルーチンを
void yomikomi()
{
for(n=0; scanf( "%d %d", &a[n], &x[n] ) != EOF; n++ ) {
/* 奇数を先に表示の場合 */
if ( x[n] % 2 == 0 ) {
x[n] |= 0x4000;
}
/* 偶数を先に表示の場合 */
/* if ( x[n] % 2 == 1 ) { */
/* x[n] |= 0x4000; */
/* } */
}
}

といった具合でしょう
補足の質問:
返事が遅くなってしまい申し訳ありません。ご指摘のとおりやってみたらうまくできました。ありがとうございました。この質問・回答は役に立ちましたか?

ウェブサイトのユーザーによる情報ポスト、JPQA.comのない保証の正しさ.

  • 職場のサーバーは、ファイル形式ごとにフォルダをわけ...
  • ウイルスバスター2007を使ってみたんですが今ま...
  • パソコンでメールを受信をしました・送信主の名前や住...
  • はじめまして。shell(UNIX)の質問なのですが、tes...
  • requireとincludeを使い分ける基準はなんですか?よ...
  • エクセルで、時間の計算を足し算していますが、セル...