请编写函数实现将一个数值插入到数组中适当的位置,使新数组按降序排列,并将插入的位置输出到屏幕上。 说明:1)原数组大小和数值由键盘输入,动态创建数组; 2)插入的数值由键盘输入。3)如果插入数据与原数组中某数据相同,则插在该数据之前。
时间: 2023-03-22 21:04:39 浏览: 68
以下是实现该功能的函数代码:
```c++
void insertAndSort(int* arr, int size, int num) {
int pos = size; // 默认插入到数组末尾
for (int i = 0; i < size; i++) {
if (num >= arr[i]) { // 找到第一个小于等于插入数值的位置
pos = i;
break;
}
}
// 将插入位置之后的元素依次后移一位
for (int i = size - 1; i >= pos; i--) {
arr[i + 1] = arr[i];
}
arr[pos] = num; // 插入新元素
cout << "插入位置为:" << pos << endl;
}
```
该函数接受三个参数:原数组指针、原数组大小和插入的数值。首先遍历原数组,找到第一个小于等于插入数值的位置,然后将插入位置之后的元素依次后移一位,最后在插入位置处插入新元素。插入位置即为找到的第一个小于等于插入数值的位置。最后输出插入位置即可。
完整代码如下:
```c++
#include <iostream>
using namespace std;
void insertAndSort(int* arr, int size, int num) {
int pos = size; // 默认插入到数组末尾
for (int i = 0; i < size; i++) {
if (num >= arr[i]) { // 找到第一个小于等于插入数值的位置
pos = i;
break;
}
}
// 将插入位置之后的元素依次后移一位
for (int i = size - 1; i >= pos; i--) {
arr[i + 1] = arr[i];
}
arr[pos] = num; // 插入新元素
cout << "插入位置为:" << pos << endl;
}
int main() {
int size, num;
cout << "请输入原数组大小:";
cin >> size;
int* arr = new int[size];
cout << "请输入原数组元素:";
for (int i = 0; i < size; i++) {
cin >> arr[i];
}
cout << "请输入要插入的数值:";
cin >> num;
insertAndSort(arr, size, num);
cout << "插入后的数组为:";
for (int i = 0; i <= size; i++) {
cout << arr[i] << " ";
}
delete[] arr;
return 0;
}
```