Größte Zahl suchen

Status
Nicht offen für weitere Antworten.

dannyberlin

Grünschnabel
Hi Alle,

ich hab leider nicht gefunden, was ich gesucht hab. Und zwar will ich in C++ nicht einen definierten String suchen, sondern in einem Bereich die größte Zahl.

Genauer heisst das:
ich habe einen Vektor in dem ein Element ID heisst, diesen durchlaufe ich mit einer for-Schleife. Jetzt möchte ich aus diesen Elementen die größte Zahl raussuchen und diese um 1 inkrementieren?

Ich möchte also quasi das auto_increment von mySQL programmieren ;) Langsam hab ich leider echt keine Ideen mehr. Hoffe, es kann mir jemand weiterhelfen??

Code:
for (int i=0; i < Vektor.size(); i++)
{
  // vergleiche jede Zahl mit jeder und gucke welche die größte ist
}

Viele Grüße,
Daniel
 
Zuletzt bearbeitet:
Eine Möglichkeit wäre es, erst die Elemente der Größe nach zu sortieren und dann direkt das letzte zu nehmen. Such mal bei Google, es gibt verschiedene Sortieralgorithmen, meistens sogar schon mit einem fertigen Code-Beispiel.
Eventuell kannst Du auch einfach eins der Sortierverfahren auf Deine Bedürfnisse anpassen.
 
verdammt! ich dachte ich komme um diese verdammten sortier-algorithmen irgendwie drumrum. :rolleyes: aber falls nicht zufällig doch noch jemand ne andere idee hat, werde ich das wohl oder übel machen müssen :(
 
Du mußt doch sowieso jede Zahl mit jeder vergleichen, das ist doch schon ein halber Sortieralgorithmus.:)
Und wenn man sich ein wenig damit auseinandersetzt, sind die auch garnicht sooo schlimm.
 
Wieso willst Du denn keine Sortieralgorithmen benutzen bzw. anpassen? Beispielsweise macht ein Bubblesort auch nichts anderes, als die Zahlen untereinander zu vergleichen und dann die jeweils grösste Zahl im Vektor etwas nach hinten zu verschieben. Das könntest Du doch eigentlich prima für Dich verwenden, und so besonders schwer zu verstehen ist das auch nicht unbedingt. :)
 
Warum nicht so:

Code:
int groesste_id = 0;

for (int i=1; i < Vektor.size(); i++)
{
    if (Vektorelement[i] > Vektorelement[groesste_id])
       id = i;

}
 
@frankdfe

funktioniert solange die nächste zahl größer ist, als die vorhergehende. sonst leider nicht. aber sowas kurzes knappes hatte ich erhofft. und dann fangt ihr alle mit sortier-algorithmen an, heul :-( *lol*

Code:
		const char* sID;
		int iID;
		int groesste_id = 0;

		for (int j=1; j < vBenutzer.size(); j++)
		{
			sID = vBenutzer[j].id.c_str();
			iID = atoi(sID);

			if (iID > groesste_id)
				groesste_id = j;
		}
		cout << groesste_id;

das cout am ende gibt 4 aus, wenn die ids diese reihenfolge haben: 1, 2, 4, 6, 5, 3

mein problem dabei war noch, dass ich nen string in dem vektor habe, der erhöht werden muss.
 
@valentin-
wieso soll ich aus einer for-Schleife, die von i=1 bis size zählt eine while-Schleife machen?

@dannyberlin
Ich glaube ich hab da was nicht richtig verstanden. Du suchst doch die größte ID(das ist in deinem Beispiel die 6)?
Und genau das kommt heraus wenn du am Ende

Code:
vBenutzer[groesste_id].id.c_str();
machst (vielleicht war der Name groesste_id wohl doch nicht der passendste; mit ID war die Nummer des Benutzers gemeint)
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.
Zurück