Array Aufgabe für Anfänger ( mich )
-
Hey Leute,
ich bin noch komplett neu in der C++ Welt, habe diesen Semester mit Programmieren angefangen und ich muss jetzt selbständig C++ Aufgaben lösen bis Semesterende.
Ich bin ein totaler Grünschnabel- habe einfach noch garkein Plan von C++.
Dazu brauche ich eure Hilfe.
Die Aufgabe sieht wie folgt aus. Ich brauche Hilfe. Wie muss ich an die Aufgabe rangehen?
2. Schreiben Sie eine Funktion
int max(int v[], int n), die zu einem gegebenen Array
v der Lange n das größte Element zurückliefert.Testen Sie die Funktion mit folgendem Hauptprogramm.
main()
{
int v[9]= {12, 123, 51, 72, 4, 8, 19, 44, 105};
cout << "Das maximale Feldelement ist " << max(v,9) << endl;Tut mir leid, wenn ich etwas nicht erwähnt haben sollte, was zu einem Beitrag ( Thread ) dazu muss. Ich bedanke mich im vorraus.
Mfg
}
-
Du nimmst deine Unterlagen (Buch, Skript, Tutorial) und schaust mal bei Arrays und Funktionen und Schleifen nach.
-
Okay ich schau mal nach.
-
Was ist deine Frage? Hast du technische Schwierigkeiten bei der Umsetzung? Hast du keine Idee, wie man das Maximum einer Menge von Zahlen finden kann?
-
Also ich bin dabei und lese mir gerade den Skript bisschen durch. Ich habe etwas über Felder gelesen und kann mir schon bisschen besser vorstellen, was die Aufgabe von mir will.
Ich habe ein Feld v[] ( Bsp. v [10], dass 10 Elemente beinhaltet. Diese Anzahl an Elementen werden in n angegeben ) und das Programm soll mir dann aus dem Feld die größte Zahl ausgeben.
Ich weiß grade nicht, was man alles für Material ( Schleifen wie for, if , while ect. ) braucht, welche Gedanken ich haben muss ( was muss ich mir überlegen ? ), um so eine Aufgabe zu lösen. ( Wie gesagt bin ich noch am Skript und lese mir das durch bisschen, vielleicht komme ich dabei auf Ansätze ).
-
So wie du es auch "per Hand" machst.
Du gehst durch das Array und vergleichst jede Zahl mit deinem bisherigem Maximum.
-
Ok danke für die Antwort.
Ich weiß nicht ob ich dazu im Skript was finde- also wie man die Arrays durchgehen kann. Mit der for Schleife würde er doch Schritt für Schritt die Zahlen durchgehen und mit einer If Schleife könnte er ja überprüfen ob eine Zahl größer oder kleiner ist als die Vorherige. Ist dieser Gedanke richtig. Könnte ich sowas mal probieren?
-
mem0 schrieb:
... welche Gedanken ich haben muss ( was muss ich mir überlegen ? ), um so eine Aufgabe zu lösen.
Das aktuelle Maximum wird auf 0 gesetzt (da es keine negativen Zahlen in der Menge gibt).
Alle Zahlen durchlaufen und jedes Mal prüfen, ob sie größer als das aktuelle Maximum ist.
Wenn ja, aktuelles Maximum auf die aktuelle Zahl setzen.Sind alle Zahlen durchlaufen, entspricht das aktuelle Maximum auch dem absoluten Maximum in der Menge.
-
mem0 schrieb:
If Schleife
Es gibt keine if-Schleifen
-
Hi schrieb:
Das aktuelle Maximum wird auf 0 gesetzt (da es keine negativen Zahlen in der Menge gibt).
Mach es doch gleich richtig und fang mit einem beliebigen Element der Menge an, anstatt mit einem willkürlichen Startwert, der mal passt und mal nicht. Wenn man ein beliebiges Element aus der Menge nimmt, weiß man auf jeden Fall, dass es kleiner oder gleich dem Maximum ist, ohne irgendetwas über den gültigen Wertebereich wissen zu müssen.
Als dieses "beliebiges" Element schlage ich das erste Element vor. So entdeckt man auch gleich noch den Sonderfall, dass das Maximum einer leeren Menge undefiniert (und eben nicht 0!) ist, und man kann entsprechend reagieren.
-
mem0 schrieb:
Könnte ich sowas mal probieren?
Du brauchst uns nicht um Erlaubnis fragen.
-
SeppJ schrieb:
Mach es doch gleich richtig
scheiße bist du gut.
hatte wohl zu vuel punsch.
-
Hahaha, da hatte ich heute am späten Abend doch noch was zu lachen.
Danke an Seppj + DirkB (Reihenfolge ist unwichtig).
-
Ich habe mal einen Anfang gemacht, komme aber nicht mehr weiter.
1. Schritt:
2. Schritt: Ich erstelle eine Funktion, wie die Aufgabe es beschreibt
3. Schritt: ich erstelle eine maximum Variable.
4. Schritt: Eine for Schleife um jedes einzelne Wert nach Maximum zu überprüfen
5. If Anweisung um die Überprüfung durchzuführen ( muss vervollständigt werden )
6. return um den höchsten Wert auszugeben
7. Der Rest ist auch aus der Aufgabe.Ich weiß nicht genau, was jetzt bei der If Anweisung benutzt wird.
#include <iostream>
using namespace std;int max(int v[],int n){
double maximum=0;
for (int i=0; i<= n-1; i=i+1){
if ( >maximum)
}
return maximum;
}
main()
{
int v[9]= {12, 123, 51, 72, 4, 8, 19, 44, 105};
cout << "Das maximale Feldelement ist " << max(v,9) << endl;
}
-
mem0 schrieb:
if ( >maximum)
Das ist natürlich echtes hardcore programming:
maximum mit nix zu vergleichen
-
Ich meinte doch ich komme nicht weiter bei der If Anweisung.
Weiß eben nicht was ich vergleichen soll mit maximum.
Steht im Schritt 5.
-
mem0_26 schrieb:
Ich meinte doch ich komme nicht weiter bei der If Anweisung.
Weiß eben nicht was ich vergleichen soll mit maximum.
Steht im Schritt 5.
Wo arbeitest du in deiner Funktion max mit dem Array v?
for (int i=0; i<= n-1; i=i+1){
schreibt man i.A.
for (int i=0; i< n ; i++ ){
Man sieht auf den ersten Blick, dads die Schleife n Durchläufe hat und nur das i verarbeitet wird.
Und benutze bitte Code-Tags, dann bleibt der Code formatiert.
Code mit der Maus markieren und auf den C-Button unter demklicken.
-
Ok habs jetzt, hab in der If Anweisung :
v[i]>maximum gemacht und es hat funktioniert.
Darf ich hier noch weiter Threads aufmachen, wenn ich Probleme bekomme mit den Aufgaben?
Danke
-
mem0_26 schrieb:
Darf ich hier noch weiter Threads aufmachen, wenn ich Probleme bekomme mit den Aufgaben?
Wenn es dann ein neuer Thread ist, ja.
Dieser hier ist wohl abgeschlossen.Ansonsten gilt immer noch.
DirkB schrieb:
Du brauchst uns nicht um Erlaubnis fragen.
-
DirkB schrieb:
Du brauchst uns nicht um Erlaubnis fragen.
Höchstens den Herrgott selbst oder evtl. auch SeppJ.