Ich brauche das kleinste Element jeder Spalte. Meine Matrix ist 250x6, was gedruckt wird, ist die letzte Zeile der Matrix.Min/Max Element des 2D-Arrays
Antwort
Sie benötigen zwei Korrekturen:
Sie nicht die gleiche Variable für jede Ihrer Spalten verwenden, aber eine andere, wie direkt Ihre allmin
und allmax
Reihe.
Initialisieren Sie es vor dem Eintritt in die Schleife. Eine klassische Lösung besteht darin, sie mit dem ersten Element der Zeile zu initialisieren und jedes nächste in der Schleife zu überprüfen.
for(int y = 0; y < column; y++)
{
allmin[y] = matrix[0][y];
allmax[y] = matrix[0][y];
for(int x = 1; x < row; x++)
{
allmin[y] = std::min(matrix[x][y], allmin[y]);
allmax[y] = std::max(matrix[x][y], allmax[y]);
}
cout << "Mins " << allmin[y] << "\n";
}
Es gibt jedoch Werte zurück, die nicht in der Matrix vorhanden sind. Ich habe Werte von 1 bis 5000 mit 2 Gleitpunkte und es kehrt Min 7.18866e-43 Min 0 -7.85255e Min + 06 Min 4.57692e-41 Min 1.68436e-42 Min 3.05483e-43 –
Da Anweisung allmin[y] = std::min(matrix[x][y], min);
der matrix[x][y] is always small than
min (std :: :: numeric_limits max()) , so when internal loop execute,
allmin [y] is updated to ·matrix[x][y]
alle Zeiten, so schließlich zu allmin[y]
matrix[259][y]
(dem letzten Spalte des y
row) aktualisiert werden, . allmax[y] = std::max(matrix[x][y], max);
hat die gleiche Frage.
sollten Sie Ihren Code ändern in `` ` Float allmin [Spalte]; float allmax [Spalte]; Gleitkomma min = std :: numeric_limits :: max(); Gleitkomma max = std :: numeric_limits :: min();
for(int y = 0; y < column; y++)
{
allmin[y] = min
allmax[y] = max
for(int x = 0; x < row; x++)
{
allmin[y] = std::min(matrix[x][y], allmin[y]); //allmin[y] always store the min value has meet before
allmax[y] = std::max(matrix[x][y], allmax[y]); //allmax[y] always store the max value has meet before
}
cout << "Mins " << allmin[y] << "\n";
}
Das alles wird
- 1. MinMax Heap-Implementierung ohne Array
- 2. MinMax Normalisierung in Scala
- 3. C# minmax Graph Suche
- 4. Java Connect 4 MinMax-Algorithmus
- 5. Gibt es eine C++ MinMax Heap-Implementierung?
- 6. Vergleichen von std :: minmax mit einem Paar
- 7. Über Zufälligkeit und Minmax-Algorithmus mit Alpha-Beta-Beschneidung
- 8. Text-Klassifizierung: Beutel mit Wörtern mit MinMax-Scaler
- 9. Beobachten seltsames Verhalten mit 'Auto' und Std :: Minmax
- 10. ungesetzt letzte Element des Arrays
- 11. den Index des Maximal Element
- 12. Python: letztes Element des Tupels
- 13. Delete Element des Arrays während
- 14. Sicheres Element des Array-Zugriffs
- 15. Javascript bekommen Element des Tags
- 16. Dom Element des Absatzes Text
- 17. Referenz im Element des Arrays ein anderes Element desselben Arrays
- 18. CSS: Feste Position des Parent Element
- 19. Wie das passende Element des Arrays
- 20. C++: Das erste Element des Vektors "korrumpieren"
- 21. Get erste und zweite Element des Arrays
- 22. Anruf Element des Objekts mit dem Präfix
- 23. Element Lassen Sie die Länge des Textes
- 24. CSS: Element zur Mitte des Floats hinzufügen
- 25. Erste das nächste Element des gleichen Typs
- 26. Get-Index-Element des Arrays von Wert
- 27. Abrufen des Textwerts aus Element in BeautifulSoup
- 28. JQuery das n-te Element des Arrays
- 29. sympy element weise einteilung des vektors
- 30. XmlNode.SelectSingleNode gibt Element außerhalb des Stroms zurück?
sein ein Duplikat ok http://stackoverflow.com/questions/34210401/finding-the-maximum-value-of-every-row-in-2d-array -c – piyushj
Innerhalb der Zeilenschleife müssen Sie min und max anstelle von allmin und allmax aktualisieren, da min und max immer nur die gleichen maximalen und minimalen Gleitkommawerte beibehalten. Dann, nach der inneren Schleife, update allmin und allmax mit den Werten von min und max. Stellen Sie außerdem sicher, dass Sie min und max innerhalb der äußeren Schleife initiieren, damit sie die Werte der vorherigen Spalten nicht übernehmen. –
In der ersten Schleife min max initialisieren: min = Matrix [0] [y]; max = Matrix [0] [y]; –