logischer fehler!! Weshalb??
-
int main() { // testet auf Minimum dreier Ganzzahlen: int n1, n2, n3; cout << "Bitte geben Sie drei Ganzzahlen ein "; cin >> n1 >> n2 >> n3; // z.B. 0 0 1 if (n1 >= n2 >= n3) //Ganzzahlen abgebildet! cout << "max = " << n1; // return 0; }Eingabe 0
0
1
Ausgabe: max=0Weshalb 0 und nicht 1 ????
Laut Vorlesung trifft folgendes zu!:""Boolesche Ausdrücke besitzen
numerische Werte
(FALSE -> 0, TRUE -> 1).
Die Auswertung zusammengesetzter Ausdrücke kann daher "verzwickt"
sein."" Aber weshalb? Hab hier ja kein bool definiert sondern int!
-
Jumper schrieb:
if (n1 >= n2 >= n3) //Ganzzahlen abgebildet!Das geht nicht, du vergleichst damit einen boolschen Wert (Ergebnis eines Vergleichs) mit einem int-Wert...
Eher so:
int main() { // testet auf Minimum dreier Ganzzahlen: int n1, n2, n3; cout << "Bitte geben Sie drei Ganzzahlen ein "; cin >> n1 >> n2 >> n3; // z.B. 0 0 1 int minimum=std::min(std::min(n1,n2),n3); int maximum=std::max(std::max(n1,n2),n3); cout << "max = " << maximum << endl << "min = " << minimum; // return 0; }
-
_matze schrieb:
Jumper schrieb:
if (n1 >= n2 >= n3) //Ganzzahlen abgebildet!int main() { // testet auf Minimum dreier Ganzzahlen: int n1, n2, n3; cout << "Bitte geben Sie drei Ganzzahlen ein "; cin >> n1 >> n2 >> n3; // z.B. 0 0 1 int minimum=std::min(std::min(n1,n2),n3); int maximum=std::max(std::max(n1,n2),n3); cout << "max = " << maximum << endl << "min = " << minimum; // return 0; }Ist ja geil, wusste gar nicht, dass die Standardlib sowas anbietet x)
Dein Fehler liegt wie gesagt hier:
if (n1 >= n2 >= n3) //Ganzzahlen abgebildet!Du müsstest es so machen:
if(n1 >= n2 && n1 >= n3) { //Do that Shit... else if( n2 >= n1 && n2 >= n3) //Do that other shit... else if else if... }Aber diese Methode ist halt ziemlich aufwendig. Da empfiehlt es sich gleich die Funktion von _matze zu nehmen.
Lg Mentras
-
Ist dieses Standard Hilfstemplates aber nur immer auf 2 zahlen anwendbar!?
Gibt es eine einfache Möglichkeit min und max aus z.B 100 zahlen zu ermitteln?
-
Jumper schrieb:
Ist dieses Standard Hilfstemplates aber nur immer auf 2 zahlen anwendbar!?
Gibt es eine einfache Möglichkeit min und max aus z.B 100 zahlen zu ermitteln?
Dafür gibt's std::vector und std::max_element() & std::min_element():
#include <vector> #include <algorithm> int main() { std::vector<int> n; std::cout << "Bitte geben Sie Ganzzahlen ein "; int tmp; while(std::cin >> tmp) n.push_back(tmp); // Einlesen beliebig vieler Zahlen int minimum=std::min_element(n.begin(), n.end()); int maximum=std::max_element(n.begin(), n.end()); std::cout << "max = " << maximum << "\nmin = " << minimum << '\n'; return 0; }Das Einlesen sollte man noch auf
#include <iterator> ... std::copy(std::istream_iterator<int>(std::cin), std::istream_iterator<int>(), std::back_inserter(n));eindampfen können, aber ob das tatsächlich die Lesbarkeit erhöht, ist nicht unumstritten.

Alternativ kann man natürlich - solange es wirklich nur um Maximium-/Minimumsfindung geht, diese auch direkt beim Einlesen erledigen.
Gruß,
Simon2.
-
Simon2 schrieb:
Jumper schrieb:
Ist dieses Standard Hilfstemplates aber nur immer auf 2 zahlen anwendbar!?
Gibt es eine einfache Möglichkeit min und max aus z.B 100 zahlen zu ermitteln?
Dafür gibt's std::vector und std::max_element() & std::min_element():
#include <vector> #include <algorithm> int main() { std::vector<int> n; std::cout << "Bitte geben Sie Ganzzahlen ein "; int tmp; while(std::cin >> tmp) n.push_back(tmp); // Einlesen beliebig vieler Zahlen int minimum=std::min_element(n.begin(), n.end()); int maximum=std::max_element(n.begin(), n.end()); std::cout << "max = " << maximum << "\nmin = " << minimum << '\n'; return 0; }Das Einlesen sollte man noch auf
#include <iterator> ... std::copy(std::istream_iterator<int>(std::cin), std::istream_iterator<int>(), std::back_inserter(n));eindampfen können, aber ob das tatsächlich die Lesbarkeit erhöht, ist nicht unumstritten.

Alternativ kann man natürlich - solange es wirklich nur um Maximium-/Minimumsfindung geht, diese auch direkt beim Einlesen erledigen.
Gruß,
Simon2.
Jaja --> http://www.ariel.com.au/jokes/The_Evolution_of_a_Programmer.html

-

Wobei ich max_element() schon sehr hilfreich finde ... einfach weil es beim Lesen wirklich (IMHO) klarer, eindeutiger und weniger fehleranfällig ist als eine handgemachte Schleife.
Gruß,
Simon2.