myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Ungelesen 15.02.15, 14:37   #1
mallekralle
Anfänger
 
Registriert seit: Sep 2014
Beiträge: 9
Bedankt: 0
mallekralle ist noch neu hier! | 3 Respekt Punkte
Standard Benötige Hilfe bei 2 Aufgaben (C++)

Hallo,

im Unterricht müssen wir derzeit ein Programm schreiben, bei dem es darum geht eine Prüfstatistik zu erstellen (Min. / Max. / Durchschnitt). Das hat eigentlich auch gut funktioniert. Nun sollen wir das Programm aber so erweitern, dass die Zahlen sortiert ausgegeben werden (mit dem Bubblesort-Algorithums als Funktion). Ich habe bereits damit angefanen. Allerdings komme ich nicht weiter, da ich nicht weiß, wie ich einen Array aus einer Funktion zurück geben soll.

Hier mal mein Code:




Um nicht gleich einen weiteren Thread aufzumachen brauche ich noch bei einer anderen Sache Hilfe.

Dabei geht es darum, dass eine Tabelle mit Zufallszahlen (1-10) erstellt werden soll, welche ich auch bereits erstellt habe. Nun soll die Anzahl der gleichen Zufallszahlen gezählt werden. Dazu soll man einen weiteren Array erstellen, welcher 10 Felder für die einzelnen Zahlen besitzen soll. Dieses Array soll dann die Anzahl der einzelnen Zahlen ausgeben. Bsp. Zahl 1 kommt 350 mal vor, Zahl 2 kommt 120 mal vor u.s.w. ....
Leider klappt es bei mir gar nicht. Zwar habe ich bereits etwas ausprobiert, aber irgendwie stimmt es glaube ich nicht ganz. Es sollen auch keine Zeiger oder Pointer verwendet werden, wenn möglich.




Danke schon mal im Voraus
mallekralle ist offline   Mit Zitat antworten
Ungelesen 15.02.15, 20:55   #2
mallekralle
Anfänger
 
Registriert seit: Sep 2014
Beiträge: 9
Bedankt: 0
mallekralle ist noch neu hier! | 3 Respekt Punkte
Standard

Was ist das denn für eine dumme Aussage...
Ich habe meine Codes vorgelegt und komme nicht weiter bzw finde den Fehler nicht.
Ich sitze an den Aufgaben schon ne Weile.
Glaubst du nicht ich habs nicht selbst probiert?! Echt...

Wenn du nichts produktives zu sagen hast dann sei gefälligst still.
mallekralle ist offline   Mit Zitat antworten
Ungelesen 15.02.15, 23:35   #3
mrburns
Newbie
 
Registriert seit: Dec 2009
Beiträge: 50
Bedankt: 28
mrburns putzt sich die Zähne mit Knoblauch. | 2787 Respekt Punktemrburns putzt sich die Zähne mit Knoblauch. | 2787 Respekt Punktemrburns putzt sich die Zähne mit Knoblauch. | 2787 Respekt Punktemrburns putzt sich die Zähne mit Knoblauch. | 2787 Respekt Punktemrburns putzt sich die Zähne mit Knoblauch. | 2787 Respekt Punktemrburns putzt sich die Zähne mit Knoblauch. | 2787 Respekt Punktemrburns putzt sich die Zähne mit Knoblauch. | 2787 Respekt Punktemrburns putzt sich die Zähne mit Knoblauch. | 2787 Respekt Punktemrburns putzt sich die Zähne mit Knoblauch. | 2787 Respekt Punktemrburns putzt sich die Zähne mit Knoblauch. | 2787 Respekt Punktemrburns putzt sich die Zähne mit Knoblauch. | 2787 Respekt Punkte
Standard

Hallo,

Zitat:
Allerdings komme ich nicht weiter, da ich nicht weiß, wie ich einen Array aus einer Funktion zurück geben soll.
Kurz gesagt: gar nicht.
Lang: In C und C++ sind Arrays nichts anderes als Pointer mit Offset als Index, das bedeutet, wenn du ein Array als Funktionsargument übergibst, hast du damit grob gesagt (sehr grob!) eine implizite Liste von Pointern auf Integer übergeben.
Damit kannst du also die Inhalte deines Arrays in der Funktion ändern ohne es zurückgeben zu müssen.

Die Rückgabe ist also nicht nötig und falls die Sortierung funktioniert, sollte es so schon klappen.

Zitat:
Leider klappt es bei mir gar nicht. Zwar habe ich bereits etwas ausprobiert, aber irgendwie stimmt es glaube ich nicht ganz. Es sollen auch keine Zeiger oder Pointer verwendet werden, wenn möglich.
Kann das vielleicht an 'Anzahl' liegen? Da 'zaehlen()' mit 'Anzahl'=0 aufgerufen wird, sollte da auch nichts groß passieren...

Allgemein versteh ich nicht ganz, was du mit 'zaehlen()' berechnest, aber die Anzahl der einzelnen Zufallszahlen scheint es nicht zu sein. (Die 2. for-Schleife kann mehr als ein mal ausgeführt werden.)
Probier es vielleicht mal so:
Code:
void zaehlen(rands[], tab[]){
	for(i in {1, ..., Elemente}){
		tab[i-1] <- 0
		for(index in {1, ..., Zahl}){
			if(rands[index-1] == i) then tab[i-1] <- tab[i-1] + 1		
		}
	}
}
Der Pseudo-Code sollte hoffentlich verständlich sein. Beachte, dass die Anzahl der Vorkommen von i dann bei tab[i-1] steht.
mrburns ist offline   Mit Zitat antworten
Folgendes Mitglied bedankte sich bei mrburns:
Ungelesen 16.02.15, 09:13   #4
spartan-b292
Echter Freak
 
Benutzerbild von spartan-b292
 
Registriert seit: Mar 2010
Ort: /home/spartan-b292
Beiträge: 2.866
Bedankt: 1.700
spartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punkte
Standard

Zitat:
Wenn du nichts produktives zu sagen hast dann sei gefälligst still.
Dummerweise hat er recht. Fehlersuche gehört nun mal auch dazu. Du "rotzt" hier einige Zeilen absoluten schlechten Code hin und willst jetzt dass ihn dir andere leute so hinfrickeln dass er läuft.

Das funktioniert, wie man sieht, ja auch und ist kein Problem aber das ist kein Grund Leute anzufahren die das anders sehen.
__________________
"They who can give up essential liberty to obtain a little temporary safety, deserve neither liberty nor safety"
spartan-b292 ist offline   Mit Zitat antworten
Ungelesen 16.02.15, 12:33   #5
mallekralle
Anfänger
 
Registriert seit: Sep 2014
Beiträge: 9
Bedankt: 0
mallekralle ist noch neu hier! | 3 Respekt Punkte
Standard

Zitat:
Zitat von spartan-b292 Beitrag anzeigen
Du "rotzt" hier einige Zeilen absoluten schlechten Code hin und willst jetzt dass ihn dir andere leute so hinfrickeln dass er läuft.
Wirklich sehr rücksichtsvoll und ermutigend für jemanden der gerade mal im ersten Lehrjahr der Ausbildung ist.
Und ich habe erwähnt, das ich da schon ne weile dran sitze...

Zitat:
Zitat von spartan-b292 Beitrag anzeigen
Dummerweise hat er recht.
Ich finds halt nicht nett, wenn man mich so blöd anfährt. Als ob ich mich nicht selbst bemühe und denke hier wird alles gemacht.
Ich bin nun mal kein Profi...

Aber was solls...
mallekralle ist offline   Mit Zitat antworten
Ungelesen 16.02.15, 22:52   #6
spartan-b292
Echter Freak
 
Benutzerbild von spartan-b292
 
Registriert seit: Mar 2010
Ort: /home/spartan-b292
Beiträge: 2.866
Bedankt: 1.700
spartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punkte
Standard

Du kannst jetzt natürlich beleidigt sein oder du nimmst einfach noch einige Tipps an.

1) Versuche dein Problem (=>Die Aufgabe die du lösen willst) in kleine(re) Teilprobleme zu zerlegen und diese dann zu lösen. Dann kannst du die Teile einfach(er) testen und somit den Fehler viel besser eingrenzen.

2) Lerne mit deiner IDE und einem Debugger umzugehen auch damit lassen sich Probleme besser finden.

3) Wenn du fragst, mach es den Leuten die du fragst so einfach wie möglich, dir zu helfen. Nimm mal dein Code aus dem 1. Beispiel. Du hast nicht mal die ">" entfernt die du vermutlich im Editor mitkopiert hast. Damit ich den Code jetzt ausführen könnte müsste ich erst mal jedes ">" entfernen.
Außerdem ist es immer leichter wenn du nur den Teil postest bei dem ein/der Fehler auftritt (siehe Punkt 1).

4) Arbeite ein wenig an deinem Programmierstil. Du verwendest oft nichts sagende Variablen wie d, j, i. Es empfiehlt sich mMn "sprechende Variablennamen" zu benutzen. Also z.B. die Teilnehmerzahl nicht in int i sondern in int teilnehmerzahl speichern.

Wenn du Kommentare schreibst, schreibe sinnvolle Kommentare. Kommentare wie 'for-Schleife' sind wenig hilfreich. Dass das eine for-schleife ist sehe ich selbst, aber nicht was du dir dabei gedacht hast/was in der Schleife gemacht wird.

Sei mit deiner Namensgebung konstant. Im 1. Beispiel hast du 3 unterschiedliche Schreibstile für deine Funktionsnamen verwendet. Großeranfangsbuchstabe() kleineranfangsbuchstabe() ALLESGROSS(). Das macht es nicht alles einfacher, weder dir noch den Leuten die dir helfen wollen.

Einrückungen sind sehr hilfreich für alle Beteiligten um den Code schneller zu verstehen. Wenn du einrückst rücke konstant ein.

using namespace std; ist schlechter Stil und solltest du dir gar nicht angewöhnen.



Ich glaube das sind alles Sachen die man auch von jemanden im 1. Lehrjahr erwarten kann.
__________________
"They who can give up essential liberty to obtain a little temporary safety, deserve neither liberty nor safety"
spartan-b292 ist offline   Mit Zitat antworten
Folgendes Mitglied bedankte sich bei spartan-b292:
Ungelesen 21.02.15, 13:13   #7
dustail
Newbie
 
Benutzerbild von dustail
 
Registriert seit: Mar 2009
Beiträge: 83
Bedankt: 45
dustail gewöhnt sich langsam dran | 35 Respekt Punkte
Standard

Zitat:
Zitat von mrburns Beitrag anzeigen
Kurz gesagt: gar nicht.
Lang: In C und C++ sind Arrays nichts anderes als Pointer mit Offset als Index, das bedeutet, wenn du ein Array als Funktionsargument übergibst, hast du damit grob gesagt (sehr grob!) eine implizite Liste von Pointern auf Integer übergeben.
Damit kannst du also die Inhalte deines Arrays in der Funktion ändern ohne es zurückgeben zu müssen.
Diese Aussage ist leicht verwirrend. Zuerst ist es ein "Gar nicht", anschließend knüpfst du eine Bedingung an ("..wenn du ein Array als Funktionsargument übergibst,..").
Das ganze nennt sich call by reference, weist du aber bestimmt schon

Die Geschichte mit den Pointern ist richtig. Aber es kann auch der Fall vorkommen, das ich in einer Funktion ein Array erstelle und den Pointer darauf zurückgebe.
Soweit ich weis, ist es in C++ egal, ob ich dann ein
Code:
int* arr
oder ein
Code:
int arr[]
zurückgebe. In beiden Fällen wäre es aber der return eines Arrays.
dustail ist offline   Mit Zitat antworten
Antwort

Themen-Optionen
Ansicht

Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:58 Uhr.


Sitemap

().