|
|
Frage zu Aufgaben mit while-Schleifen und dem Befehl rand |
|
Ratlos_96 |

Forum-Newbie
|
 |
Beiträge: 7
|
 |
|
 |
Anmeldedatum: 08.07.18
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.07.2018, 18:16
Titel: Frage zu Aufgaben mit while-Schleifen und dem Befehl rand
|
 |
|
 |
|
Guten Abend,
ich programmiere erst seit wenigen Wochen bei meinem Studium mit Matlab und versuche mich aktuell an alten Prufüngsaufgaben. Da ich mit dem Vorlesungsskript und der "Hilfe-Funktion" bei Matlab nicht weiter komme, wende ich mich nun an Euch.
Wie ich die Programme aktuell angefangen habe, habe ich mal unter der Frage eingefügt.
Bei der ersten Aufgabe soll mittels einer while-Schleife der Benutzer immer wieder nach einer neuen Zahl z gefragt werden und diese zur vorherigen addiert werden. Nach jeder Eingabe soll die Anzahl der eingegebenen Zahlen und die Summe ausgegeben werden. Wenn die eingegebene Zahl größer als 9999 ist, soll das Programm beendet werden.
Bei der anderen Aufgabe soll durch den Befehl rand(1) eine zufällige Zahl zwischen 0 und 1 bestimmt werden. Falls diese größer als 0,5 ist, eine Zählvariable um eins erhöht und falls diese kleiner als 0,5 ist, eins abzieht. Dies soll n-mal wiederholt und am Ende der Wert der Zählvariablen ausgegeben werden.
Über Hilfestellungen und Ratschläge würde ich mich sehr freuen.
Viele Grüße und noch einen schönen Sonntag
[EDITED, Jan, Bitte Code-Umgebung verwenden - Danke!]
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.497
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 08.07.2018, 18:36
Titel:
|
 |
Hallo,
und worin bestehen nun deine konkreten Fragen dazu?
Grüße,
Harald
|
|
|
Ratlos_96 |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 7
|
 |
|
 |
Anmeldedatum: 08.07.18
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.07.2018, 19:16
Titel:
|
 |
ich bekomme das Programm nicht zum Laufen und würde gerne erklärt bekommen, wie ich das machen muss.
LG
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.497
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 08.07.2018, 19:37
Titel:
|
 |
Hallo,
stelle bitte konkrete Fragen.
Was heißt hier "nicht zum Laufen bekommen"?
Bekommst du nicht das gewünschte Ergebnis? Eine Fehlermeldung? Inwiefern bzw. welche?
Grüße,
Harald
|
|
|
Ratlos_96 |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 7
|
 |
|
 |
Anmeldedatum: 08.07.18
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.07.2018, 19:54
Titel:
|
 |
Bei der ersten Aufgabe:
- wie kann ich die Zahlen immer weiter zueinander addieren?
- wie packe ich das Ganze für jede Zahl in meine Ausgabe ? (Summe, Anzahl der eingegebenen Zahlen)
Bei der zweiten Aufgabe:
Ich habe es mit einer If,else Bedingung versucht, habe aber dasselbe Problem wie bei der anderen Aufgabe mit dem verrechnen der einzelnen Werte
MfG
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.497
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 08.07.2018, 20:29
Titel:
|
 |
Hallo,
Zitat: |
wie kann ich die Zahlen immer weiter zueinander addieren? |
Entweder stückweise:
oder einfach am Ende:
Zitat: |
wie packe ich das Ganze für jede Zahl in meine Ausgabe ? |
Die Frage verstehe ich nicht. Was ist denn "das Ganze für jede Zahl"?
Zitat: |
habe aber dasselbe Problem wie bei der anderen Aufgabe mit dem verrechnen der einzelnen Werte |
Dann s.o.
Zur Einarbeitung sehr empfehlenswert ist übrigens das kostenfreie MATLAB Onramp:
https://de.mathworks.com/training-schedule/matlab-onramp.html
Grüße,
Harald
|
|
|
Ratlos_96 |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 7
|
 |
|
 |
Anmeldedatum: 08.07.18
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.07.2018, 21:09
Titel:
|
 |
Vielen Dank für die Antwort und den Link.
Sollte ich es nicht hinbekommen, würde ich mich erneut melden
LG
|
|
|
Ratlos_96 |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 7
|
 |
|
 |
Anmeldedatum: 08.07.18
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.07.2018, 22:20
Titel:
|
 |
Das Programm läuft soweit eigentlich, nur startet die Anzahl der eingegebenen Zahlen immer mit 2. Wenn ich bei der Initialisierung am Anfang i = 0 setze funktioniert das Programm allerdings nicht mehr...
[EDITED, Jan, Bitte Code-Umgebung verwenden - Danke!]
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.497
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 08.07.2018, 23:18
Titel:
|
 |
Hallo,
Zitat: |
nur startet die Anzahl der eingegebenen Zahlen immer mit 2 |
Das sollte sich doch leicht korrigieren lassen? z.B. durch Abziehen von 1?
Zitat: |
Wenn ich bei der Initialisierung am Anfang i = 0 setze funktioniert das Programm allerdings nicht mehr... |
Lass uns doch bitte nicht raten, was nicht funktioniert. Du bekommst vermutlich eine Fehlermeldung, dann poste sie doch bitte auch. Die weitere Verwendungsweise von i sollte im übrigen Hinweise darauf geben, wo das Problem liegt.
Grüße,
Harald
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 09.07.2018, 12:08
Titel:
|
 |
Hallo Ratlos_96
Kennst Du den Debugger schon? Siehe https://www.mathworks.com/help/matl.....process-and-features.html . Setze einen Breakpoint in den Code und lasse das Programm dann Zeile für Zeile laufen. Dabei wird schnell klar, was genau passiert und welche Änderungen Du brauchst.
Die Anzeige der "Anzahl der eingegebenen Zahlen" startet bei 2, weil Du vorher i vergrößerst. Wenn Du mit i=0 beginnst, muss z(i) scheitern (bitte immer Fehlermeldungen posten, wenn Du welche bekommst!), weil Indices in Matlab größer als 0 sein müssen.
"while k > 0" ist sinnfrei, denn break beendet die Schleife bereits.
In "fprintf('Bitte eine Zahl eingeben: ', i)" wird i gar nicht benutzt, denn es fehlt ein dazu passender Format-Specifier.
Ich finde "count" hübscher als "i", aber das ist Geschmackssache.
Gruß, Jan
|
|
|
Ratlos_96 |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 7
|
 |
|
 |
Anmeldedatum: 08.07.18
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.07.2018, 13:29
Titel:
|
 |
Danke für deine hilfreiche Antwort.
Ich habe zu meiner zweiten Frage mittlerweile auch ein Programm, welches keine Fehlermeldung erzeugt. Allerdings bin ich mir nicht sicher, ob das Programm auch das macht, was es soll. Da die Zahlen ja zufällig bestimmt werden, kann ich es ja auchnicht "nachrechnen/überprüfen". Macht das Ganze so Sinn oder liege ich damit komplett daneben?
[EDITED, Jan, Bitte Code-Umgebung verwenden - Danke!]
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 09.07.2018, 14:35
Titel:
|
 |
Hallo Ratlos_96,
Fast.
Du kannst das sehr einfach überprüfen, in dem Du den bereits erwähnten Debugger verwendest.
if
benötigt immer eine skalare Bedingung. "if z > 0.5" wird deswegen implizit als "if all(z(:) > 0.5) && ~isempty(z)" ausgeführt. Das ist aber nicht gewollt, sondern "if z(k)".
Gruß, Jan
|
|
|
Ratlos_96 |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 7
|
 |
|
 |
Anmeldedatum: 08.07.18
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.07.2018, 15:08
Titel:
|
 |
Vielen Dank für deine Antwort(en). Das hat mir wriklich sehr geholfen
LG
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|