Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Informatik in der Schule » C++ » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Seiten (4): « vorherige 1 [2] 3 4 nächste » Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen C++
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
info
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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
25.02.2013 20:30
info
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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?
25.02.2013 20:52
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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;
} 


__________________
Syntax Highlighting fürs Board (Link)
26.02.2013 16:36 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
info
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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.
05.03.2013 09:35
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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.

__________________
Syntax Highlighting fürs Board (Link)
05.03.2013 16:39 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
info
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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;
}
13.03.2013 00:00
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo,

der Ansatz ist nicht blöd, aber:
  • Du gehst nicht auf unsere Antworten ein
  • Dein Quelltext enthält immernoch eine Klammer zu viel (nach mehreren Hinweise darauf)
  • In deiner for-Schleife greifst Du über die Grenze des Arrays hinaus. Du hast also nicht nachvollzogen was die Schleife macht
  • Du schreibst Fließtext in deinen Quelltext
  • Anhand deiner Beiträge und der Schlampigkeit mit der sie verfasst sind, kann ich nicht darauf schließen, dass du das hier wirklich ernst meinst und ich fühle mich weiterhin verarscht!


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
13.03.2013 11:12 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
info
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Kann mir jemand anderer helfen ?
14.03.2013 14:16
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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
14.03.2013 15:04 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
info
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

#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.
15.03.2013 23:04
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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.

__________________
Syntax Highlighting fürs Board (Link)
16.03.2013 08:33 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
info
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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]
16.03.2013 19:13
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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

__________________
Syntax Highlighting fürs Board (Link)
16.03.2013 21:35 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
info
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Wo liegt den der andere Fehler?

Den erkenne ich gar nicht.
17.03.2013 17:56
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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.

__________________
Syntax Highlighting fürs Board (Link)
18.03.2013 08:11 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Seiten (4): « vorherige 1 [2] 3 4 nächste » Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Informatik in der Schule » C++