Zum Inhalt springen

Klotzkopp

Mitglieder
  • Gesamte Inhalte

    9912
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    3

Alle Inhalte von Klotzkopp

  1. Nein. Du sollst nicht Summe hinschreiben, sondern (2*i)-1.
  2. Klotzkopp

    DFÜ Simulator

    Die suchst du ja nun schon seit Jahren, quer durchs Web. Wem soll das vorgetäuscht werden? Dem Benutzer? Dem Betriebssystem? Einem anderen Programm? Was soll danach passieren? Sollen dann Daten über die vorgetäuschte Verbindung fließen? Warum nicht einfach ein Nullmodemkabel, und am anderen Port tut ein Skript so, als wäre es ein Modem?
  3. Kann ich nicht reproduzieren. Allerdings habe ich den Header <std_lib_facilities.h> nicht, vielleicht macht der irgendeinen Quatsch. Ich auch. Versuch's bitte mal damit: #include <iostream> #include <conio.h> int main() { using namespace std; cout << "Geben Sie einen Gleitkommawert ein: "; double n; cin >> n; cout << "n == " << n << "\nn+1 == " << n+1 << "\ndreimal n == " << 3*n << "\nzweimal n == " << n+n << "\nn zum Quadrat == " << n*n << "\nHaelfte von n == " << n/2 << "\nWurzel von n == " << sqrt(n) << endl; getch(); return 0; }[/code]
  4. Gib doch mal ein Beispiel für Eingabe und Ausgabe.
  5. Das ergibt sich doch aus dem Text darüber. n ist die Anzahl der Punkte minus 1, x und f sind Arrays, die die Punktkoordinaten enthalten, und s ist das Ergebnisarray.
  6. Suchst du so etwas? JavaScript call from C++ - CodeProject
  7. Klotzkopp

    Stack

    Soweit richtig. Und welche Größe forderst du an? Was ist sizeof(stack[a])? Ich hatte dich in deinem letzten Thread bereits darauf hingewiesen, dass du dich informieren sollst, was sizeof tut. Der Hinweis ist offenbar auf taube Ohren gefallen. sizeof arbeitet mit Typen. Wenn du sizeof statt auf einen Typen auf einen Ausdruck anwendest, wird der Typ des Ausdrucks ermittelt, und dann dessen Größe bestimmt. Insbesondere wird der Ausdruck nicht ausgewertet. Das Ergebnis des sizeof-Operators wird zur Compilezeit ermittelt. Irgendwelche Variableninhalte zur Laufzeit können also gar keinen Einfluss auf das Ergebnis haben. Wenn der Compiler auf sizeof(stack[a]) trifft, erkennt er, dass stack[a] kein Typ, sondern ein Ausdruck ist. Er ermittelt also den Typ des Ausdrucks. stack ist ein int*, zusammen mit dem Indexoperator wird daraus int. sizeof(stack[a]) ist also gleichbedeutend mit sizeof(int). Das ist auf heute gängigen Plattformen 4, und damit sicher nicht das, was du beabsichtigt hast. sizeof ist kein magisches Wunderding, das automatisch tut, was du meinst. sizeof hat eine klare Funktion, und hier ist es (wieder) falsch angewendet.
  8. Was fehlt denn da deiner Meinung nach?
  9. laubi hat es schon geschrieben: Mit den eckigen Klammern greift man auf einzelne Elemente eines Arrays zu. Das Array umsatz ist ein float[7], also kann man die 7 floats auch einzeln ansprechen, mit umsatz[0] bis umsatz[6]. Und genau das passiert hier: Bei jedem Schleifendurchlauf wird ein Wert in ein anderes Arrayelement eingelesen, denn i läuft von 0 bis 6. Nein. Die Variable summe wurde doch schon weiter oben definiert. Man darf jede Variable nur einmal definieren. Dasselbe gilt für die anderen Variablen. Hier wird der höchste Wert im Array gesucht. Die Vorgehensweise ist ähnlich, wie das ein Mensch machen würde: Du siehst dir den ersten Wert an und merkst ihn dir. Dann siehst du dir den nächsten Wert an. Ist er größer, vergisst du den ersten und merkst dir den neuen. Ist er es nicht, gehst du zum nächsten Wert usw. Am Ende ist dann der Wert, den du dir gemerkt hast, der größte. Die Variable hoechsterWert repräsentiert hier das "Merken". Sie speichert den bis dahin größten gefundenen Wert. Dann wird dieser Wert nach und nach mit jedem einzelnen Wert im Array verglichen. Und wenn der Arraywert größer ist, wird der gemerkte Wert durch den Wert aus dem Array ersetzt.
  10. Die Prüfung auf Tail == NULL muss ganz ans Ende der Schleife.
  11. Du brichst deine Schleife zu früh ab. Tail soll ja auf das Listenelement zeigen, vor dem du einfügen willst. Da du aber schon rausspringst, wenn Tail->next NULL ist, kannst du nie hinter dem letzten Element einfügen. Brich erst ab, wenn Tail selbst NULL ist. Dann zeigt Tail2 auf das letzte Element, und es sollte funktionieren. Man könnte sich jetzt noch über die Variablennamen streiten. Tail und Tail2 sind nicht gerade treffend
  12. Eine Liste besteht üblicherweise aus Objekten einer Struktur, die einerseits die Daten (in deinem Fall die Zahlen) und andererseits einen Zeiger auf das nächste Listenelement enthält.
  13. Der hier ist falsch herum. Der next-Zeiger des Vorgängers soll auf das neue Element zeigen, nicht andersrum. Du kannst das auch einfach daran erkennen, dass Tail2 immer noch NULL ist, denn du hast es ja (hoffentlich) mit NULL initialisiert. Wenn wenn du vorn einfügen musst, wird die Schleife ja nie betreten, und damit wird Tail2 nichts anderes zugewiesen.
  14. Die Bedingung deiner while-Schleife zeigt den richtigen Ansatz, aber so funktioniert das nicht. Erstens prüfst du nicht, ob du das Ende der Liste erreicht hast, und zweitens konstruierst du dadurch, dass du zwei Elemente gleichzeitig prüfst, einen zusätzlichen Sonderfall am Listenende. Such, bis du einen Eintrag findest, der "größer" als das einzufügende Element ist. Zusätzlich merkst du dir den Vorgänger, wie beim Löschen. Und auch hier musst du auf den Sonderfall achten, dass du ganz vorne einfügen musst. Im Prinzip ja, aber du musst auf die Reihenfolge achten. Nachdem du loesch freigegeben hast, darfst du auf loesch->zeichen nicht mehr zugreifen. Das Freigeben erfolgt in umgekehrter Reihenfolge des Reservierens.
  15. Du musst das freigeben, was dir malloc geliefert hat. Was das Einfügen angeht: Benutz nicht *liste zum Durchlaufen der Liste, denn das ist dein Anfangszeiger. Den darfst du nur dann verändern, wenn du vorne einfügst oder löschst. Vorher hast du das mit Tail gemacht, das war besser.
  16. Eine Anmerkung am Rande: Tu dir selbst einen Gefallen, und rück deinen Code ordentlich ein. Bei dir ist ja fast der gesamte Code auf derselben Höhe. Das könnte z.B. so aussehen: void loeschen(struct stringList **liste, char *zeichenkette) { struct stringList *loesch= *liste; // struct stringList *tmp2= *liste; struct stringList *tmp3= *liste; if (strcmp(zeichenkette, tmp2->zeichen) ==0){ loesch=tmp2->next; free(liste); // *liste=loesch; printf("1."); } else { while(strcmp(zeichenkette, tmp2->zeichen) !=0){ tmp3=tmp2; tmp2=tmp2->next; if(tmp2==NULL) printf("nicht vorhanden"); if(strcmp(zeichenkette, tmp2->zeichen) ==0){ loesch=tmp3->next; tmp3->next=tmp3->next->next; *liste=tmp3; free(loesch); printf("2."); break; }; } } }[/code]Hier kann man viel besser erkennen, wo welcher Block anfängt und aufhört. Stimmt. Warum tust du das? Der Anfang der Liste ändert sich doch nur, wenn du das erste Element löschst. Du musst übrigens auch den Speicher für den Text wieder freigeben. Momentan tust du das nicht, das ist ein Speicherleck. Durch wiederholtes Einfügen und Löschen verbraucht dein Programm also immer mehr Speicher.
  17. Welche Absichten du damit verfolgst, ist irrelevant. Mal ganz abgesehen davon, dass wir das ohnehin nicht prüfen könnten. Wir wollen nicht, dass dieses Board Anlaufstelle für Leute wird, die Anleitungen zum Ausnutzen von Sicherheitslücken suchen.
  18. Der Fehler ist nicht in der Ausgabe, sondern in der Eingabe. Deine Eingabeschleife ist ein wenig seltsam. Du liest zuerst von der Tastatur ein, und prüfst dann erst deine Zählvariable und fügst ggf. in die Liste ein. Die sechste Tastatureingabe fügst du gar nicht erst ein. Warum benutzt du nicht gleich z für die Schleifenbedingung? Du wirst nicht drumherum kommen, dir in einer zusätzlichen Variablen den Vorgänger des gerade geprüften Elements zu merken, denn dessen next-Zeiger musst du auch ändern. Außerdem brauchst du eine Sonderfallbehandlung, falls jemand das erste Element löschen will, denn das hat keinen Vorgänger.
  19. "Kinderleicht" ist relativ, aber ansonsten stimmt das.
  20. Das wundert mich. Eigentlich sollte man das lernen, bevor man so eine Aufgabe bekommt. Das Verfahren nennt sich Potenzmengenkonstruktion.
  21. Dann weißt du ja, wo du ansetzen musst.
  22. Und wer ruft diesen Konstruktor mit einer Nullreferenz auf?
  23. Du musst *liste auf NULL prüfen, nicht liste.
  24. Ich habe es nicht nachgeprüft, aber Range.Information(wdFirstCharacterLineNumber) sieht doch ganz gut aus.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...