C Zahlen vergleich ob sie ungefähr gleich sind?

Zeboo

Lt. Commander
Registriert
Juli 2008
Beiträge
1.562
Hallo,

nehmen wir mal an ich habe Werte wie

25520
24995
17152
10258
10000
25889
70158

Jetzt möchte ich, dass die Werte die ungefähr gleich sind erkannt werden. Dass quasi 25520 == 24995 true ergibt. Auch wenn die Werte nicht gleich sind, sind aber sehr nah beinander. 10258 == 10000 soll auch true sein. 70158 dagegen ist zu hoch.

Wie lege ich in C fest dass das Programm mit == nicht genau prüft ob die Werte dasselbe sind, sondern mir etwas Spielraum gibt und ich entscheiden darf wann das noch im Rahmen passt und wann nicht.

Danke und Gruß
 
Du legst einen Bereich fest, das "ungefähr" definiert und prüfst, ob die Zahlen in diesem Bereich liegen.

Code:
if ((zahl > zahl - Bereich) && (zahl < zahl + Bereich))
{
  ...
}
 
Ziehe die Zahlen voneinander ab und prüfe ob das Ergebnis, zB. kleiner als 5 ist... vll bekommste das so hin?!
Gruß
 
ich schlage vor, du lässt dir die differenz beider zahlen berechnen. dann legst du den maximalen unterschied fest (entweder darf der unterschied nicht größer als z.b. 300 sein oder nicht größer als z.b. 10%) und prüfst ob das der fall ist.
das sollte man ja wohl implementieren können...
 
Du kannst in C wie in andern Programmiersprachen Funktionen überladen und die Funktion dann selber schreiben. Allerdings wird es wahrscheinlicher sein selber eine Funktion zu schreiben, die das für dich macht und nicht mit == zu arbeiten. Theoretisch müsste es doch reichen, wenn du eine einfache Division machst -> Ergebnis nahe an der 1 -> Zahlen sind fast gleich.

MfG
 
du könntest zum Beispiel eine Methode boolean compare(int a, int b) programmieren, die prüft, ob der Betrag der Differenz der Zahlen kleiner als der Grenzwert ist und dementsprechend true oder false zurückgibt
 
@---Schakal---: Nein, kann man in C nicht, nur in C++ :rolleyes:

So oder so würde ich dafür wie schon von anderen geschrieben, einfach eine Funktion machen, die über die Differenz geht.
 
ghozt schrieb:
du könntest zum Beispiel eine Methode boolean compare(int a, int b) programmieren, die prüft, ob der Betrag der Differenz der Zahlen kleiner als der Grenzwert ist und dementsprechend true oder false zurückgibt

bool gibt es erst seit C99 und das ist meines Wissens in keinem Compiler vollständig implementiert. Deshalb
lasse ich aus persönlicher Vorliebe C99-spezifische Sachen weg. Aber das kann man machen, wie man möchte.

Ich würde eine einfache Abfrage mit einem if-Statement machen, oder wenn das öfter vorkommt eine Funktion,
die int zurückgibt und zwar 0 bei Nichtzutreffen und einen anderen Wert (wie wäre es mit 1) bei Zutreffen.

€: Ach und den Vergleichsoperator überladen in C? Bitte? Wäre ja noch schöner. Damit die Übersicht völlig flöten
geht? Wir sind hier doch nicht bei C++ :<
 
Wie wäre es einfach damit?

Code:
if (abs(zahl1 - zahl2) < maxDistanz)
{
   // Abstand der beiden Zahlen ist kleiner als maxDistanz.
}
 
Zurück
Oben