質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

194閲覧

ランダムに作ったArrayをそれぞれのファンクションで使うには?

Momomo.

総合スコア22

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2018/02/01 05:40

ランダムに割り振った数字で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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

しかし、そのままプリントした後にランダムに作ったArrayが消えてしまって毎回新しくランダムで割り振られたArrayがinsertion sortされます。

なにを言っているのかわからない。
"毎回新しく"とは「実行するたびに」ということか? であるなら、それはアタリマエ。

あと、バグあるよ。

投稿2018/02/01 05:52

編集2018/02/01 05:53
episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Momomo.

2018/02/01 06:08

ごめんなさい。 実行するたびにと言いたかったのではなく、並べ替える前と後でArray内の数字が異なっていると思ったので、Array内の数字が2回ランダムに割り振られていると思ったのです。 しかし今確認してみたらちゃんと1度割り振られた数字を使っていました。早とちりした上に分かりづらい質問をしてしまいすみません。 後、私のコンピュータで実行した時はバグが出ないのですが、よろしければどの部分にバグがあるか教えていただけませんか?
episteme

2018/02/01 07:02 編集

for(int i=0; i<sizeof(arr); i++) arr[i]=rand()%100; sizeof(arr) は多分 120、用意した要素数を超えてる。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問