8 Variablen miteinander vergleichen

Gast #2002694
Lesenswert?

Vergleiche Wert 1 mit 2,3,4,5,6,7,8  (7 Vergleiche)
                2 mit 3,4,5,6,7,8    (6 gesamt 13)
                3 mit 4,5,6,7,8      (5 gesamt 18)
                4 mit 5,6,7,8        (4 gesamt 22)
                5 mit 6,7,8          (3 gesamt 25)
                6 mit 7,8            (2 gesamt 27)
                7 mit 8              (1 gesamt 28)
#2002699
Lesenswert?

Sascha schrieb:
> Danke für die schnelle Antwort. Das mit den Schleifen geht mir noch
> nicht ganz auf aber ich werd mich mal dransetzen.
> MfG
> Sascha

der 0-te wird mit verglichen mit  1, 2, 3, 4, 5, 6, 7

 0    1, 2, 3, 4, 5, 6, 7
 1    2, 3, 4, 5, 6, 7
 2    3, 4, 5, 6, 7
 3    4, 5, 6, 7
 5    6, 7
 6    7

Jeder mit jedem. Einfach alle von 0 bis zum vorletzten durchgehen und 
mit allen vergleichen, die einen größeren Index haben. Machst du ja auch 
nicht anders: Du hast 8 Karten in der Hand, du nimmst die erste und 
vergleichst sie mit den restlichen 7. Dann legst du die erste beiseite 
und nimmst die nächste. Die vergleichst du mit den verblenden 6 usw. 
usw.

  Doppelte = FALSE;

  for( i = 0; i < 7; ++i )
    for( j = i + 1; j < 8; ++j ) {
      if( wert[i] == wert[j] ) {
        Doppelte = TRUE;
      }
    }
  }

  if( Doppelte ) {
    ...
  }

Bonuspunkte gibts noch für einen vorzeitigen Ausstieg bei Erkennen eines 
Doppels.
Gast #2002730
Lesenswert?

So ähnlich sehen meine Schleifen jetzt auch aus. Vielen Dank nochmal für 
die Ausführungen. Habs jetzt ;-)
MfG
Sascha

Doppelte = FALSE;

  for( i = 0; i < 7; ++i )
    for( j = i + 1; j < 8; ++j ) {
      if( wert[i] == wert[j] )
          {
           Doppelte = TRUE;
           j=8;                   // Ausstieg innere Schleife
           i=7;                   // Ausstieg äußere Schleife
          }
    }
  }

  if( Doppelte ) {
    ...
  }

Vieleicht nicht elegant aber durchaus funktional.
#2002904
Lesenswert?

Sascha schrieb:
> for( i = 0; i < 7; ++i )
>     for( j = i + 1; j < 8; ++j ) {
>       if( wert[i] == wert[j] )
>           {
>            Doppelte = TRUE;
>            j=8;                   // Ausstieg innere Schleife
>            i=7;                   // Ausstieg äußere Schleife
>           }
>     }
>   }

Also da ist aber goto mit Sicherheit eleganter.


Mark .. schrieb:
> entity schrieb:
>> oder, falls es C# ist: break;
>
> Macht das break in C# nicht dasselbe wie in C(++), also die direkt
> umschließende Schleife verlassen?

Ich weiß nicht, wie's bei C# ist, aber es gibt zumindest Sprachen, wo 
man dem break noch die Anzahl an Schachtelungsebenen, die verlassen 
werden sollen, angeben kann.
Persönliche Seite #2003315
Lesenswert?

Sascha schrieb:
> Hallihallo,
> ich habe gerade das Problem 8 Variablen zu vergleichen. Es darf kein
> Wert zweimal vorkommen. Muss ich wirklich jede mit jeder einzeln
> vergleichen oder gibts da ne einfachere Möglichkeit?

Es gibt noch die Möglichkeit, zu zählen, wie oft die Werte vorkommen. Da 
weder was über die Typen der Werte noch über deren Wertebereich noch 
über die Plattform auf der das läuft, gesagt ist, kann auch nicht gesagt 
werden, ob das praktikabler/eleganter ist als zu vergleichen/sortieren.

Da mit == verglichen wird sind's offenbar keine double/float-Werte.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren