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

Berechnung Fakultät mit Abfrage - While- und For-Schleife

 

Herby26

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.07.2013, 21:39     Titel: Berechnung Fakultät mit Abfrage - While- und For-Schleife
  Antworten mit Zitat      
Hallo,

seit gestern arbeite ich mich durch ein Matlab Buch und habe mir heute eine Frage gestellt, die ich irgendwie in der Form nicht finden und mit meinem aktuellen Wissensstand umsetzen kann:

Aufgabe (wie sie im Buch steht): Fakultät ausgeben von eingegebener Zahl n bis 1.

Lösung Funktion mit For-Schleife, zählen von n bis eins, Eingabe als Input.

Problem (mit eigener Idee): Soll nun eine While-Schleife hinzukommen, mit welcher der Benutzer solange nach einer Zahl zwischen 1 und n gefragt wird bis er auch eine solche Zahl >=1 eingibt bekomme ich Probleme.

- Entweder die Abfrage geschieht so lange bis die Zahl eingegeben wird, dabei ignoriert das Programm jedoch die for Schleife
- oder ich müsste die for-schleife irgendwie in die while-schleife packen, was aber nicht gehen dürfte?

Könnte ihr mir weiterhelfen?

Code:
% Hier noch der Code

function [] = fakultat()

 while(1)
    n=input('zahl zwischen 1 und n eingeben \n');
    if (n>=1)
        fprintf('gut')
        break;
    else
        fprintf('nicht gut \n');
    end
  for zahl = 1:n
    fakultat=n*zahl;
    fprintf('%g. fakultaet: %g \n', [n,fakultat]);      
  end
 end
end
 


Es könnte sein, dass noch ein Flüchtigkeitsfehler drin ist aber es geht mir speziell darum, dass die Abfrage solange läuft bis eine Zahl > 1 eingegeben wird und dann zur For-Schleife übergegangen wird.

Vielen Dank schon mal.

Liebe Grüße


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 02.07.2013, 22:47     Titel:
  Antworten mit Zitat      
hallo herby26
willkommen bei gomatlab
schön das du gleich die codeumgebung gefunden hast und dir auch mehr als 2 sätze überlegt hast Smile
ich würde es so versuchen. while(1) ist nicht so das wahre Smile und ich glaube du hattest einen fehler in der fakultät.


Code:

n=0;
while(n<1)
    n=input('zahl zwischen 1 und n eingeben \n');
    if n<1
     fprintf('nicht gut \n');
    end
end
    fprintf('gut\n')  
    fakultat=1;
  for zahl = 1:n
    fakultat=fakultat*zahl;
    fprintf('%g. fakultaet: %g \n', [zahl,fakultat]);      
  end  

alternativ kannst du dir auch mal
Code:
oder
Code:
angucken hat ales vor und nachteile in speicher bedarf und geschwindigkeit.
grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Herby26

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.07.2013, 22:58     Titel:
  Antworten mit Zitat      
Vielen Dank schon mal.

So funktioniert es (, gebe ich in der Ausgabe statt "n", "Zahl" ein.)

Das einzige Problem was ich noch habe, gibt es eine Möglichkeit die vorherige negative Ausgabe der While-Schleife soald eine Zahl >1 eingegben wurde nicht zu übernehmen?

Zitat:
zahl zwischen 1 und n eingeben
-5
nicht gut
zahl zwischen 1 und n eingeben
5
nicht gut
gut

1. fakultaet: 1
2. fakultaet: 2
3. fakultaet: 6
4. fakultaet: 24
5. fakultaet: 120
 
Herby26

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.07.2013, 23:03     Titel:
  Antworten mit Zitat      
Vielen lieben Dank.

Ich glaube du hattest deinen Beitrag in dem Moment editiert als ich geantwortet habe. So ist es verständlich und werde mir die weiteren Befehle auf jeden Fall mal zu Gemüte führen.

Leider kann ich meinen Beitrag (noch) nicht ändern, da ich mich im Forum noch nicht registriert habe.

Liebe Grüße
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 02.07.2013, 23:07     Titel:
  Antworten mit Zitat      
ja in der tat da hatte ich was beim editieren vergessen.
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 - 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.