У меня возникают проблемы с назначением кодирования в моем классе C++. Назначение требует, чтобы мы имели массивы переменной длины, вызванные функциями. Я всегда получаю ошибку в названии, когда пытаюсь вызвать функцию в главном. Я видел другие вопросы, подобные этому, но я не могу представить ответы, которые решили, что любой из них работает в моей собственной программе.
'# include <iostream> //Allows user input
using namespace std;
int i, hold; //Global variables for use in functions and loops through-out the program.
//Functions below main.
int main()
{
int length=0;
int* a = new int[length];; //This array has 'length' spaces.
cout << "How many numbers would you like to sort?\n";
cin >> length;
for(i=0;i<length;i++) //This loop populates the array.
{
cout << "Enter a number.\n";
cin >> a[i];
}
cout << "This doesn't work ->" << sortDescending(a, length) << endl;
cout << "This also doesn't work" << shiftRight(a, length) << endl;
return 0;
}
И вот сами функции.
void sortDescending(int a[], int length) //Sorts the numbers in the array in descending order.
{
for(i=0;i<length;i++)
{
if(a[i]<a[i+1]) //Detects if the first number is smaller than the second.
{ //If the first is smaller than the second then this swaps them.
hold=a[i];
a[i]=a[i+1];
a[i+1]=hold;
}
}
}
void shiftRight(int a[], int length)
{
for(i=0;i<length;i++)
{
a[length-i]=a[length-(i-1)];
}
}
Две функции sortDescending()
и shiftRight()
- обе функции возврата void
. Функция, возвращающая void
, не имеет оператора return, и поэтому из вызова не может быть получено никакого значения. Поэтому попытка "распечатать" возвращаемое значение функций в следующем коде будет неизменно терпеть неудачу:
... << sortDescending(a, length) << ...
... << shiftRight(a, length) << ...
Я сделаю шаг и предположим, что вы пытаетесь напечатать фактический массив. Это можно сделать просто с помощью цикла for после вызова функций:
sortDescending(a, length);
std::cout << "After sortDescending(): ";
for (int i = 0; i < length; ++i)
{
std::cout << a[i] << " ";
}
std::cout << std::endl;
shiftRight(a, length);
std::cout << "After shiftRight(): ";
// Do the same as the above
Для дальнейшего удобства вы можете даже распечатать массив в двух функциях. Но это задача, которую я оставлю вам. :)
Не используйте функцию сортировки. библиотека алгоритмов использования
#include <algorithm>
затем выполните сортировку следующим образом:
cout << "This will work" << sort(a, a+length) << endl;
std::sort()
возвращает void
поэтому я не знаю, что должен делать ваш пример кода.
a
length
. Вы должны переключить это.