#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)
, поэтому замените одно другим.