Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Informatik in der Schule (http://www.informatikerboard.de/board/board.php?boardid=21)
--- C++ (http://www.informatikerboard.de/board/thread.php?threadid=1388)


Geschrieben von info am 25.02.2013 um 20:30:

 

Ich habe einen fehler erkannt , aber es funzt immer noch nicht.

#include <iostream>

using namespace std;

int i[5];


int main()
{

for (int i=0;i<n;i++)//Eingabe der Arrayelemente
{
cout << i+1 <<". Element: ";
cin >> zahl[i];
}

}

Das verstehe ich nicht



Geschrieben von info am 25.02.2013 um 20:52:

 

Hallo leute ich habe einen ganz neuen weg genommen aber es funktioniert:

#include <iostream>

using namespace std;

int i[5];


int main()
{

for (int Zahl=0;Zahl<5;Zahl++)//Eingabe der Arrayelemente
{
cout << Zahl+1 <<". Element: ";
cin >> i[Zahl];
}

}


Kann ich es so machen ?

Aber wie gehe ich weiter vor?



Geschrieben von eulerscheZahl am 26.02.2013 um 16:36:

 

Wir waren doch schon weiter: das Einlesen der Zahlen war einigermaßen flexibel, nicht zwingend 5 Zahlen.

Zitat:
using namespace std;
int n;
int Zahl[i];

int main()
{

for (int i=0;i<n;i++)//Eingabe der Arrayelemente
{
cout << i+1 <<". Element: ";
cin >> zahl[i];
}

}

C:\C++\Zahlen einlesen\main.cpp|5|error: 'i' was not declared in this scope|
C:\C++\Zahlen einlesen\main.cpp||In function 'int main()':|
C:\C++\Zahlen einlesen\main.cpp|13|error: 'zahl' was not declared in this scope|
||=== Build finished: 2 errors, 0 warnings (0 minutes, 0 seconds) ===|

Du hast keinen Fehler erkannt, sondern geraten. Dabei hilft es doch zu lesen:
In Zeile 5 ist i unbekannt -> Zahl[5]
In Zeile 13 ist zahl unbekannt -> weil du es oben groß geschrieben hast.

Es ist so etwas wie ein ungeschriebenes Gesetz, dass i für Laufvariablen, also in Schleifen verwendet wird, nicht als Array.

Da es sowieso wieder darauf hinauslaufen würde, dass ich dir die Lösung verrate, beschleunige ich das.
Aber nochmals mein Ratschlag: hole dir Hilfe im persönlichen Umfeld, mit einem Forum kannst du dir zwar konkrete Fragen beantworten lassen, aber du scheitest schon bei den Grundlagen, die sitzen sollten, wenn ich mir anschaue, was sonst von dir gefordert wird.
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
#include <iostream>
using namespace std;

int vergleich(const void*a, const void *b)
{
	return *(int*)a - *(int*)b;
}

int main() 
{
	int n;
	int zahl[5];
	cout<<"Anzahl der einzulesenden Elemente ";
	cin>>n;
	if ( n>5 )//Plausibilitaetskontrolle
	{
		cout << "Es sind nicht genug Elemente verfügbar" << endl;
		system("PAUSE");
		return 0;
	}
	else
	{
		cout<<" Elemente eingeben:\n";
		for (int i=0;i<n;i++)
		{
			cout << i+1 <<". Element: ";
			cin >> zahl[i];
		}
	}
	qsort(zahl,n,sizeof(zahl[0]),vergleich);
	cout << "\n";
	for(int i=0;i<n;i++)
		cout << zahl[i] << "  ";
	system("PAUSE");
	return 0;
} 



Geschrieben von info am 05.03.2013 um 09:35:

 

Ich hab ja im moment dieses Programm .

#include <iostream>

using namespace std;




int main() {
int n;
int zahl[5];
cout<<" Anzahl der einzulesenden Elemente ";
cin>>n;
if ( n>5 )//Plausibilitaetskontrolle
{

cout << "Es sind nicht mehr elemente verfügbar" << endl;

}
cout<<" Elemente eingeben ";
for (int i=0;i<n;i++)//Eingabe der Arrayelemente
cin>>zahl[i];










}







return 0;
}

Kannst du mir sagen wenn ich das array jetzt mit der if bedingung sortieren will, und den ersten eingabewert mit dem zweiten wert vergleichen will , wie mache ich das so:

if( wie heisst erste zahl und wie die zweite???


Ich versuche es irgendwie mit einem anderen weg.



Geschrieben von eulerscheZahl am 05.03.2013 um 16:39:

 

Wie ich schon am 23.02.2013 um 7:47 Uhr schrieb, scheitert das schon daran, dass es einmal mehr '{' als '}' gibt.
Auch dass du eventuell in nicht reservierten Speicher schreibst habe ich dir verraten.

Eine if-Bedingung sortiert auch kein Array.
Lies dir meine früheren Antworten durch, versuche sie zu verstehen und melde dich wieder, wenn du konkrete Fragen hast, so drehen wir uns im Kreis.

Ich habe dir sogar einen Lösungsvorschlag gemacht, besser bekommst du die Sortierung nicht hin, auch weiß ich nicht, was genau du vorhast. Hast du überhaupt eine Vorstellung, wie du das Array sortieren willst? Solange du das nicht weißt, brauchst du auch nicht versuchen, es umzusetzen.



Geschrieben von info am 13.03.2013 um 00:00:

 

Hallo eulersche Zahl ich hab mal wieder was probiert :


#include <iostream>
#include <cstdlib>

using namespace std;




int main() {
int n;
int zahl[5];
cout<<" Anzahl der einzulesenden Elemente ";
cin>>n;
if ( n>5 )//Plausibilitaetskontrolle
{

cout << "Es sind nicht mehr elemente verfügbar" << endl;

}
cout<<" Elemente eingeben ";
for (int i=0;i<n;i++)//Eingabe der Arrayelemente
cin>>zahl[i];






for(int i = 0; i< 5 ; ++i)
{

if(zahl[i] > zahl[i+1])
{
int swap = zahl[i+1];
zahl[i+1] = zahl[i];
zahl[i] = swap;



}


}



cout << "sortiert" << endl;
for(int i = 0;i< 5 ; ++i) {

cout << zahl[i] << " Bye " << endl;
}









}



ABer ich verstehe nicht so ganz was ich machen soll damit die eingelesenen Dateien richtig sortiert werden.

Ich hoffe mein ansatz ist nicht ganz blöd.



return 0;
}



Geschrieben von Karlito am 13.03.2013 um 11:12:

 

Hallo,

der Ansatz ist nicht blöd, aber:


Du legst nicht dar, was Du erreichen willst und machst einfach weiter mit den selben Fehlern wie vorher und einem Mini-Schritt, der vorgibt, dass du dir Gedanken gemacht hast. Für mich sieht es aus wie rumprobieren! Glaub mir, ich schreibe gerne hier und ich helfe auch gerne, aber was Du hier ablässt verstehe ich nicht!

Mein EIndruck ist, dass du versuchst irgendwo mit Minimalaufwand zu bestehen. Du ziehst uns so lange kleine Schrittchen aus der Nase, bis du es begreifst ohne selbst viel Arbeit und Gedanken investieren zu müssen.

--
Karlito



Geschrieben von info am 14.03.2013 um 14:16:

 

Kann mir jemand anderer helfen ?



Geschrieben von Karlito am 14.03.2013 um 15:04:

 

Die Vertauschung ist soweit richtig. Du musst das solange wiederholen, bis nicht mehr getauscht werden muss.

Packe die Tauschoperation in eine do-while-Schleife. Merke dir in einer Variable, die du bei jedem Durchlauf zurücksetzt, ob ein Tausch stattgefunden hat. Ist dies nicht der Fall, so ist dein Array sortiert.

Das beantwortet auch deine Frage mit dem bereits sortierten Array. Liegt es bereits sortiert vor, wird die Sortierung geprüft und es kommt nie zu einem Tausch -> Abbruchbedingung.

VG,

Karlito



Geschrieben von info am 15.03.2013 um 23:04:

 

#include <iostream>
#include <cstdlib>

using namespace std;




int main() {
int n;
int zahl[5];
cout<<" Anzahl der einzulesenden Elemente ";
cin>>n;
if ( n>5 )//Plausibilitaetskontrolle
{

cout << "Es sind nicht mehr elemente verfügbar" << endl;

}
cout<<" Elemente eingeben ";
for (int i=0;i<n;i++){//Eingabe der Arrayelemente
cin>>zahl[i];






for(int i = 0; i< 5 ; ++i)
{
do
{
int swap = zahl[i+1];
zahl[i+1] = zahl[i];
zahl[i] = swap;



}


while{

if(zahl[i] > zahl[i+1])
}
}






cout << "sortiert" << endl;
for(int i = 0;i< 5 ; ++i) {

cout << zahl[i]<< endl;
}









}







return 0;
}


Ich hab jetzt ein wenig versucht die Schleife einzubauen aber es funktioniert immer noch nicht.

Für hilfe wäre ich dankbar.



Geschrieben von eulerscheZahl am 16.03.2013 um 08:33:

 

Deine Schleife (ich kann nicht erkennen, ob es while oder do...while werden sollte) funktioniert so nicht, da die Syntax nicht stimmt.
Zum Rest sage ich mal nichts, da ich es sowieso schon getan habe.

Versuchen wir es mal anders:
Das ist ein lauffähiges Programm (syntaktisch korrekt), allerdings funktioniert das Sortieren nicht, weil ich ein paar Fehler eingebaut habe.
Viel Spaß beim Suchen.
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
#include <iostream>
#include <cstdlib>

using namespace std;

int main() 
{
	int n;
	int zahl[5];
	cout << "Anzahl der einzulesenden Elemente: ";
	cin >> n;
	if (n > 5)//Plausibilitaetskontrolle
	{
		cout << "Es sind nicht genug Elemente verfügbar" << endl;
	}
	else
	{
		cout<<"Elemente eingeben\n";
		for (int i = 0; i < n; i++)//Eingabe der Arrayelemente
		{
			cout << i+1 << ". Zahl: ";
			cin >> zahl[i];
		}

		//Bubblesort
		//größtes nach oben
		for(int i = 0; i < n-1; i++)
		{
			for(int j = 0; j < n-1; j++)
			{
				if(zahl[i] != zahl[i+1])
				{//tauschen
					int tmp = zahl[i];
					zahl[i] = zahl[i+1];
					zahl[i+1] = tmp;
				}
			}
		}
		cout << "\nsortiert:" << endl;
		for(int i = 0; i < n; i++) 
		{
			cout << zahl[i]<< endl;
		}
	}
	system("PAUSE");
	return 0;
}


Und eine Bitte für die Zukunft:
Umschließe deinen Code mit [ code] ... [ /code] (Leerzeichen weglassen), damit der Quelltext eingerückt bleibt.



Geschrieben von info am 16.03.2013 um 19:13:

 

Danke eulersche zahl.

Nur damit du weisst dass ich es ein wenig verstanden hab.

Hier das korrigierte programm:
[ code]
#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{
int n;
int zahl[5];
cout << "Anzahl der einzulesenden Elemente: ";
cin >> n;
if (n > 5)//Plausibilitaetskontrolle
{
cout << "Es sind nicht genug Elemente verfügbar" << endl;
}
else
{
cout<<"Elemente eingeben\n";
for (int i = 0; i < n; i++)//Eingabe der Arrayelemente
{
cout << i+1 << ". Zahl: ";
cin >> zahl[i];
}

//Bubblesort
//größtes nach oben
for(int i = 0; i < n-1; i++)
{
for(int j = 0; j < n-1; j++)
{
if(zahl[i] > zahl[i+1])
{//tauschen
int tmp = zahl[i];
zahl[i] = zahl[i+1];
zahl[i+1] = tmp;
}
}
}
cout << "\nsortiert:" << endl;
for(int i = 0; i < n; i++)
{
cout << zahl[i]<< endl;
}
}
system("PAUSE");
return 0;
} [ /code]



Geschrieben von eulerscheZahl am 16.03.2013 um 21:35:

 

Einen Fehler hast du zwar gefunden, aber wie ein Probelauf zeigt, werden die Zahlen immer noch nicht richtig sortiert.



Geschrieben von info am 17.03.2013 um 17:56:

 

Wo liegt den der andere Fehler?

Den erkenne ich gar nicht.



Geschrieben von eulerscheZahl am 18.03.2013 um 08:11:

 

Dann musst du den Code wohl zeilenweise debuggen.

Falls du noch Code::Blocks verwendest, ist hier ein Video, das dir zeigt, wie du das machst.


Forensoftware: Burning Board, entwickelt von WoltLab GmbH