![]() |
C++ Zahlen vergleich
Wie kann man in c++ am besten 3 Zahlen miteinander vergleichen
Problem Eingabe zahl1 zahl2 zahl3 Ausgabe kleinste mitllere goeste meine idee ist bubblesort if (zahl1 > zahl3) { tmp = zahl1 zahl1 = zahl3 zahl3 = tmp } if (zahl2 > zahl3) { tmp = zahl2 zahl2 = zahl3 zahl3 = tmp } if (zahl1 > zahl2) { tmp = zahl1 zahl1 = zahl2 zahl2 = tmp } kleinste = zahl1 mitllere = zahl2 groeste = zahl3 könnt ihr mir helfen??? |
Re: C++ Zahlen vergleich
Ich würde das in ein Array schreiben, und dann per Schleife die kleinste/größte Zahl suchen und merken. So (dahergetippt):
Code:
So in etwa.
int myarray[2];
integervar1 = myarray[0]; integervar2 = myarray[1]; integervar3 = myarray[2]; int merke; int kleinste; int groesste; int mittlere; for (int i = 0; i <= 2; i++) { if (i == 0) merke = myarray[0]; if (i != 0) { if (myarray[i] < merke) merke = myarray[i]; } } kleinste = merke; /* Analog dazu die größte Zahl ermitteln */ for (int i = 0; i <= 2; i++) { if (myarray[i] <> groesste) && if (myarray[i] <> kleinste) mittlere = myarray[i]; } Der Vorteil dabei zur Ermittlung der größten und kleinsten Zahl ist dabei, dass sie dynamischer ist, und nicht von dem Fall, dass 3 Zahlen verglichen werden, abhängig ist. Bei der mittleren Zahl ist das aber etwas komplizierter mit mehreren Zahlen... ;) PS: Bitte verwende doch für C++-Code die [c]-Tags ;) edit2: Kommentarbegrenzer richtig gesetzt... |
Re: C++ Zahlen vergleich
Ich wollte das Problem mal ohne Schleifen angehen
den code hab ich grad vom kopf dahingeschrieben |
Re: C++ Zahlen vergleich
Wieso ohne Schleifen? Was ist schlimm daran?
|
Re: C++ Zahlen vergleich
Code:
Theoretisch sollte es so funktionieren...
int MaxZahl(int a, int b)
{ return (a>b)?a:b; } int MinZahl(int a, int b) { return (a<b)?a:b; } void ZeigeZahlen() { int kleinste = MinZahl(zahl1, MinZahl(zahl2, zahl3)); int groesste = MaxZahl(zahl1, MaxZahl(zahl2, zahl3)); int mitte = zahl1; if ((kleinste != zahl1)&&(groesste != zahl1)) mitte = zahl1; if ((kleinste != zahl2)&&(groesste != zahl2)) mitte = zahl2; if ((kleinste != zahl3)&&(groesste != zahl3)) mitte = zahl3; printf("Kleinste Zahl: %d", kleinste); printf("Mittlere Zahl: %d", mitte); printf("Größte Zahl : %d", groesste); } Da ich schon länger nicht mehr mit C/C++ gearbeitet habe, könnte der Aufruf printf falsch sein. Bitte entsprechend anpassen ;) |
Re: C++ Zahlen vergleich
Code:
für was steht das denn_??
int MaxZahl(int a, int b)
{ return (a>b)?a:b; } int MinZahl(int a, int b) { return (a<b)?a:b; } |
Re: C++ Zahlen vergleich
Code:
Das ist eine verkürzte Form der if-Konstruktion. Man könnte es auch so schreiben:
(Bedingung) ? Anweisung a /*Wenn Bedingung wahr*/ : Anweisung b /*Wenn Bedingung falsch*/
Code:
Allerdings dachte, ich, dass das nur in PHP ginge... :gruebel:
if (irgendwas_was_true_sein_kann)
{ Anweisung_a(); } else { Anweisung_b(); } |
Re: C++ Zahlen vergleich
*reinausC#-kentnissensprech*
Das ist der sog. ternäre Operator.
Code:
[edit]Zu langsam :stupid: [/edit]
return a? b : c;
== if (a) return b; else return c; |
Re: C++ Zahlen vergleich
Code:
Das ist natürlich nicht die Komplettlösung, es fehlt die 3te Zahl.#include <iostream.h> int main() { int a, b; cout << "Minimum - Maximum"; cout << "\n"; cout << "________________________________________"; cout << "\n"; cout << "\n"; cout << "Geben Sie 2 ganze Zahlen ein:"; cout << "\n"; cout << "1. Zahl:"; cin >> a; cout << "2. Zahl:"; cin >> b; cout << "\n" << "\n" << "\n" << "\n"; if (a != b) { if (a < b) { cout << "Maximum: " << b; cout << "\n"; cout << "Minimum:" << a; } else { cout << "Maximum: " << a; cout << "\n"; cout << "Minimum:" << b; } } else { cout << "Beide Zahlen sind identisch!"; } cout << "\n" << "\n" << "\n" << "\n" << "\n" << "\n"; cout << "Druecken Sie eine beliebige Taste..."; getchar(); return 0; } (Compiler: Borland C++ 5.5) |
Re: C++ Zahlen vergleich
Echt ätzend diese C-Syntax!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz