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

Wie überprüfe ich Worteingaben bei Matlab?

 

Greta

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.11.2011, 19:13     Titel: Wie überprüfe ich Worteingaben bei Matlab?
  Antworten mit Zitat      
Hallo,

hoffentlich könnt ihr mir helfen:

ich möchte meinen User mit meinem Matlab Programm auffordern, eine gewünschte Sprache einzugeben und möchte dann überprüfen, ob dieser entweder Deutsch, deutsch, german, German eingegeben hat.
Wie mache ich das?

habe es so geschrieben:

Code:
Sprache=input('Bitte geben Sie die Zielsprache ein','s')
..
if Sprache==Deutsch || deutsch

...(so funktioniert es nicht)

Lg
Greta


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 17.11.2011, 21:17     Titel: Re: Wie überprüfe ich Worteingaben bei Matlab?
  Antworten mit Zitat      
Hallo Greta,

Habe ich diese Frage heute schon in einem anderen Forum gelesen?

Strings vergleich man am besten mit STRCMP. Implizit wird das auch in ISMEMBER gemacht.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Greta

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.11.2011, 22:28     Titel: funktioniert nicht
  Antworten mit Zitat      
Vielen Dank, Jan, nun leider meckert Matlab weiter.

Habe folgendes geschrieben:
Code:

h=input('Bitte geben Sie die gewünschte Stundenzahl ein> ','s');
m=input('Bitte geben Sie die gewünschte Minutenzahl ein> ','s');
Sprache=input('Bitte geben Sie die gewünschte Sprache ein> ','s');

if strcmp(Sprache,'deutsch') || strcmp(Sprache,'Deutsch')
elseif strcmp(Sprache,'german') || strcmp(Sprache,'German')
    if h<0 || h>24 || m<0 || m>60
    fprintf('Ungültige Angabe!');
    else
        if h==24
            if m<10
            fprintf('Die Uhrzeit ist: 00 0%0.0f \n',m);
            else
            fprintf('Die Uhrzeit ist: 00 %0.0f \n',m);
            end;
        else
        if m<10 && h<10
            fprintf('Die Uhrzeit ist: 0%0.0f 0%0.0f \n',h,m);
        elseif m<10 && h>=10
            fprintf('Die Uhrzeit ist: %0.0f 0%0.0f \n',h,m);
        elseif m>=10 && h<10
            fprintf('Die Uhrzeit ist: 0%0.0f %0.0f \n',h,m);
        else
            fprintf('Die Uhrzeit ist: %0.0f %0.0f \n',h,m);
        end;
        end;
    end;
end;
 


Meine Aufgabe ist es also, die Uhrzeit so auszugeben, wenn der User Deutsch eingegeben hat. Nun will ich das Programm laufen lassen und es kommt immer:
??? Operands to the || and && operators must be convertible to logical
scalar values.

Ich weiß nicht, was ich daran noch ändern soll. Kann man bei strings das || etwa nicht verwenden?

Lg
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.11.2011, 22:57     Titel:
  Antworten mit Zitat      
Hallo,

bei Strings gibt es vor allem keine (sinnvollen) Vergleiche wie < und >.
Probiers mal so:
Code:
h=input('Bitte geben Sie die gewünschte Stundenzahl ein> ');
m=input('Bitte geben Sie die gewünschte Minutenzahl ein> ');


Und: nächstes Mal bitte angeben, wo die Fehlermeldung auftritt und wie sie lautet.

Grüße,
Harald
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: 19.11.2011, 22:04     Titel: Re: funktioniert nicht
  Antworten mit Zitat      
Hallo Greta,

Für die Kommunikation im Forum ist es wichtig, eine vollständige Kopie der Fehlermeldung zu posten. Dann ist ein Ratschlag am leichtesten.

Code:

h = input('Bitte geben Sie die gewünschte Stundenzahl ein> ');  % Als Zahl!
m = input('Bitte geben Sie die gewünschte Minutenzahl ein> ');  % Als Zahl!
Sprache = input('Bitte geben Sie die gewünschte Sprache ein> ','s');

if strcmpi(Sprache, 'deutsch')
  % ? Kommt hier etwas hin? Wenn nicht, würde ich das IF weglassen.
elseif strcmpi(Sprache, 'german')
    if h<0 || h>24 || m<0 || m>60
       fprintf('Ungültige Angabe!');
    else
        h = mod(h, 24);
        fprintf('Die Uhrzeit ist: %0.2d:%0.2d\n', h, m);
    end
end
 

Wie die Fehlermeldung schon sagt, kann man || und && nicht mit Strings (CHAR Vektoren) einsetzen, sondern nur mit skalaren LOGICALs.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Schäfchen
Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 23.01.11
Wohnort: Karlsruhe
Version: 2008 a, 2010b
     Beitrag Verfasst am: 20.11.2011, 12:31     Titel:
  Antworten mit Zitat      
um einen größer,kleiner vergleich durchführen zu können würde ich, wenn dein Input-Befehl einen string ergibt, die antwort mit str2double in eine double umwandeln. Diesen kannst du dann mit > bzw. < vergleichen.

Allerdings kannst du dir deine ganzen if- Bedingungen auch sparen, indem du das richtige format wählst:

Code:
fprintf('%02i:%02i',h,m);
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: 20.11.2011, 13:10     Titel:
  Antworten mit Zitat      
Hallo Schäfchen,

Statt INPUT einen String lesen zu lassen und ihn per STR2DOUBLE umzuwandeln, kann man INPUT auch gleich eine Zahl lesen lassen.

Einen passendes Format für FPRINTF zu wählen ist wirklich deutlich praktischer. Ich hatte es bereits erwähnt.

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 - 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.