Thema: Auch das Programm zur binären Suche liefert immer nur einen Treffer, wenn sich die Zahl mehrfach in der Liste befindet. Wie könnten Sie hier dafür sorgen, dass alle Treffer einer Zahl angezeigt werden? Für diese Aufgabe reicht es, wenn Sie die Änderu |
|
Wenn man eines gefunden hat, muss man schauen, ob die Zahlen direkt davor und danach identisch sind. Weil die Liste ja schon vorher sortiert sein muss, findet man damit dann alle.
Also: Treffer mit binärer Suche finden. Dann von der Fundstelle aus so lange nach vorne laufen, wie die Zahlen immer noch ein Treffer sind, danach von der Fundstelle aus nach hinten laufen, so lange, wie es die identischen Zahlen sind.
Man könnte dann den Index des ersten und des letzten Treffers als Trefferbereich zurück geben. Häufig wird dann auch der Index des ersten Treffers und der Index nach dem letzten Treffer zurück geliefert, das ist aber Geschmackssache.
Gruß
Marco
|
|
Thema: Algorithmen |
|
Ja, nach über 2 Jahren schaut da keiner mehr rein. Leider ist hier ja schon länger außer Spam nicht mehr viel los. Trotzdem Danke für Deinen Versuch!
Gruß
Marco
|
|
Thema: Struktogram |
|
Hallo!
Fangen wir ganz oben an: Weißt Du, was die erste Zeile tut? Was sollen die eckigen Klammer "[" und "]"?
|
|
Thema: Perzepton Hyperebene |
|
Also ich hab nochmal geschaut... Offenbar betrachtet man erstmal nur ein Neuron mit d Eingängen und entsprechend vielen Gewichten für die Eingänge. Das zusammen gibt eine gewichtet Summe. Normalerweise sagt man dann, dass der Ausgang 1 wird, wenn die Summe über einem bestimmten Schwellwert liegt, oder eben 0, wenn nicht.
Du kannst also für jeden Punkt im d-dimensionalen Raum aufgrund der Gewichte und dem Schwellwert dann bestimmen, ob der Ausgang 0 oder 1 ist. Also trennt sich der d-dimensionale Raum in zwei Halbräume auf, die in dem einfachen, linearen Fall eine Hyperfläche im d-dimensionalen Raum ist.
Wenn Du also den Vektor (2 1 1) gegeben hast und einen Schwellwert, dann kannst Du damit ja direkt die Koordinaten-Form der Ebene im 3D-Raum hin schreiben (hier ist ja d=3, also alles noch wie in der Schule in Analytischer Geometrie). Du kannst da ja überlegen: Punkte der Ebene sind ja gerade so definiert, dass sie auf der Grenzfläche liegen, also muss die Ebenengleichung:
w_0*i_0 + w_1*i_1 + w_2*i_2 = b
für diese Punkte erfüllt sein. (Wobei i_0 .. i_d die Inputwerte entsprechend der Raumkoordinaten in der Darstellung sind und b der Schwellwert).
Nur hab ich da jetzt erstens eine ganze Menge geraten, was in der Aufgabenstellung stehen müsste und zweitens weiß ich auch nicht, wie das b ist und so weiter.
Gruß
Marco
PS: Jetzt wo ich Deine ursprüngliche Frage nochmal lese: Ja, das macht wenig Sinn in meinen Augen, Du brauchst einen Schwellwert und Du hast 3 Input-Werte, also muss auch ein 3-dimensionaler Raum betrachtet werden. Typischerweise zeichnet man dann in 3D ja gerne auch die Spurgeraden ein, vielleicht sind ja 3 2D-Diagramme mit jeweils der Spurgerade einer der Koordinaten-Ebenen gefragt, keine Ahnung.
|
|
Thema: Perzepton Hyperebene |
|
Hi!
Also, ich bin nicht sicher, ob ich Dir helfen kann... Aber erstmal kommt es mir so vor, als ob da einige Angaben fehlen könnten:
Handelt es sich um ein Perceptron mit nur einem Neuron und 3 Inputs mit den jeweiligen Gewichten? Oder fehlt da noch ein Schaubild, wo das genauer definiert ist?
Zweitens: Ist mit "... 1 ausgibt" gemeint, dass dieses Neuron 1 ausgibt? Dann müsste dafür aber auch noch eine Funktion angegeben sein, wann das Neuron 1 ausgibt.
Oder ist die Frage, wann die gewichtete Eingangs-Summe 1 ergibt?
Gruß
Marco
|
|
Thema: Lösungen zur Fälschungssicherheit: Software und Chipkarten |
|
Was ist mit Blockchain? Wird ja auch für digitale Kunst und so verwendet.
Aber mir ist nicht wirklich klar, wie man jemals die Uhr selbst damit identifizieren können soll, wenn man an der Uhr nichts anbringen kann. Damit bleibt die Uhr an sich ja immer austauschbar.
Gruß
Marco
|
|
Thema: Schwarz weiß Bild invertieren |
|
Ich glaube, Du verstehst das Wort "invertieren" falsch. Das macht bei einem s/w-Bild die weißen Pixel schwarz und die schwarzen weiß. Das hat mit Farbe gar nichts zu tun!
Gruß
Marco
|
|
Thema: Problem mit meiner Lösung |
|
Die Datenbank würde aber nur erlauben, dass in ein Trainingsplan zu nur einem Trainer gehört. Könnten in einem Trainingsplan nicht auch verschiedene Trainer eine Trainingseinheit haben?
Zu Deiner Abfrage: Warum die ganzen Joins? Du musst doch nur was an der Trainer-Tabelle ändern und brauchst dazu auch keine Informationen aus anderen Tabellen. Dann reicht es, wenn Du
UPDATE Trainer SET Grundpreis = Grundpreis * .95
schreibst. Ein Update hat auch keine FROM clause. Das was ein SELECT hinter dem FROM hat, kommt beim UPDATE gleich direkt nach dem UPDATE.
Gruß
Marco
Edit: Hab gerade gelesen, Du kannst sehr wohl eine FROM-Clause im UPDATE haben und dort auch JOINs verwenden. Aber das brauchst Du hier ja nicht, das wäre nur interessant, wenn nicht alle Trainer die Grundpreis-Änderung bekommen sollen, abhängig von Daten in anderen Tabellen. Das ist hier ja aber nicht der Fall.
|
|
Thema: einfach verkettete Listen Fehlermeldung: Warnung: Zuweisung an ListElement von imkompatiblem Zeigert |
|
Ich glaube, das Problem ist, dass Du zwischen dem typedef und einem struct unterscheiden musst.
Das struct von Deinem ListElement hat nämlich selbst gar keinen Namen, allerdings wird mit dem typedef ein Typ ListElement definiert, der sich auf diesen anonyme struct bezieht.
Also man kann eine struct ja z. B. so definieren:
code: |
1:
2:
3:
4:
5:
6:
|
struct struct_name {
int a;
float b;
};
|
|
Das ist dann eine struct, die Du verwenden kannst, indem Du eine Variable so definierst:
code: |
1:
2:
3:
|
struct struct_name struct_var;
|
|
Weil das keyword "struct" vorne dran unschön ist, kann man auch ein typedef verwenden (und macht man üblicherweise auch), in der Art:
code: |
1:
2:
3:
4:
5:
6:
|
typedef struct struct_name {
int a;
float b;
} structName;
|
|
Also quasi dasselbe wie oben, nur vorne dran ein "typedef" und bevor man das allerletzte Semicolon schreibt noch den Namen des neuen Typs, hier also "structName". Wenn Du das gemacht hast, kannst Du in Zukunft statt "struct struct_name" einfacher nur "structName" schreiben und alles fühlt sich auch eher wie ein normaler eingebauter Datentyp an.
Du hast aber geschrieben:
code: |
1:
2:
3:
4:
5:
6:
|
typedef struct {
int key;
struct ListElement *next;
} ListElement;
|
|
Aber "struct ListElement" gibt es nicht, die struct selber hat keinen Namen und definiert nur den Typ ListElement, nicht "struct ListElement". Deshalb kannst Du danach auch ListElement verwenden, aber das Problem ist jetzt hier, dass Du das eben noch nicht bei der Definition der struct selbst verwenden kannst, weil der Compiler das ja noch gar nicht kennt (so ne Art Henne-Ei-Problem).
Was Du am einfachsten machen kannst, ist, sowohl der struct selbst einen Namen zu geben, als auch das typedef zu machen. Dann aber bei der Definition der struct selbst nur den struct-Namen zu verwenden, also so meine ich das:
code: |
1:
2:
3:
4:
5:
6:
|
typedef struct list_element {
int key;
struct list_element *next;
} ListElement;
|
|
Damit sollte es dann gehen. Ich muss aber ehrlich zugeben, dass ich da selbst nicht so den kompletten Durchstieg hab. Im Detail ist das alles recht verwirrend...
Gruß
Marco
|
|
Thema: Dynamisches Lagerungssystem mit C++ erstellen |
|
Hallo!
- Ich verstehe nicht, was Du in Zeile 3 erreichen willst. Wenn es eine Deklaration von "artikel" sein soll, dann fehlt da ja der Datentyp vorne dran (bzw. die Klasse).
- Wie ist denn das Array "Artikel" deklariert? Es wäre vielleicht hilfreich, wenn man die komplette Klasse CLager kennen würde.
Gruß
Marco
|
|
Thema: firewall-systeme |
|
Zitat: |
Original von chrisbob
Ein Host hat dir IP-Adresse 197.15.120.162 und die Subnetmaske 255.255.255.224.
Wie lautet die zugehörige Netzadresse? |
Bei der Subnetmask sind die letzten 5 Bit nicht gesetzt (im letzten Byte ist eine 224 gegeben, mit 256 wären alle acht Bit gesetzt. 256-224 = 32 = 2^5). Also kannst Du die Adressen 197.15.120.xxx in 8 Blöcke mit jeweils 32 Adressen unterteilen. Deshalb sind die Netz-Adressen dann:
197.15.120.0
197.15.120.32
197.15.120.64
197.15.120.96
197.15.120.128
197.15.120.160 <--- hier ist die 197.15.120.162 enthalten
197.15.120.192
197.15.120.224
Also bekommst Du als Netz-Adresse die 197.15.120.160 und als Broadcast-Adresse die 197.15.120.191 (die letzte Adresse in dem Block.
Zitat: |
Original von chrisbob
Wie Viele Host können in den Netz, in dem sich der Host befindet adressiert werden?
|
Der komplette Block ist ja 32 Adressen groß. Allerdings fällt dabei die Net-adress selbst (also die 197.15.120.160) weg. Die sind nie verwendbar. Auch die Broadcast-Adresse fällt weg, bleiben noch 30 übrig.
Typischerweise braucht man dann noch mindestens eine Adresse für den Router, damit man auch irgendwie in andere Netze kommt. Aber ich bin mir nicht sicher, ob der Router hier vorgesehen ist und/oder ob der dann als eigener Host zählt. Manchmal braucht man in einem Net auch mehrere Router. Da aber dazu keine Angabe vorhanden ist, denke ich mal, man soll das ignorieren und die gewünschte Antwort wäre tatsächlich die 30.
Zitat: |
Original von chrisbob
wie lautet die Broadcastadresse? 197.15.120.255
|
s. o. 197.15.120.191 nicht die 255. Es ist nicht immer die 255, nur wenn das letzte Byte der Netmask 0 ist, dann wäre es immer die 255. Hier ist es aber eine 224 in der Netmask.
Zitat: |
Original von chrisbob
die alternative Darstellung für die Subnetzmaske?
|
Da von der Netmask die ersten 3 Byte komplett gesetzt sind (das sind schon 3 mal 8, also 24 Bit) und im letzten Byte noch dazu die ersten 3 Bit (also 24 + 3 = 27), ist es ein /27 Netz. Zusammen mit der Netzadresse ergibt sich dann:
197.15.120.160/27
Gruß
Marco
|
|
Thema: SchieferWurf |
|
Ich verstehe nicht, warum Du y aus x ausrechnest, zuvor aber x aus t. Warum dann nicht auch y aus t?
Du setzt gleich am Anfang t auf tgesamt, also auf den Endzeitpunkt des Wurfs. Da ist es dann nicht verwunderlich, wenn Du keine Zwischenpunkte bekommst. Ich denke, Du müsstest irgendwie in einer Schleife einige Stützpunkte ausrechnen (z. B. könntest Du eine Schleife von t=0 bis tgesamt laufen lassen und als Schritte z. B. tgesamt/20 oder so wählen, die Frage ist dann noch, ob Du die Stützpunkte mit einer Geraden verbinden willst oder so).
Gruß
Marco
|
|
|