ランダムに割り振った数字でArrayを作り、それをまずそのままプリントし、それからそのArrayを回帰でinsertion sortして並べ直したものをプリントするというプログラムを書いています。
しかし、そのままプリントした後にランダムに作ったArrayが消えてしまって毎回新しくランダムで割り振られたArrayがinsertion sortされます。
1回目に作ったランダムArrayを使ってプリントした後並べ替えて再度プリントするにはどうすれば良いですか?何かメモリに保存する?などの方法があるのでしょうか?
C++を学び始めて1ヶ月でまだ右も左も分かりません。アドバイスをいただけると助かります!
c++
1#include <iostream> 2#include <ctime> 3using namespace std; 4 5void printUnsortedArray(int arr[], int n){ 6 //define count for printing 6 per line 7 int count=0; 8 cout << "The array before sorting" <<endl; 9 for(int i=0; i<n; i++){ 10 //print num in array & space between each num 11 cout << arr[i] <<" "; 12 count++; 13 //print new line after printing 6 nums 14 if(count==6){ 15 count=0; 16 cout << endl; 17 } 18 } 19 cout << "\n"; 20} 21 22void insertionSort(int arr[], int n){ 23 //define value at last position 24 int last=arr[n-1]; 25 int i=n-2; 26 27 //base case 28 if(n<=1) 29 return; 30 31 //sort first value 32 insertionSort(arr, n-1); 33 34 //move right if the the num is greater than key 35 while(i>=0 && arr[i]>last){ 36 arr[i+1]=arr[i]; 37 i--; 38 } 39 arr[i+1]=last; 40} 41 42void printSortedArray(int arr[], int n){ 43 //define count for printing 6 per line 44 int count=0; 45 cout << "The array after sorting" <<endl; 46 for(int i=0; i<n; i++){ 47 //print num in array & space between each num 48 cout << arr[i] <<" "; 49 count++; 50 //print new line after printing 6 nums 51 if(count==6){ 52 count=0; 53 cout << endl; 54 } 55 } 56 cout << "\n"; 57} 58 59int main(){ 60 //create array 61 int arr[30]; 62 srand(time(NULL)); 63 64 for(int i=0; i<sizeof(arr); i++) 65 arr[i]=rand()%100; 66 67 int n=sizeof(arr)/sizeof(arr[0]); 68 69 //call functions 70 printUnsortedArray(arr,n); 71 insertionSort(arr,n); 72 printSortedArray(arr,n); 73 74 return 0; 75 76} 77 78 79
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/01 06:08
2018/02/01 07:02 編集