WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Brauche Hilfe bei if-Schleife

 

Nordlicht

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.01.2014, 11:52     Titel: Brauche Hilfe bei if-Schleife
  Antworten mit Zitat      
Moin,

Ich habe einen Code geschrieben, bei dem 3 Zufallszahlen erzeugt werden, die unter einer Bedingung jeweils addiert werden sollen. Das Programm geht aber gar nicht erst in die if-Schleife rein..Wie kommt das? Zusätzlich möchte ich die Schleife auf jeden Fall 10 Mal durchlaufen, kann man das so machen, dass wenn die Bedingung nicht erfüllt ist der Zähler i um einen Wert heruntergesetzt wird? Hab irgendwie n Brett vorm Kopp grad ; )

Code:
for i=1:10
   
summe=0;
b1=rand(1)*200;
b2=rand(1)*100;  
b3=rand(1)*50;
   
if b1>=b2>=b3
   disp(['Zahl1:' num2str(b1)]);
   disp(['Zahl2:' num2str(b2)]);
   disp(['Zahl3:' num2str(b3)]);
   
   summe=b1+b2+b3;
   disp(['summe:' num2str(b3)]);

else i=i-1;
 
end
end


Vielen Dank!


Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 745
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 31.01.2014, 12:17     Titel:
  Antworten mit Zitat      
Die Aussage "b1>=b2>=b3" ergibt für die erzeugten Zufallszahlen immer eine 0.
Grund: b1>=b2 ergibt eine 1 (wahre Aussage).
Somit steht dann "1 >= b3" dort und das ist false (0).

Es wird von links nach recht abgearbeitet!

Lösung: setz einfach 2 Bedinungen mit && verbunden ein ((b1>=b2)&&(b2>=b3))
_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Private Nachricht senden Benutzer-Profile anzeigen
 
Nordlicht

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.01.2014, 12:43     Titel:
  Antworten mit Zitat      
ahh super, danke!! jetzt hab ichs auch gecheckt^^

jetzt noch das Problem mit dem Zähler..Angenommen die
if-Bedingung ist gleich im ersten Anlauf nicht erfüllt, dann wird
ja mein i-Zähler auf 0 gesetzt und die Schleife bricht sofort ab. Wie kann
ich das Problem umgehen?
 
Headbucket
Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 03.12.13
Wohnort: Dresden
Version: R2007B
     Beitrag Verfasst am: 31.01.2014, 13:40     Titel:
  Antworten mit Zitat      
Zunächst: http://if-schleife.de/

Zu deinem zweiten Problem:

Eine Möglichkeit wäre eine erneute If-Abfrage im else-Zweig deiner for-schleife. Hier kannst du prüfen, welchen Wert i hat und ziehst nur etwas ab, wenn i größer als 1 ist.

Eine bessere Möglichkeit wäre die Verwendung einer while-Schleife. Zum Beispiel so:
Code:
i = 0;
while i<10
   
summe=0;
b1=rand(1)*200;
b2=rand(1)*100;  
b3=rand(1)*50;
   
if ((b1>=b2)&&(b2>=b3))
   disp(['Zahl1:' num2str(b1)]);
   disp(['Zahl2:' num2str(b2)]);
   disp(['Zahl3:' num2str(b3)]);
   
   summe=b1+b2+b3;
   disp(['summe:' num2str(b3)]);
   
   i = i + 1;
 
end
end

i wird also nur erhöht, wenn die if-Abfrage erfolgreich ist.

Grüße
Headbucket
Private Nachricht senden Benutzer-Profile anzeigen
 
Nordlicht

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.01.2014, 14:17     Titel:
  Antworten mit Zitat      
Haha, ja doch! ; ) Jetzt werd ichs auf jeden fall nicht mehr vergessen!

perfekt, habe das in mein programm so eingebaut und es funktioniert wunderbar! ich danke vielmals!

Beste Grüße
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 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.