Int Größenordung

07/27/2014 21:00 bank0123#1
Hallo, ich habe ein Problem.
Ich habe, um mir 100 int vars zu sparen das ganze so deklariert:
PHP Code:
int FirstInt[100]; 
Jetzt wird mit einer for schleife ein bestimmter Wert in diese int Variable(n) so rein geschrieben:
PHP Code:
FirstInt[1] = ...;
FirstInt[2] = ...;
FirstInt[3] = ...;
FirstInt[4] = ...;
FirstInt[5] = ...; 
Das ganze klappt ja auch alles wunderschön aber jetzt will ich checken welche variable den erst-kleinsten Wert, zweit-kleinsten ... Wert hat.
Ich denke wenn ich wüsste wie ich checke welche Variable den erst-kleinsten Wert hat, könnte ich das ganze auch für das auslesen der zweit-kleinsten Var ... umsetzen.
07/27/2014 22:06 Schlüsselbein#2
Du könntest das Array mit std::sort sortieren und hättest dein gewünschtes Ergebnis sofort. Btw sind alte C-Style Arrays böse, benutze std::array bzw std::vector.

Beispiel:
Code:
#include <algorithm>
#include <array>
#include <functional>
#include <iostream>
#include <random>

const int SIZE = 100;

int main()
{
	std::random_device rd;
	std::default_random_engine re(rd());
	std::uniform_int_distribution<int> dist(1, 1000);

	std::array<int, SIZE> arr;

	auto gen = std::bind(dist, re);
	std::generate(std::begin(arr), std::end(arr), gen);

	// Aufruf der dich interessieren sollte
	std::sort(std::begin(arr), std::end(arr));
	
	for(auto n : arr)
	{
		std::cout << n << std::endl;
	}
}
07/27/2014 22:19 bank0123#3
Ok sieht interessant aus, aber was ist denn das Array da?
Weil ich will ja den ersten Wert ... ausgelesen haben und dann kann ich z.B. ArrayVar[5], wenn das den kleinsten Wert enthält ausgeben lassen.
07/27/2014 22:22 Schlüsselbein#4
Array ist die Datenstruktur, welche die Elemente hält. Durch das Sortieren hast du den kleinsten Wert an erster Stelle und so weiter.
Zugreifen kannst du ganz klassisch wie gewohnt mit den eckigen Klammer.
Code:
std::cout << "kleinstes Element: " << arr[0] << std::endl;
07/27/2014 22:33 bank0123#5
Jo sieht aus als dürfte es gehen, aber ich bekomme das ganze nicht compiled.
Das Problem liegt irgendwo hier:
PHP Code:
for(auto n arr
Habe es mit 3 Compilern und 4 IDE's probiert. :)

BTW: Ein ";" fehlt anscheinend auch. xD
07/27/2014 22:38 Schlüsselbein#6
Kompiliert bei mir problemlos.
Dass du 3 Compiler benutzt hat, bringt mir recht wenig. Welche du benutzt hast ist von Bedeutung.
Ist er aktuell, sprich C++11 konform?
07/27/2014 22:44 bank0123#7
GNU GCC, Visual Studio 2010 und Borland(C++ Builder)
Welchen nimmst du denn?
07/27/2014 22:48 Schlüsselbein#8
Den aktuellen msvc. Lösung des Problems wäre zum Beispiel dein Visual Studio auf eine aktuelle Version (2013) zu upgraden.
GNU GCC hat laut [Only registered and activated users can see links. Click Here To Register...] Tabelle auch ausreichenden Support für die C++11 Features.
Ob du den Support für C++11 beim GNU Compiler erst via Switch aktivieren muss, kann ich dir nicht sagen. Dafür einfach mal eine Suchmaschine verwenden.
07/27/2014 22:52 bank0123#9
hm okay werde das mal probieren, aber es muss leider unter borland laufen :(^

EDIT: Es geht unter 2013, aber halt nicht borland.
07/27/2014 22:59 Terreox#10
Normalerweise sollten problematische Codezeilen von den meisten IDEs markiert werden.
Ansonsten einfach mal in den Compileroutput schauen, ob dort Fehler sind.
Im Normalfall helfen diese Informationen weiter (dort stehen meist auch recht genaue Zeilenangaben, wo der Fehler zu finden ist).

Falls nicht, einfach mal bitte den Fehler posten, dann kann man evtl weiterhelfen.
07/27/2014 23:05 bank0123#11
Ja borland. Da fängt es beim include <array> an und macht auch fast das ganze std zeug net mit. #BorlandHalt
07/27/2014 23:31 Schlüsselbein#12
Warm möchtest du Borland benutzen? Wenn Borland so hinterherhängt, was den Standard angeht, würde ich es auch nicht freiwillig benutzen wollen.
07/27/2014 23:34 bank0123#13
Jo das ist so eher ein Muss, außerdem mag ich es sonst sehr.
Man kann ansonsten sehr gut damit arbeiten(Ich rede es mir schön :) )
xD
07/28/2014 07:32 Mostey#14
Quote:
Originally Posted by bank0123 View Post
Jo das ist so eher ein Muss, außerdem mag ich es sonst sehr.
Man kann ansonsten sehr gut damit arbeiten(Ich rede es mir schön :) )
xD
Solltest du aber nicht, Borland C++ 5.5 (also die neuste Version) scheint im Jahr 2000 veröffentlicht worden zu sein.

Ist klar das dir hier die neuen C++ Features fehlen und das Standardbibliotheken teilweise fehlen, kann auch gut sein. Also mindestens VS 2012 oder einen aktuellen GCC. (Da muss man definitiv ein Flag für C++ 11 setzen)
07/28/2014 12:38 Schlüsselbein#15
In wie fern gut? Wo ist sie besser als Visual Studio? Auch wenn ich nicht immer der MS Fanatiker bin, muss einfach mal festgehalten werden, dass Visual Studio unter Windows einfach ungeschlagen ist.