Hilfe bei Schulaufgaben/Referaten/Studium etc.

    • Ich möchte auch einmal um Hilfe fragen. Gerade sitze ich an einer Hausarbeit in C (programmieren tue ich mit Visual Studio), leider muss ich das Ding schon nächste Woche abgeben und ich sitze seit einer Woche an den Code für eine Aufgabe.. leider kann ich nachfolgendes aber auch nicht ohne diesen Code programmieren. Ich bin ein grottenschlechter Programmierer, aber mit meinen Büchern komme ich gerade auch nicht weiter und Studienkollegen, welche ich fragen könnte, habe ich auch nicht ;(

      Die Aufgabe ist folgende:

      Spoiler anzeigen

      Funktion strRstr:
      Schreiben sie eine C-Funktion, die in einer Zeichenkette nach dem letzten Auftreten
      einer Musterzeichenkette innerhalb der vorgegebenen Zeichenkette suchen soll. Sie
      habe den nachfolgenden Prototyp:
      char* strRstr(char* s,char* m);

      Dabei haben die Parameter dieser Funktion die nachfolgende Bedeutung:
      Name Beschreibung Datentyp
      s Die vorgegebene Zeichenkette char*
      m Das zu suchende Muster char*

      Als Ergebnis soll diese Funktion den Zeiger auf das letzte Auftreten des vorgegebenen
      Musters liefern. Falls dieses Muster in der Zeichenkette nicht gefunden wurde, soll der
      NULL-Zeiger zurückgeliefert werden.


      (Zusätzlich muss ich auch eine Funktionsbibliothek namens funktionen.h programmieren, aber die ist gerade nicht das Problem)


      Ich nehme stark an, dass mein Code garantiert fehlerhaft ist und noch nicht das gewünschte ausgibt.
      Weiter komme ich aber auch nicht mit meinem vorhanden Wissen.. das nächste Problem ist die Zeile 31, ich weiß, dass bei strrstr() in den Klammern etwas stehen muss, aber ich habe absolut keine Ahnung, was ich dorthin (für char* s,char* m ) schreiben soll. Somit funktioniert auch nicht die Ausgabe. Aus Zeitgründen kann ich mich nicht sehr viel länger am Code aufhalten, aber ich müsste das Programm wenigstens zum Laufen bekommen.


      Weiß jemand Rat? ;(

      C-Quellcode

      1. #include <stdio.h>
      2. #include <string.h>
      3. #include "funktionen.h"
      4. #include <stddef.h>
      5. /* char* strRstr(char* s,char* m);
      6. s Die vorgegebene Zeichenkette
      7. m Das zu suchende Muster
      8. */
      9. char* strrstr(char* s, char* m)
      10. {
      11. s[30] = "Zeichenkette";
      12. m = strrstr(s, ".");
      13. if (m != NULL) {
      14. *m = '\0';
      15. }
      16. else {
      17. printf("m = %c\n", s);
      18. }
      19. }
      20. void main(void)
      21. {
      22. int f = strrstr();
      23. printf("Ausgabe %c\n", f);
      24. }
      Alles anzeigen

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Robyn ()

    • Ich habe erstmal nur eine Teillösung geschrieben.

      In den Beispiel hast du 2 Strings "ei" und "Feinheit"
      Die Funktion sucht den Substring "ei" in "Feinheit" und speichert ab dem 1. Treffer alle nachfolgenden Elemente in das Feld bzw. den Zeiger pointer.
      Bei der Ausgabe erscheint bei einen Treffer, dass der String gefunden wurde und der Pointer auf die jeweilige Adresse zeigt oder auf welcher Adresse das erste Element von pointer liegt:

      In dem Beispiel: String "einheit" bei der Adresse "0028FF30" gefunden.

      Deine Aufgabe ist es nun aber den letzten Treffer auszugeben ;)

      Viel Erfolg !

      PS: Kannst jedoch immer noch fragen, wollte nur nicht den ganzen Spaß dir wegnehmen :)

      C-Quellcode

      1. #include <stdio.h>
      2. #include <string.h>
      3. char* strRstr(char *s,char *m)
      4. {
      5. char *p;
      6. p=strstr(s,m);
      7. return p;
      8. }
      9. void main(void)
      10. {
      11. char s[] = "Feinheit";
      12. char m[] = "ei";
      13. char *pointer;
      14. pointer=strRstr(s,m); // liefert ab dem ersten Treffer alle nachfolgenden Elemente
      15. if(pointer) // Fallunterscheidung, wenn das Array gefüllt oder leer ist
      16. {
      17. printf("String \"%s\" bei der Adresse \"%p\" gefunden\n\n",pointer,&pointer);
      18. }
      19. else
      20. {
      21. printf("String nicht gefunden");
      22. }
      23. }
      Alles anzeigen
    • Vielen lieben Dank Finnlad_Guy! Ich antworte dir mal lieber hier, anstatt via PN.

      Das mit den return leuchtet natürlich absolut ein, ganz dunkel erinnere ich mich sogar daran, von so was bei "char" schonmal gehört zu haben. Auf deine Lösung, char s und char m bei void main zu schreiben, wäre ich vermutlich ewig nicht gekommen.. zuerst probierte ich es auch mit [], aber dann bekam ich laufend Fehlermeldungen, weil ich keine Zahl / Größe definiert hatte.


      Sehe ich das richtig, dass *pointer dann für den NULL-Pointer steht? Im Buch hatte ich gelesen, dass man so was als

      zB.
      (m != NULL) {


      *m = '\0';

      schreiben muss, zusätzlich noch mit der <stddef.h>, da ja dort der NULL-Pointer wohl drinn ist.
      Ich bin etwas verwirrt, dass man es dann doch so umschreiben kann :) Und warum eigentlich dann *pointer und nicht * pointer? In den Büchern steht es meistens als *pointer, aber sehr viel habe ich nicht über die andere Schreibweise herausfinden können.




      Eine Adresse wie 0028FF30 bekam ich sogar schon in einen früheren Versuch mal heraus, aber ich dachte dann, dass diese Anzeige ein Fehler war und probierte wieder was anderes heraus. Aber so ist das halt, wenn man nur mit Büchern programmieren lernt.. aus Fehlern kann man ja nur lernen ^.^
    • Robyn schrieb:

      Vielen lieben Dank Finnlad_Guy! Ich antworte dir mal lieber hier, anstatt via PN.

      Das mit den return leuchtet natürlich absolut ein, ganz dunkel erinnere ich mich sogar daran, von so was bei "char" schonmal gehört zu haben. Auf deine Lösung, char s und char m bei void main zu schreiben, wäre ich vermutlich ewig nicht gekommen.. zuerst probierte ich es auch mit [], aber dann bekam ich laufend Fehlermeldungen, weil ich keine Zahl / Größe definiert hatte.


      Das return brauchst du nur, weil die Funktion NICHT vom Typ void ist. Da dein Prof dir bereits den Aufbau der Funktion vorgeschrieben hat, kannst du dabei auch wenig variieren.

      Der Grund warum es in die Hauptfunktion muss, ist das er dir bereits den Grundaufbau der Funktion gegeben hat und dieser die beiden Arrays/Pointer s und m enthält. Arrays und Pointer sollten IMMER per call by reference übergeben werden!

      Bei call per reference wird nur die Adresse des ersten Elementes übertragen und alle Veränderungen die an dem Array stattfinden nach dem Funktionsaufruf bleiben bestehen! ( damit hab ich fast die Lösung verraten :D ). Im Gegensatz zu call by value wird nur eine Kopie der Variable übergeben, sodass alle Veränderungen an der Kopie stattfinden und nicht der Ursprungsvariable.

      Zu deiner Lösung s und m in der Funktion zu deklarieren, ist nicht falsch, aber unsauber, da es übersichtlicher ist, die Funktion mehrmals aufzurufen, anstatt eine Schleife in die Funktion zu basteln.
      ( Das ist jedenfalls nur meine Meinung und mit C hab ich nur bei Mikrocontrollern bisher Anwendungen gehabt )

      Bzgl. der Arraydefinierungen habe ich keine Idee, warum das bei dir Fehlermeldungen gab. Im Prinzip finde ich ein festdefiniertes Array dennoch besser als ein Array, welches sich anpasst, aber das ist jeden seine Entscheidung


      Robyn schrieb:

      Sehe ich das richtig, dass *pointer dann für den NULL-Pointer steht? Im Buch hatte ich gelesen, dass man so was als


      zB.
      (m != NULL) {


      *m = '\0';

      schreiben muss, zusätzlich noch mit der <stddef.h>, da ja dort der NULL-Pointer wohl drinn ist.
      Ich bin etwas verwirrt, dass man es dann doch so umschreiben kann :) Und warum eigentlich dann *pointer und nicht * pointer? In den Büchern steht es meistens als *pointer, aber sehr viel habe ich nicht über die andere Schreibweise herausfinden können.

      Jein. Dreh- und Angelpunkt ist hierbei die Funktion strstr, welche sich bereits der Bibliothek string.h befindet.
      Puuh ich weiß jetzt nicht welchen Compiler Visual Studio nutzt, jedoch habe ich den GNU-GCC verwendet und in der documenatry steht:

      Function: char * strstr (const char *haystack, const char *needle)This is like strchr, except that it searches haystack for a substring needle rather than just a single character. It returns a pointer into the string haystack that is the first character of the substring, or a null pointer if no match was found. If needle is an empty string, the function returns haystack.
      For example,
      strstr ("hello, world", "l") => "llo, world"strstr ("hello, world", "wo") => "world"

      Documentary GNU-GCC

      Das bedeutet, dass der Zeiger/das erste Element des Arrays p nach den Aufruf der Funktion, entweder einen NULL-Pointer zurückgibt( festdefinierte Adresse, welche den Compiler sagt, dass der Zeiger auf kein Element zeigt ) oder auf das erste Element vom ersten Matching zeigt ( hier "einheit" ).if(m) und if(m !=NULL) ist identisch nur Programmierer sind bekannterweise tippfaul :) Schreibe ruhig die aufwendigere Variante, da es aufjedenfall übersichtlicher ist.Ja, die stddef.h enthält unter anderem den NULL-Pointer, jedoch ist dieser auch string.h in welcher ebenso die strstr Funktion enthaltenenthalten ist.Das Sternchen oder die eckigen Klammern können sowohl direkt nach dem Datentyp, als auch direkt vor dem Bezeichner stehen
      Difference int x[] and int[] x

      Das ist bei mir am Ende so inkonsistent, weil ich mir deine Funktion direkt rauskopiert hatte :whistling:

      Robyn schrieb:

      Eine Adresse wie 0028FF30 bekam ich sogar schon in einen früheren Versuch mal heraus, aber ich dachte dann, dass diese Anzeige ein Fehler war und probierte wieder was anderes heraus. Aber so ist das halt, wenn man nur mit Büchern programmieren lernt.. aus Fehlern kann man ja nur lernen ^.^

      Die Adresse dürfte sich eher selten ändern, da nach jeden Programmneustart das Betriebssystem den vorreservierten Speicher wieder löscht und somit danach genauso wieder beschreibt :)

      Ich habe auch noch zwei Fragen:
      Welches Programm und Compiler nutzt du und wurde dass dir von deinem Professor vorgeschrieben ?
      In welche Richtung geht deine Hausarbeit weiter ? :D
    • Lieben Dank für deine Erklärungen!

      Ich bin mir gerade echt nicht sicher, ob überhaupt jemals großartig der Unterschied zwischen call per reference und call per value im Unterricht behandelt wurde.. :huh: Das scheint auf jeden Fall interessant/wichtig zu sein, dazu muss ich noch viel üben ^.^

      Function: char * strstr (const char *haystack, const char *needle)This is like strchr, except that it searches haystack for a substring needle rather than just a single character. It returns a pointer into the string haystack that is the first character of the substring, or a null pointer if no match was found. If needle is an empty string, the function returns haystack.
      For example,
      strstr ("hello, world", "l") => "llo, world"strstr ("hello, world", "wo") => "world"

      Uh, das ist interessant. Das Beispiel scheint mir sehr ähnlich mit meiner zweiten Aufgabe (die darauf aufbaut) zu sein.
      Vielen Dank auf jeden Fall für den Link zu dieser Seite, die kannte ich noch nicht. Davor habe ich hauptsächlich immer mit den Büchern "C Grundkurs" und "C/C++ Das umfassende Lehrbuch" gearbeitet, wobei die Suche nach Beispielen oft wie eine Nadel im Heuhaufen sein kann.

      Welches Programm und Compiler nutzt du und wurde dass dir von deinem Professor vorgeschrieben ?
      Im Prinzip nutze ich für alles Visual Studio, zumindest was C / C++ angeht. Eclipse verwende ich nur für Java.
      Unser Professor brachte uns hauptsächlich den Umgang mit Visual Studio bei, weswegen ich bei anderen Programmen / Compilern keinerlei Ahnung habe. Ein Semester lang war ich aber auch mal Gasthörer an einer Berliner Uni, die programmierten dort generell alles mit der Konsole 8o Für die war es total normal, aber für mich war das echt ziemlich anstrengend.
      Ansonsten hat der Professor nichts vorgeschrieben, ich denke, dass es ihm egal ist, da er sowieso nur den Quelltext sehen will.

      Ich sende dir die Aufgaben der Hausarbeit mal per PN! :)
    • Hallo zusammen! :)

      Ein hilfloser Student ist mal wieder auf der Suche nach Probanden. Und zwar sammle ich gerade Daten für meine Bachelorarbeit im Fach Wirtschaftspsychologie anhand einer kleinen Umfrage, in der ein wirtschaftliches Verhaltensexperiment simuliert wird. Keine Sorge, ich werde weder in eure Köpfe schauen, noch werde ich dafür sorgen, dass ihr in Zukunft nur noch Pepsi anstatt Coca Cola trinkt ;) Tatsächlich müsst ihr lediglich ein paar Fragen beantworten und eure Meinung abgeben - selbstverständlich anonym. Die Umfrage dauert, selbst wenn ihr euch richtig viel Zeit lasst, kaum mehr als 5 Minuten!

      Mitmachen könnt ihr unter diesem Link:
      http://l4asrv-6.wi.hs-osnabrueck.de/limesurvey/index.php/survey/index/sid/331366/newtest/Y/lang/de

      Und es lohnt sich! Unter allen Teilnehmern verlose ich eine Karte zum One Piece eine Menge Karma :saint: Spaß beiseite, ihr würdet mir sehr helfen und gerne helfe ich im Gegenzug auch, wenn ihr mal nach Teilnehmern für eine Umfrage sucht.


      Schon mal vielen Dank!

      Hugo

      #Part-Time Pirates
    • Fertig.

      Verstehe aber nicht den Wert dieser Umfrage für eine Bachelor Arbeit. Zum Ultimatum Spiel gibt es hunderte empirische Untersuchungen die das ganze deutlich umfangreicher und Gruppenspezifischer analysiert haben und das auch für wiederholte Spiele. Es ist deutlich sinniger diese zu zitieren. Wenn du eine Umfrage zu diesen Spiel machen willst, dann solltest du eine konkrete Fragestellung damit herausarbeiten. Das sehe ich aber nicht.
    • Servus ich zitiere mich mal selbst und verlege es hierher.

      Servus leute,ich wusste nicht wohin damit, deshalb habe ich es hierhin geschrieben.Und zwar wollte ich fragen ob jemand gut in Mathe erklären ist?Ich bräuchte Hilfe bei der Kurvendiskussion einer ln- und e-Funktion.Könnte einer von euch in der hinsicht praktisch mir einen Grundkurs beibringen, wo ich dann wenigstens die Basics draufhabe?Mit freundlichen GrüßenDB Generation
      Diese Leute, sei es nun Max Gieriger, Tim Bendzko, Glasperlenspiel und wie sie alle heißen, sind nichts weiter als Auswurfprodukte einer riesigen Industrie. Das hat nichts mit "echter" Musik zu tun, sondern ist einfach nur berechneter Scheiß, der auf einer Stufe mit so einem Schwachsinn wie Helene Fischer und Andreas Gabalier steht. Musik, die nichts zu sagen hat, nicht weiter weh tun will und auch sonst nichts Bleibendes hinterlässt.
    • Was ist deine Frage? Weder e- noch ln- Funktionen sind nun sonderlich kompliziert. Mir erschließt sich auch nicht was du da groß an Kurvendiskussion machen willst. Du könntest was über Krümmung und Wendepunkte aussagen. Aber das ist halt stumpfes auswendig lernen der entsprechenden Formel und Ableitungsregeln.
    • KoalaD schrieb:

      Was ist deine Frage? Weder e- noch ln- Funktionen sind nun sonderlich kompliziert. Mir erschließt sich auch nicht was du da groß an Kurvendiskussion machen willst. Du könntest was über Krümmung und Wendepunkte aussagen. Aber das ist halt stumpfes auswendig lernen der entsprechenden Formel und Ableitungsregeln.
      Ah,

      also ich persönlich finde schon das die zwei Funktin kompliziert sind. Aber jedem das seine.

      Nunja eine komplette Kurvendiskussion halt. Nullstellen herausfinden, Extrempunkte bestimmen, monotonie, Tangente herausfinden sowie die Krümmung, Wendepunkte bestimmen.

      Als Beispiel:

      Gegeben ist die Funktion f(x)=ln(x)-ln(6-x).


      .a) Bestimmen Sie die Defionitionsmenge von f. Wie verhält sich die Funktion an den Rändern der Definitionsmenge?
      .b) Ableitungen errechnen.

      oder
      Wo schneidet der Graph von f die horizontale Gerade g(x)}=1?

      So was eben.

      Mit freundlichen Grüßen

      DB Generation
      Diese Leute, sei es nun Max Gieriger, Tim Bendzko, Glasperlenspiel und wie sie alle heißen, sind nichts weiter als Auswurfprodukte einer riesigen Industrie. Das hat nichts mit "echter" Musik zu tun, sondern ist einfach nur berechneter Scheiß, der auf einer Stufe mit so einem Schwachsinn wie Helene Fischer und Andreas Gabalier steht. Musik, die nichts zu sagen hat, nicht weiter weh tun will und auch sonst nichts Bleibendes hinterlässt.
    • Use the Internet:

      • Zum einen gibt es z.b. die Jungs von "The Simple Maths" - Dort gibt es coole Videos die dir Mathe erklären. Wer sucht, der findet
      • Dann gibt es noch seiten wie GeoGebra - Dort kannst du Sachen einzeichen und nach Sachen Suchen die Gesucht sind. Wie z.b. "Wo schneidet eine Kurve was" (so auch deine Funkion: ggbm.at/QcB8ypbp )
      • Auch gibt es den Algebra Calculator von MathPapa - Mit dem kannst du auch teils hochkomplexe Gleichungen Lösen lassen inkl. Lösungsweg
      • Last but not least, Klassiker, die Mathebibel - Theorie reloaded!


      Probierst es nochmals selbst ansonsten frag nochmals.
    • DB Generation schrieb:

      KoalaD schrieb:

      Was ist deine Frage? Weder e- noch ln- Funktionen sind nun sonderlich kompliziert. Mir erschließt sich auch nicht was du da groß an Kurvendiskussion machen willst. Du könntest was über Krümmung und Wendepunkte aussagen. Aber das ist halt stumpfes auswendig lernen der entsprechenden Formel und Ableitungsregeln.
      Ah,
      also ich persönlich finde schon das die zwei Funktin kompliziert sind. Aber jedem das seine.

      Nunja eine komplette Kurvendiskussion halt. Nullstellen herausfinden, Extrempunkte bestimmen, monotonie, Tangente herausfinden sowie die Krümmung, Wendepunkte bestimmen.

      Als Beispiel:

      Gegeben ist die Funktion f(x)=ln(x)-ln(6-x).


      .a) Bestimmen Sie die Defionitionsmenge von f. Wie verhält sich die Funktion an den Rändern der Definitionsmenge?
      .b) Ableitungen errechnen.

      oder
      Wo schneidet der Graph von f die horizontale Gerade g(x)}=1?

      So was eben.

      Mit freundlichen Grüßen

      DB Generation

      Das wird dir hier alles erklärt
      mathebibel.de/kurvendiskussion-exponentialfunktion

      Ganz kurz ein paar Werte.
      Die Definitionsmene ist D = x>6 bzw. D = {x element von R: 0<x<6}
      Nullstelle ist 3
      Keine Symmetrie

      Die Funktion ist ultra beschissen zum ableiten daher spare ich mir das.
    • Áyu schrieb:

      KoalaD schrieb:

      Die Funktion ist ultra beschissen zum ableiten daher spare ich mir das.
      Use the Internet!
      Man findet wirklich alles im Internet - Oftmals auch mit Lösungsweg.

      ableitungsrechner.net/

      --> ableitungsrechner.net/#expr=ln(x)-ln(6-x&showsteps=1

      =)
      Das ist mir schon bewusst. Benutze ich auch oft für die Uni. Ich habe das aber nur kurz aufm Handy gemacht. War aufm Rückweg vom saufen ^^
    • @KoalaD und @Ayu


      Danke ihr zwei, die Links sind sehr nützlich.


      Mit freundlichen Grüßen
      Diese Leute, sei es nun Max Gieriger, Tim Bendzko, Glasperlenspiel und wie sie alle heißen, sind nichts weiter als Auswurfprodukte einer riesigen Industrie. Das hat nichts mit "echter" Musik zu tun, sondern ist einfach nur berechneter Scheiß, der auf einer Stufe mit so einem Schwachsinn wie Helene Fischer und Andreas Gabalier steht. Musik, die nichts zu sagen hat, nicht weiter weh tun will und auch sonst nichts Bleibendes hinterlässt.