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

Eingabe auf Zahl prüfen

 

phlpp.hrtmnn
Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 29.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.04.2013, 11:05     Titel: Eingabe auf Zahl prüfen
  Antworten mit Zitat      
Hallo Leute,

ich bin Matlab-Neuling und habe mal ne Frage zum Einlesen einer Zahl.
Ich möchte mit der Input-Funtion eine positive Zahl, größer 1 einlesen.
Wenn die Eingabe kleiner 1 oder ein oder mehrere Buchstaben ist, soll das Programm ein Feler ausgeben und erneut nach der Eingabe Fragen.
Das ist bis jetzt mein Programm:


Code:
% Das ist mein Programm
wert1 = input( 'Bitte geben Sie einen Wert für "Wert1" ein');

if (wert1 >= 1)
else

if (wert1 <1)
fprintf( 'Die Eingabe ist ungültig. Bitte versuchen Sie es erneut \n');
else

if ( ischar(wert1) )
fprintf( 'Die Eingabe ist ungültig. Bitte versuchen Sie es erneut \n');
else

end



Wie kann ich aber sagen, dass wenn die Eingabe kleiner als "1" ist, er zurück zu dem input-Befehl springen soll?

Danke für die Hilfe!!
lg Philipp
Private Nachricht senden Benutzer-Profile anzeigen


Matmarv
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 54
Anmeldedatum: 12.03.13
Wohnort: ---
Version: Matlab R2013a
     Beitrag Verfasst am: 29.04.2013, 11:21     Titel:
  Antworten mit Zitat      
Hallo,

ich würde eine while schleife benutzen.
Wenn die Zahll größer 1 ist kannst du eine varibale z.B. auf 1 setzen und somit die Schleife beenden.

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
phlpp.hrtmnn
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 29.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.04.2013, 11:26     Titel:
  Antworten mit Zitat      
Das verstehe ich nicht so ganz. Kannst du vllt ein simples Beispiel geben? Danke

Außerdem interessiert mich noch, wie ich in der Schleife sage, dass fals jemand bei der Eingabe ein Text eingegeben hat, er die Eingabeaudforderung noch einmal gibt. Im Moment gibt er ja nur die Fehlermeldung aus und geht dann weiter im Programm.
Private Nachricht senden Benutzer-Profile anzeigen
 
Matmarv
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 54
Anmeldedatum: 12.03.13
Wohnort: ---
Version: Matlab R2013a
     Beitrag Verfasst am: 29.04.2013, 11:33     Titel:
  Antworten mit Zitat      
Hallo,

Code:

a=0;
while (a~=1)

% Das ist mein Programm
wert1 = input( 'Bitte geben Sie einen Wert für "Wert1" ein');

if (wert1 >= 1)
a=1;
else

if (wert1 <1)
fprintf( 'Die Eingabe ist ungültig. Bitte versuchen Sie es erneut \n');
else

if ( ischar(wert1) )
fprintf( 'Die Eingabe ist ungültig. Bitte versuchen Sie es erneut \n');
else

end
end
 


Wie man die Eingabe von Buchstaben abfragt, weiß ich nicht so genau.
Vllt kann man abfragen ob ein char eingegeben wurde.

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 29.04.2013, 11:38     Titel:
  Antworten mit Zitat      
Code:
wert1=0;
while wert1<=1
    wert1 = input( 'Bitte geben Sie einen Wert für "Wert1" ein: ');
    if wert1>1
        break
    end
  fprintf( 'Die Eingabe ist ungültig. Bitte versuchen Sie es erneut \n');  
end

so in der art
ah da war jemand schneller. buchstaben führen bei input eh zu einem fehler wenn du nicht noch 's' anhängst. guck dazu mal in der doc
Private Nachricht senden Benutzer-Profile anzeigen
 
phlpp.hrtmnn
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 29.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.04.2013, 11:46     Titel:
  Antworten mit Zitat      
Mit der while-Schleife fragt er mich immer wieder das gleiche (wie erwartet^^). Mir fehlt eine Idee für eine sinnvolle Abruchbedingung.
Naja ich such mal weiter.
Auf jeden Fall Danke für die Hilfe
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 29.04.2013, 12:02     Titel:
  Antworten mit Zitat      
er fragt dich aber nur so lange bis du einen wert größer 1 eingiebst
Private Nachricht senden Benutzer-Profile anzeigen
 
phlpp.hrtmnn
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 29.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.04.2013, 12:21     Titel:
  Antworten mit Zitat      
Ah stimmt. Stand da grad irgendwie auf dem Schlauch! Läuft Super Very Happy Danke nochmal

nur die Fehlermeldung bei der Eingabe von Buchstaben und die erneute Eingabe dann ist tricky
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 29.04.2013, 12:24     Titel:
  Antworten mit Zitat      
ließ mal die doc. wenn du noch buchstaben willst must du mit 's' ergänzen im input befehl. dann must du aber den string noch untersuchen. bzw umwandeln
Private Nachricht senden Benutzer-Profile anzeigen
 
phlpp.hrtmnn
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 29.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.04.2013, 12:43     Titel:
  Antworten mit Zitat      
ich hab schon versucht bei dem Input-Befehl das "'s'" dranzuhängen und danach mit "str2num" die eingabe wieder in eine Zahl umzuändern.

Das hat auch funktioniert und hat den Programmabsturz bei der Eingabe eines Buchstabens anstatt einer Zahl verhindert.
Allerdings hat das Programm dann den Buchstaben als Zahl akzeptiert und mit dem Buchstaben gerechnet. So hat sich nur das Ergebniss zerschossen.

Ich hatte da etwa das stehen:

Code:
% Das ist das Programm

wert1_eingabestring = input( 'Gebe einen Wert an', 's');

wert1 = str2num(wert1_eingabestring);

if( wert1 >=2)
else

if( wert1 <2)
fprintf('Ungültige Eingabe');
else

if( ischar(wert1))
fprintf('Ungültige Eingabe');
else

end
end
end
Private Nachricht senden Benutzer-Profile anzeigen
 
phlpp.hrtmnn
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 29.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.04.2013, 12:43     Titel:
  Antworten mit Zitat      
Das "ischar" funktioniert nicht so wie ich mir das denke Very Happy
Private Nachricht senden Benutzer-Profile anzeigen
 
phlpp.hrtmnn
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 29.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.04.2013, 12:48     Titel:
  Antworten mit Zitat      
Mein jetziger Code. Nur die ischar-Bedingung funktioniert nicht

Code:
% Das ist mein Programm
wert1=0;
while( wert1 <2 || ischar(wert1) )
  wert1 = input( 'Bitte gib Wert für Wert1 ein: ');
     
    if( wert1 >= 2 )
        break;
    end
    fprintf( 'Die Eingabe ist ungültig. Bitte versuchen Sie es erneut \n');
end
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 29.04.2013, 12:58     Titel:
  Antworten mit Zitat      
naja da fehlt das 's' also ist die ischar bedingung nie erfüllt
meine lösung ist
Code:
wert1=0;
while wert1<1
    wert1 = input( 'Bitte geben Sie einen Wert für "Wert1" ein: ','s');
    if any(wert1-'0'>9)
         wert1=0;
         fprintf( 'Die Eingabe ist ungültig. Bitte versuchen Sie es erneut \n');
       
    else
        wert1=str2double(wert1);
        if wert1>1
            break
        end
    end
end

falls du allerdings auch zahlen wie 1,2 benutzen willst und nicht nur ganze positive zahlen musst du die bedingung bei any noch anpassen.
Private Nachricht senden Benutzer-Profile anzeigen
 
phlpp.hrtmnn
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 29.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.04.2013, 13:20     Titel:
  Antworten mit Zitat      
das löst aber bei mir nicht das Problem mit der Fehlermeldung bei der Eingabe eines Buchstabens anstatt einer Zahl.

Es kommt im Comand Window ein Fehler, und er bietet mir nicht eine erneute Eingabe an
Private Nachricht senden Benutzer-Profile anzeigen
 
jurtsche
Forum-Century

Forum-Century


Beiträge: 123
Anmeldedatum: 26.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.04.2013, 14:45     Titel:
  Antworten mit Zitat      
Hast du schon versucht es in umgekehrter Reihenfolge zu schreiben?

also statt
Code:
while( wert1 <2 || ischar(wert1) )

das
Code:
while( ischar(wert1) || wert1 <2 )
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.