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

Frage zu einer while-Schleife

 

Ritschii
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 19.04.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.04.2021, 11:10     Titel: Frage zu einer while-Schleife
  Antworten mit Zitat      
Moin,

ich hätte bezüglich einer Aufgabe eine Frage.
und zwar gilt es bei den Zahlenwerten D die geraden und ungraden Zahlen herauszufiltern und diese Anzahl dann mittels gerade und ungrade auszugeben. Zudem soll eine while - Schleife gebildet werden.
Ich weiß aber nicht was ich als Bedingung der while - Schleife eingeben soll.

Danke im voraus für eure Hilfe
LG

Code:

D = [1, 2, 3, 2, 2, 2, -1, 2, 3, 4, 5, 4, 3, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 7, 6, -2];
i=D;
gerade = 0;
ungrade = 0;

while
   
   if mod (i,2) == 0
       gerade=gerade+1
   end
   
   if mod (i,2) ~= 0
       ungerade=ungerade+1
   end
   
end
 
Private Nachricht senden Benutzer-Profile anzeigen


Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 745
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 19.04.2021, 12:21     Titel:
  Antworten mit Zitat      
Das, was du derzeit machst, ist über den gesamten Vektor EINE Abfrage laufen zu lassen.
Code:
mod (i,2)  % Ergebnis = [0 1 0 1 .... ]  

Ergibt nämlich einen Ergebnisvektor, der wahr (1) oder falsch (0) für jedes Element anzeigt.

Hier könntest du einfach den Ergebnisvektor summieren und wüsstest somit, wie viele Zahlen gerade sind.

Code:
gerade = sum(mod(D,2)==0)


Wenn du mit if-Abfragen arbeiten willst, so musst du JEDES einzelne Element von D ansprechen und dieses einzeln auf un/gerade befragen.
Also
Code:
if mod(D(1,i_y) ,2) == 0
% gerade
else if
% ungerade
end


Wenn dann unbedingt noch eine while Schleif hin muss, dann lass halt den Wert i_y in jeder Runde um eins erhöhen und prüfe im while, ob das Ende von D erreicht wurde.
_________________

LG
Martina

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

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 26.04.2021, 11:49     Titel: Re: Frage zu einer while-Schleife
  Antworten mit Zitat      
Hallo Ritschii,

Ich rate mal:
Code:
D = [1, 2, 3, 2, 2, 2, -1, 2, 3, 4, 5, 4, 3, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 7, 6, -2];
i = 1;
gerade = 0;
ungrade = 0;
while i <= numel(D)
   if mod(D(i), 2)) == 0
       gerade = gerade + 1;
   else
       ungerade = ungerade + 1;
   end
   i = i + 1;
end

Eine effiziente Alternative ist:
Code:
D = [1, 2, 3, 2, 2, 2, -1, 2, 3, 4, 5, 4, 3, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 7, 6, -2];
gerade = sum(mod(D, 2) == 0);
ungerade = numel(D) - gerade;

Gruß Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
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.