2012-03-06 8 views
1

私はこれまでのところ、このコードを持っているが、問題は、ユーザーが10個の数字を入力した後、それは文句を言わない、それはソートしません、昇順で番号または降順昇順および降順

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

    int main() 
    { 

    //variable declaration 
    int iNumbers[10]; 
    int iEntry=0; 
    int x=0; 

    printf("Enter 10 numbers\n"); 


    for (x=0; x < 10; x++) { 
     scanf("%d", &iNumbers[x]); //user for loop to scan every value in the array 


    } 

    printf("\n\nWhich order would you like to see your numbers?"); 
    printf("\n1)\tAscending\n"); 
    printf("\n2)\tDescending\n"); 
    scanf("%d", &iEntry); 

    switch(iEntry) { 
     case 1: 
      printf("\n\n%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\n\n",iNumbers[0],iNumbers[1],iNumbers[2] ,iNumbers[3],iNumbers[4],iNumbers[5],iNumbers[6],iNumbers[7],iNumbers[8],iNumbers[9]); 
     break; //prints all the numbers in the array in ascending order 

     case 2: 
      printf("\n\n%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\n\n",iNumbers[9],iNumbers[8],iNumbers[7],iNumbers[6],iNumbers[5],iNumbers[4],iNumbers[3],iNumbers[2],iNumbers[1],iNumbers[0]); 
     break; //prints all the numbers in the array in descending order 
     } 

     system("pause"); //pauses system 
     return 0; 
} //end of main function 
+0

うれしいですが、あなたは数字値に基づいて、またはそれらが入力された場合に基づいて並べ替えをしたいですか?ここにあなたが持っているものは、それらを入力したユーザーの順序または逆順で項目を印刷する必要があります。値に基づいてそれらを順番に取得するには、配列をソートする必要があります。 – twain249

+0

これは宿題ですか? Googleに多くのソリューションがあります...見つけようとしています... –

+0

入力した数字に基づいて数値ベースを並べ替える必要があります。プログラムがメニューを与えると、それはscanf関数に達する前に停止する – user1251302

答えて

0

ありませんを並べ替えることです数字はなので、まだコードを書いていないからです!

正順または逆順で印刷するコードは大丈夫ですが、数字を入力する順番に基づいています。

は、あなたがそれらではなく位置よりも数値的にソートしたい場合は、どちらかqsort機能を検討する必要があります(あなたはそれをソートしたい場合)、またはあなた自身(のような宿題をコーディングする必要がある場合は、一般的には、ソートアルゴリズムを調べます)。

後者の例として、以下の非常に単純な疑似コードを使用できます。それは深刻な使用のためにソートので、実際には適していませんバブルだが、それは小さなデータセットおよび/または宿題のための十分以上だ:

for i = 1 to length: 
    for j = 1 to length -1: 
     if array[j] > array[j+1]: 
      temp = array[j] 
      array[j] = array[j+1] 
      array[j+1] = temp 

あなたはコメントで言及として、あなたはバブルソートを使用することはできません場合は、必要がありますgoogleをone of the other sort algorithmsとコード化してください。

しかし、私は理解しやすいものに固執しようとします。

for i = 1 to length-1: 
    minidx = i 
    for j = i+1 to length: 
     if array[j] < array[minidx]: 
      minidx = j 
    if minidx != i: 
     temp = array[i] 
     array[i] = array[minidx] 
     array[minidx] = temp 

これが唯一の主要なパスごとに一度交換するのではなく(おそらく)何回もの利点があります:バブルソートから次のステップアップは、おそらく以下の選択ソート、擬似コードになります。指定された位置にどのインデックスを配置してからスワップするかを見つけるためにのみマイナーパスを実行します。

比較機能では、<ではなく、>という2つのケース(昇順と降順)の唯一の違いがあります。

+0

我々は両方の関数と私たちはユーザーのバブルソートのためのアルゴリズムを使用する必要があります – user1251302

0

そこにあなたは、単にユーザーの入力として数値を表示している数字をソートする任意のメカニズムがない場合、または逆の順序で

switch(iEntry) { 
    case 1: 
     printf("\n\n%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\n\n",iNumbers[0],iNumbers[1],iNumbers[2] ,iNumbers[3],iNumbers[4],iNumbers[5],iNumbers[6],iNumbers[7],iNumbers[8],iNumbers[9]); 
    break; //prints all the numbers in the array in ascending order 

    case 2: 
     printf("\n\n%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\n\n",iNumbers[9],iNumbers[8],iNumbers[7],iNumbers[6],iNumbers[5],iNumbers[4],iNumbers[3],iNumbers[2],iNumbers[1],iNumbers[0]); 
    break; //prints all the numbers in the array in descending order 
    } 

は、次のコード

#include <stdio.h> 
#include <conio.h> 
#include <stdlib.h> 
int array[] = { 90, 3, 33, 28, 80, 49, 8, 30, 36, 25 }; 
int sort(const void *x, const void *y) { 
    return (*(int*)x - *(int*)y); 
} 
void main() { 
    clrscr(); 
    int i; 
    qsort(array, 10, sizeof(int), sort); 
    for (i=0; i<10; i++) { 
    printf("%d ", array[i]); 
    } 
    getch(); 
} 
+1

私は10の数字を入力するために何らかの方法が必要です毎回これになるでしょう – user1251302

+0

あなたはこのコードとあなたのコードをマージすることができます –

0

バブルを学ぶために試しをしてみてください配列をソートするには、メソッドをソートします。このexampleをご覧ください。

作品をソートする方法の例を理解することは簡単な

...

それは:)

関連する問題