-2
Tout dans mon code fonctionne, sauf pour les mathématiques à la fin, produit toutes sortes de nombres négatifs fous. Des conseils pour réparer mon désordre de code?C++ Pointer math lutte
#include <iostream>
using namespace std;
double getScores(double *, int);
int sort(double *, int);
double calcAvg(double *, int); //function prototypes
void displayRpt(double *, int);
int main() {
int size;
cout << "Welcome to Daniel Mikos' Quiz Score Calculator" << endl << endl;
cout << "How many test scores would you like to enter? "; //prompt for # of test scores
cin >> size;
double *scores; //pointer for array
scores = new double[size]; //Declares a pointer to an array of doubles
getScores(scores, size);
sort(scores, size);
calcAvg(scores,size);
displayRpt(scores, size);
system("Pause");
return 0;
}
double getScores(double *scores, int size) { //prompts for scores
while (size <= 0) {
cout << "Error! There must be at least one score!" << endl;
cout << "Please try again!" << endl;
cout << "Enter number of test scores you would like to process: ";
cin >> size;
}
//scores = new double[size];
for (int i = 0; i < size; i++){
cout << "Enter test score " << (i +1)<< ": "; //prompt for each score
cin >> scores[i];
}
delete scores;
return 0;
}
int sort(double *scores, int size) { //sorts array from largest to smallest
double temp;
for (int i = 1; i <= size; i++) {
for (int j = 0; j < size; j++) {
if (scores[j + 1] > scores[j]) {
temp = scores[j];
scores[j] = scores[j + 1];
scores[j + 1] = temp;
}
}
}
return *scores;
}
double calcAvg(double *scores, int size) { //calculates average test score
double average;
double total = 0;
for (int i = 0; i < size; i++) {
total = total + scores[i];
}
average = total/size;
cout << endl <<"The average score: " << average <<endl <<endl;
return average;
}
void displayRpt(double *scores, int size) { //output report
for (int i = 1; i <= size; i++) {
cout << "Test score ("<< i <<"): "<<scores[i]<<endl;
}
}
combien/comment grands nombres? Le dépassement – user463035818
'displayRpt' va probablement de la fin du tableau. 'sort' ne fait pas ce que vous attendez. Il semble que vous deviez apprendre à utiliser un débogueur pour parcourir votre code. Avec un bon débogueur, vous pouvez exécuter votre programme ligne par ligne et voir où il dévie de ce que vous attendez. C'est un outil essentiel si vous voulez faire de la programmation. Pour en savoir plus: ** [Comment déboguer de petits programmes] (http://ericlippert.com/2014/03/05/how-to-debug-small-programs/) ** – NathanOliver
Le tri aura des accès hors de portée pour '[j + 1]' quand 'j' a sa valeur maximale. –