Для школы у меня есть задание создать шаблон функции и использовать пользовательский ввод для динамической памяти.Мой код не работает, но мой учитель говорит, что он правильный, и не работает только мой компилятор.Это ошибка, которую я получаю от компилятора:
ошибка: недопустимое преобразование из 'int' в 'int *' [-fpermissive] ключ = массив [I];
Я использую компилятор MinGW64.Есть ли кто-нибудь с такой же проблемой, у кого есть решение?
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
template <class S>
void sortArray(S &array, int n);
template <class R>
void reverseArray(R &array, int n);
template <class P>
void printArray(P array, int n);
int main() {
int n1, n2, i;
srand(time(0));
cout << "insert how many numbers:";
cin >> n1;
int *nums = new int[n1];
if(nums == 0){
cout << "No memory allocated";
exit(1);
}
for(i = 0; i < n1; i++){
nums[i] = rand() % 100 + 1;
}
printArray(nums, n1);
sortArray(nums, n1);
printArray(nums, n1);
reverseArray(nums, n1);
printArray(nums, n1);
delete []nums;
cout << "insert how many characters:";
cin >> n2;
char *nums2 = new char[n2];
if(nums2 == 0){
cout << "No memory allocated";
exit(1);
}
for(i = 0; i < n2; i++){
nums2[i] = rand() % 25 + 97; // rand() % 93 + 33
}
printArray(nums2, n2);
sortArray(nums2, n2);
printArray(nums2, n2);
reverseArray(nums2, n2);
printArray(nums2, n2);
delete []nums2;
return 0;
}
template <class S>
void sortArray(S &array, int n){
int i, j;
S key;
for(i = 1; i < n; i++){
key = array[i];
for(j = i-1; (j>=0) && (array[j] > key); j--){
array[j+1] = array[j];
}
array[j+1] = key;
}
}
template <class R>
void reverseArray(R &array, int n){
int start = 0, end = n-1;
R temp;
while(start < end){
temp = array[start];
array[start] = array[end];
array[end] = temp;
start++;
end--;
}
}
template <class P>
void printArray(P array, int n){
int i;
for (i = 0; i < n; ++i) {
cout << "[" <<i << "] => " << array[i] << ", ";
}
cout << endl;
}