Lernprogramm (Funktionen)

Schnelle objektorientierte, kompilierende Programmiersprache.
Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Lernprogramm (Funktionen)

Beitrag von Xin » Sa Mai 03, 2014 9:07 pm

Lämpi hat geschrieben:den zweiten Kommentar...

da steht "definiert den Wert von Pi"
"Bring ein Paket Milch mit und wenn Eier da sind, bring 6"... "Wieso hast 6 Pakete Milch mitgebracht?" - "Es gab Eier?!"
Wenn Du nicht Programmierer werden kannst, dann weiß ich es auch nicht...

Ich beziehe mich auf "hier fehlt die Funktion get_user_input von unten". Das könnte ein Hinweis sein.
Lämpi hat geschrieben:die Funktion enthält den Winkel und das komische is_cos,das weiß ich z.b nicht was das ist,klar es ist eine Variable
aber unten steht dann is_cos=rand()%2
Was gibt rand() zurück und was bedeutet %2?
Lämpi hat geschrieben:und warum steht dann in der if-Anweisung
is_cos==1 das is_cos wurde doch oben gleich rand()%2 gesetzt,warum kann man es dann in der if Anweisung Abfragen ,es ist ja nicht mehr is_cos??
Warum sollte is_cos nicht mehr is_cos sein?
Lämpi hat geschrieben:kannst du mir mal sagen ,wie man an so eine Aufgabe ran geht?? ich mein du bist Profi darin,wenn es einer weiß dann du
Du musst verstehen, dass ein "Rechner" kein mathematisches Gerät ist, sondern eine Maschine, die Mathematik in Teilbereichen simuliert. Eine Variable bei einem Computer ist variabel und steht nicht in Beziehung mit einem Gleichungssystem. In der Mathematik ist eine Variable zumindest für die zu lösende Aufgabe konstant. Sei a = x + 1 und sei x = 2, so ist a konstant 3, weil sonst den Gleichungen widersprochen werden. In der Informatik bedeutet das, dass x unbekannt ist und a = unbekannt + 1 ist, also a auch wilkürlich ist. Anschließend wird festgelegt, dass x = 2 ist. Auf a hat das keine Auswirkung.

Folgendes wird in der Mathematik schwer, ist in der Informatik aber normal:

Code: Alles auswählen

a = 1;
printf( "%d\n", a );
a = 2;
printf( "%d\n", a );
Er gibt beide Male den Wert von a aus. Beim ersten Mal ist a eins, beim zweiten Mal ist a zwei.
Lämpi hat geschrieben:ich bin echt beeindruckt von Programmierern wie dir,wie in alles in der Welt kann man so etwas begreifen :)
höchsten Respekt
Wenn Du verstanden hast, dass ein Computer nur eine Maschine ist, die wirklich nur sehr einfache Dinge ausführt, was im Idealfall irgendein Problem löst, wird der Respekt weniger. Wie alles einfach wird, wenn man es verstanden hat.

Vielleicht liest Du Dir das hier mal durch: Hardware:RAM
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Lämpi
Beiträge: 57
Registriert: So Mär 23, 2014 4:46 pm

Re: Lernprogramm (Funktionen)

Beitrag von Lämpi » Sa Mai 03, 2014 9:36 pm

hmm ja das rand() ,wie der Kollege Fritzi sagte generiert ein Zufallszahl vom Typ int,und das %2 bedeutet Modulo 2,also den Rest bei der Division durch zwei

ja das is_cos wurde ja rand()%2 gesetzt ,warum macht er denn das ??was bring denn das??

dann könnt ich in der if-Anweisung ja auch schreiben rand()%2==1, oder nicht??

und was soll diese Zeile

correct = fabs(get_user_input(is_cos, angle)/right - 1.) <= ACCURACY;

was beudet /right-1

doch doch ich frag mich immer wieder wie es Leute geben kann ,die so Programme schreiben können,ich mein dieses hier ist für dich ja lachhaft und für mich unüberwindbar

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Lernprogramm (Funktionen)

Beitrag von Xin » Sa Mai 03, 2014 9:42 pm

Lämpi hat geschrieben:dann könnt ich in der if-Anweisung ja auch schreiben rand()%2==1, oder nicht??
Könnte er.
Lämpi hat geschrieben:und was soll diese Zeile

correct = fabs(get_user_input(is_cos, angle)/right - 1.) <= ACCURACY;
Was könnte get_user_input denn zurückgeben?
Was das Programm tun soll, ist Dir ja bewusst.... ?

Wenn Du nicht verstehst, warum er mit ACCURACY vergleicht ist das in Ordnung, aber den Vergleich solltest Du gedanklich durchführen können.
Lämpi hat geschrieben:was beudet /right-1
geteilt durch right, subtrahiert um 1.
Lämpi hat geschrieben:doch doch ich frag mich immer wieder wie es Leute geben kann ,die so Programme schreiben können,ich mein dieses hier ist für dich ja lachhaft und für mich unüberwindbar
Es ist nicht unüberwindbar. Du musst nur tun, was die Maschine tut. Ohne nachdenken gedanklich durchführen, was da steht.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Lämpi
Beiträge: 57
Registriert: So Mär 23, 2014 4:46 pm

Re: Lernprogramm (Funktionen)

Beitrag von Lämpi » Sa Mai 03, 2014 9:57 pm

aber warum macht er dann is_cos==rand()%2 ??

get_user_input gibt doch nur zurück ob es korrekt ist oder nicht,stimmt das??

das Programm fragt den Benutzer zufällig was z.b cos(45) ist,so müsste das sein,oder??

warum muss man durch right teilen und dann -1 machen??

diese Zeile kapier ich auch nicht

int angle = angles[ rand() /*...*/ ]; /*Hier liegt Zahl nicht im richtigen Intervall*/

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Lernprogramm (Funktionen)

Beitrag von Xin » So Mai 04, 2014 8:21 am

Lämpi hat geschrieben:aber warum macht er dann is_cos==rand()%2 ??
Er schreibt is_cos = rand()%2. Das ist eine Zuweisung.

Was macht das Programm laut Beschreibung, was macht rand()%2 und was könnte die Variable "is_cos" vom Namen her bedeuten?
Lämpi hat geschrieben:get_user_input gibt doch nur zurück ob es korrekt ist oder nicht,stimmt das??
Was könnte der Name "get_user_input" bedeuten?
Lämpi hat geschrieben:das Programm fragt den Benutzer zufällig was z.b cos(45) ist,so müsste das sein,oder??
Oder was z.B. sin(45) ist.
Lämpi hat geschrieben:warum muss man durch right teilen und dann -1 machen??
Der Entwickler umgeht hier das Problem, dass Rechner nicht exakt rechnen, weil es eben Maschinen sind und keine "Rechner".
Er teilt das Ergebnis durch das erwartete Ergebnis. Das sollte ungefähr 1 ergeben. Dann zieht er 1 ab. Das sollte ungefähr 0. Wenn der absolute Wert von ungefähr 0 kleiner als ACCURACY ist, dann ist ungefähr 0 so nah an Null, dass es als "correct" durchgeht.
Lämpi hat geschrieben: diese Zeile kapier ich auch nicht

int angle = angles[ rand() /*...*/ ]; /*Hier liegt Zahl nicht im richtigen Intervall*/
Die ist ja auch noch nicht fertig.

rand gibt eine zufällige Zahl aus. Das Array angles hat aber nur eine gewisse Anzahl von Elementen. rand() könnte also eine Zahl ausgeben, die zu groß ist. Wie schaffst Du es, dass in den eckigen Klammern ein Ausdruck entsteht, der zwischen 0 und Anzahl der Elemente minus 1 ergibt?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Lämpi
Beiträge: 57
Registriert: So Mär 23, 2014 4:46 pm

Re: Lernprogramm (Funktionen)

Beitrag von Lämpi » So Mai 04, 2014 9:57 am

Morgen

Das Programm gibt eben einen zufälligen cos oder sin Wert aus,der Benutzer gibt dann den richtigen oder halt falschen Wert ein,das Programm sagt dann einem ob der Wert richtig oder falsch war,das macht diese Programm.

is_cos klingt vom Namen her "ist es cosinus"

rand()%2 ,rechnet halt die Zufallszahl Modulo 2,nur weiß ich noch nicht was das bringen soll,ich versteh nicht ganz wie die Zufallszahl mit den Winkel verknüpft ist,die Zufallszahl gibt doch einen der Winkel ausder im Array steht ,oder???
Jeder der Angegebene Winkel Modulo 2 ist doch 0,irgenwas versteh ich da falsch??

get_user_input ist einfach die Eingabe des Benutzers die er macht diese wird dann eingelesen




"Wie schaffst Du es, dass in den eckigen Klammern ein Ausdruck entsteht, der zwischen 0 und Anzahl der Elemente minus 1 ergibt?"

es sind acht Elemente im Array,der Array beginnt aber bei 0 zu zählen also schreib ich rand()>=0 && rand() <=7,stimmt das??

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Lernprogramm (Funktionen)

Beitrag von Xin » So Mai 04, 2014 10:25 am

Lämpi hat geschrieben:Das Programm gibt eben einen zufälligen cos oder sin Wert aus,der Benutzer gibt dann den richtigen oder halt falschen Wert ein,das Programm sagt dann einem ob der Wert richtig oder falsch war,das macht diese Programm.
Richtig.
Lämpi hat geschrieben:is_cos klingt vom Namen her "ist es cosinus"
Genau... wenn es 1 ist es Cosinus, wenn es 0 ist, ist es sinus.
Lämpi hat geschrieben:rand()%2 ,rechnet halt die Zufallszahl Modulo 2,nur weiß ich noch nicht was das bringen soll,ich versteh nicht ganz wie die Zufallszahl mit den Winkel verknüpft ist,die Zufallszahl gibt doch einen der Winkel ausder im Array steht ,oder???
Nein... ^^
Lämpi hat geschrieben:Jeder der Angegebene Winkel Modulo 2 ist doch 0,irgenwas versteh ich da falsch??
Wo wird da ein Winkel angegeben?
Lämpi hat geschrieben:get_user_input ist einfach die Eingabe des Benutzers die er macht diese wird dann eingelesen
Und gibt den Wert zurück.
Lämpi hat geschrieben:"Wie schaffst Du es, dass in den eckigen Klammern ein Ausdruck entsteht, der zwischen 0 und Anzahl der Elemente minus 1 ergibt?"

es sind acht Elemente im Array,der Array beginnt aber bei 0 zu zählen also schreib ich rand()>=0 && rand() <=7,stimmt das??
Kommt auf die Frage "Ist rand() größer gleich 0 und rand() kleiner gleich 7" als Antwort eine Zahl zwischen 0 und 7 rauskommt..!?

Jeder Aufruf von rand() liefert eine neue Zufallszahl.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Lämpi
Beiträge: 57
Registriert: So Mär 23, 2014 4:46 pm

Re: Lernprogramm (Funktionen)

Beitrag von Lämpi » So Mai 04, 2014 10:53 am

ohhh man ,ich krieg einen Knoten im Hirn :)

warum kann ich das sagen das wenn rand()%2 1 ergibt das es Cosinus ist,und wenn es 0 ist der Sinus ist,ist das einfach willkürlich so,kann ich das selber bestimmen??

ist es dann so das die Zufallszahl einfach ein Element des Arrays ist??

"Kommt auf die Frage "Ist rand() größer gleich 0 und rand() kleiner gleich 7" als Antwort eine Zahl zwischen 0 und 7 rauskommt..!?"

im Prinzip kommt da true oder false raus


hmm ...ich weiß echt nicht was da in den eckigen Klammern stehen soll

mir ist einfach noch nicht bewuusst,was meine Funktion die ich schreiben soll ,mit diesem main Programm zu tun hat, von wo weiß das main Programm ob oben ein sin oder cos ausgegeben wird,und kann dann sagen ob es richtig oder falsch ist

ich könnte weinen vor verzweiflung

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Lernprogramm (Funktionen)

Beitrag von Xin » So Mai 04, 2014 11:16 am

Lämpi hat geschrieben:warum kann ich das sagen das wenn rand()%2 1 ergibt das es Kosinus ist,und wenn es 0 ist der Sinus ist,ist das einfach willkürlich so,kann ich das selber bestimmen??
Nein, nicht ganz willkürlich. Ich kann Dir nur empfehlen, das Tutorial hier zu lesen, da wirst Du erfahren, dass eine Variable "is..." wahr ist, wenn sie nicht 0 ist und falsch, wenn sie 0 ist.
Grundsätzlich kann man das aber auch willkürlich machen. Die Variable sagt ja, was sie meint.
Lämpi hat geschrieben:ist es dann so das die Zufallszahl einfach ein Element des Arrays ist??
Es gibt nicht "die" Zufallszahl. Jedesmal, wenn Du rand() rufst, kommt eine neue.
Und nein, das Array ist inkl. seiner Elemente klar definiert.
Lämpi hat geschrieben:"Kommt auf die Frage "Ist rand() größer gleich 0 und rand() kleiner gleich 7" als Antwort eine Zahl zwischen 0 und 7 rauskommt..!?"

im Prinzip kommt da true oder false raus
Eben. Du brauchst was, was als Antwort etwas zwischen 0 und 7 zurückgibt.
Lämpi hat geschrieben:hmm ...ich weiß echt nicht was da in den eckigen Klammern stehen soll
Wie findet er denn raus, ob er Cosinus oder Sinus nehmen soll?
Lämpi hat geschrieben:mir ist einfach noch nicht bewuusst,was meine Funktion die ich schreiben soll ,mit diesem main Programm zu tun hat, von wo weiß das main Programm ob oben ein sin oder cos ausgegeben wird,und kann dann sagen ob es richtig oder falsch ist

ich könnte weinen vor verzweiflung
Lass das mit dem Weinen und schau Dir die Parameter an, die Deine Funktion erhält.

Ich kann Dir allerdings auch nur raten, nicht nur einfach diese Aufgabe zu lösen, sondern Dich mit Funktionen auseinander zu setzen. Dein Wissen reicht offensichtlich nicht, um die Aufgabe zu lösen, also musst Du Dir wohl mehr Wissen aneignen, bevor Du diese Aufgabe sicher lösen kannst.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Lämpi
Beiträge: 57
Registriert: So Mär 23, 2014 4:46 pm

Re: Lernprogramm (Funktionen)

Beitrag von Lämpi » So Mai 04, 2014 11:40 am

ich hab das Tuturial auf dieser Seite schon 2-3 mal durchgelesen

ich mein ich kann eine Funktion schreiben die Beispielsweise durch Eingabe des Benuters die Fläche eine geometrischen Objektes berechnet,das ist z.B kein Problem,aber hier bin ich auf verlorenem Posten bei der Aufgabe

die Parameter sind hier is_cos und das angle,mit denen geh ich in meine Funktion,das ist mir klar
das is_cos und das verdammmte rand() gehen mir nicht in den Schädel

wo gibt der Computer mir eigentlich den zufälligen cos oder sin aus?? muss ich das in die gesuchte Funktion schreiben

das is_cos kann nur Null oder Eins sein und das ist dann ein Parameter meiner Funktion,aber was macht der in meiner Funktion get_user_input

ich werde die Aufgabe nie lösen können

Antworten