我正在生成一個隨機整數數組,並嘗試將值向右移一位,並用前一個元素替換第一個元素。將數組向右移動
輸出沒有排序,最後一個元素是一個隨機生成的整數。
#include <iostream>
#include <cstdlib>
#include <iomanip>
using namespace std;
void shift(int values[], int size) {
int temp;
for (int i = 0; i < size; i++) {
temp = values[size - 1];
values[i] = values[i + 1];
values[0] = temp;
cout << values[i] << setw(4);
}
cout << endl;
}
int main()
{
cout << "Random 10 index array" << endl;
const int CAP = 10;
int numbers[CAP];
srand(time(0));
int i;
for (i = 0; i < CAP; i++) {
int rng = rand() % 100 + 1;
numbers[i] = rng;
cout << numbers[i] << setw(4);
}
cout << "shifting all elements to the right: " << endl;
shift(numbers, CAP);
cout << endl;
system("pause");
return 0;
}
我試過使用i < size - 1
,但是我得到了9個我需要的10個數字。
[你的橡皮鴨子想和你談談](https://en.wikipedia.org/wiki/Rubber_duck_debugging)。根據你的橡皮鴨,你的陣列的最後一個元素應該移動到第一個元素一次,作爲這個旋轉的一部分。這是不言而喻的,你的橡皮鴨想知道你期望如何工作,何時這樣做的代碼將在每次循環迭代中執行,而不僅僅是一次。看起來,你的代碼對你的橡皮鴨根本沒有任何意義。 –
我錯過了什麼,呼叫轉移的地方。 – IronMan007
'std :: deque'是比這個應用程序更好的選擇。 –