2017-02-03 1 views
0

Ich brauche Hilfe mit einem einfachen Programm. Und nein - es ist nicht meine Hausaufgabe (ich lerne Cpp für mich selbst und benutze es vielleicht in Zukunft) Also ja. Ich habe ein Programm, liest Arrays Größe 10, und setzen Sie dann Zahlen in es {2.56, 1.598, 0, 5.15, 0, 3.012, 10, 4.789, 2.569, 0} Das Programm sollte die 0 ignorieren, und es tut, aber das Problem ist .. Ich brauche die Nummer der, wo die Nummer in platziert ist Array (kleinste Zahl ist 1.598 und seine 2 im Array) Inzwischen bekomme ich Nummer 8 auf dem größten (sollte 5 sein, wenn Nullen ignoriert werden würden) und 1 am kleinsten. Wie kann ich das beheben? Heres die Leere der größten Anzahl:Array Element Nummer

void Biggest(float array[], int n, float &max, int &maxNr) 
{ 
    max = array[0] 
    for (int i = 1; i < n; i++){ 
     if (array[i] == 0) 
      continue; 
     if (array[i] > max){ 
      max = array[i]; 
      maxNr = i; 
     } 
    } 
} 

Druck Leere:

void Print(float min, float max, double avg, int maxNr, int minNr) 
{ 
    ofstream info; 
    info.open("result1.txt"); 
    info << "Biggest: " << max << " Number : " << maxNr << endl; 
    info << "Smallest: " << min << " Number : " << minNr << endl; 
    info << "Average: " << avg << endl; 
    info.close(); 
} 

Und alle Haupt.

int main(){ 
    float array[100]; 
    int n; 
    float max; 
    float min; 
    double avg; 
    int maxNr, minNr; 

    Reading(array, n); 
    Biggest(array, n, max, maxNr); 
    Smallest(array, n, min, minNr); 
    Average(array, n, avg); 
    Printing(min, max, avg, maxNr, minNr); 
    return 0; 
} 
+1

Ihr Code wird nicht einmal kompiliert. Am Ende von "max = array [0]" fehlt ein ';', und Sie haben in 'Biggest()' '' 'nicht gefunden. – Barmar

+2

Versuchen Sie, Ihren Post so zu bearbeiten, dass er ein [minimales, vollständiges, überprüfbares Beispiel] (http://stackoverflow.com/help/mcve) enthält. –

+0

Was ist dein Problem? – Raindrop7

Antwort

1

Zunächst einmal starten Array-Indizes bei 0, nicht 1.

Wenn Sie die Position erhalten möchten, die Nullen ignoriert, müssen Sie eine separate Zählervariable verwenden, die von der zum Indizieren des Arrays verwendeten Variable abweicht, sodass Sie sie beim Überspringen von 0 nicht inkrementieren.

+2

Wenn Sie 'max' als' array [0] 'speichern, könnten Sie Ihre beginnen Schleife mit '1'. – Jarod42

+0

@ Jarod42 Guter Punkt. Aber das erfordert zusätzliche Überprüfung, falls 'array [0] '' 0 'enthält. – Barmar

0

Arrays in den meisten Programmiersprachen beginnen bei Index Null. So einfach Ihre für sein Schleife ändern Bedingung:

for (int i = 0; i < n; i++) 

Da Sie die Schleife wollen auf das erste Element in dem Array zu starten, muss i auf 0 initialisiert werden, dass das Problem zu beheben, sollten Sie mit dem Array haben .

+0

Er überspringt 0, weil er 'max = array [0];' initialisiert – Barmar