Пытаюсь использовать обозначение указателя вместо обозначения массива в этой программе оценки тестов, но я застрял

#c #arrays #pointers

#c #массивы #указатели

Вопрос:

Хорошо, итак, у меня есть это задание, в котором я пишу программу, в которую пользователь вводит результаты тестов, и я сортирую их в порядке возрастания. Но он также просит изменить обозначение массива на обозначение указателя. Ниже приведен мой код. Он запускается, но у него есть все обозначения массива. Пожалуйста, помогите!

 #include <iostream> //libraries
#include <iomanip>

using namespace std; //standard

void arrSelectSort( double*, int ); //prototypes
void showArr( double* arr, int size ) //array
{
    for( int i = 0; i < size;   i )
    cout << setw(8) << arr[i];
}
int main() //main function No array boxes allowed
{
   int numTests; //declare variable
   cout << "How many test scores would you like to enter? " << endl; //ask user how many test scores they want to enter
   cin >> numTests; //user input
   cin.sync();

   double* testScores = new double[numTests]; //pointer?

   cout << "Enter the test scores below:" << endl; //ask user to input test scores
   double  sumTestScores = 0.0; //declare variable
   for( int super = 0; super < numTests;   super ) //super is inheritance
   {
      cout << "Test Score " << (super   1) //inheritance
           << ": " << endl;
      cin >> testScores[super]; //Need to rid of this array notation
      cin.sync();
      sumTestScores  = testScores[super]; //need to get rid of the array notation
    }

   cout << "You entered testScores: " << endl; //show results
   cout << fixed << showpoint << setprecision(2); //show results
   showArr( testScores, numTests);

   cout << "The test scores sorted in ascending order are: " << endl; //show tests in ascending order
   arrSelectSort( testScores, numTests ); // show ascending
   showArr( testScores, numTests );

   cout << "The average score is " << sumTestScores / numTests << endl; //show average test score

   delete [] testScores; // free memory
   testScores = 0; // make testScores point to null

   char c; //safe exit
   cout << "Please hit any key and <ENTER> to continue..." << endl;
   cin >> c; //user input
   return 0; //exit
}
void arrSelectSort( double* arr, int size ) //ascending order sort
{
    int startScan; //declare variables
    double minIndex; // declare variables
    double minElem; // declare variables

    for (startScan = 0; startScan < (size - 1); startScan  ) //loop for scores
    {
        minIndex = startScan; //pointer?
        minElem = arr[startScan]; //no array
        for(int index = startScan   1; index < size; index  ) //ascending loop sort
        {
            if (arr[index] < minElem) //
            {
                minElem = arr[index]; //
                minIndex = index; //
            }
        }
        arr[(int)minIndex] = arr[startScan]; //
        arr[startScan] = minElem;//
    }
}
  

// Я попытался объявить массивы и заменить их на указатели, но это не сработает
// Эта программа запускается, но имеет проблему с межстрочным интервалом

Комментарии:

1. arr[i] эквивалентно *(arr i) .

2. не по теме: double minIndex не присваивается ничего, кроме int s, и преобразуется в int единственный раз, когда оно используется. Почему это double ? и int startScan; //declare variables комментарий вызывает ответ «Нет <ругательство удалено>, Шерлок». Это не добавляет ничего ценного и на самом деле заставляет вас выглядеть немного глупо. Я рекомендую не комментировать жестоко очевидные вещи.

3. «супер — это наследование», ошибка …, что теперь?

4. arr[i] эквивалентно *(arr i) , эквивалентно *(i arr) , эквивалентно i[arr] , эквивалентно к, ,,,,,,,,,,.

Ответ №1:

array[index] эквивалентно *(array index) , поэтому замените одно другим.