Gå til innhold
Trenger du skole- eller leksehjelp? Still spørsmål her ×

Et lite matlab problem


Anbefalte innlegg

Jeg ønsker å konstruere en liten program-snutt som begynner med spørsmålet: "Ja eller nei?"

For svaret "ja" vil jeg at en ny sekvens med spørsmål starter, mens svaret "nei" skal starte en annen sekvens. For alle andre inputs vil jeg at spørsmålet skal gjentas.

 

Jeg tenker da å bruke input samt if/elseif/else. Problemet er at jeg ikke klarer finne ut hvordan jeg skal komme videre fra "Ja eller nei" til neste spørsmål uten at dette blir liggende under if og else (er dette forståelig forklart?).

 

Noen som har et forslag til hvordan dette kan gjøres?

Endret av john-m
Lenke til kommentar
Videoannonse
Annonse
  • 2 uker senere...

b= 0;
while b == 0
a = input(' Er din mor en hore? [ja/nei]: ','s');
  if strcmpi(a,'ja')
  b = 1;
  elseif strcmpi(a , 'nei')
  b = 2;
  end
end

 

Så kan du ha ei løkke som starter dersom b = 1, og en som starter dersom b = 2

 

Takk, var til stor hjelp dette. :) Vet du hvordan man får while -løkken til å fungere hvis man spør etter tall. Altså hvor alle inputs som inneholder bokstaver eller andre tegn gjør at spørsmålet gjentas.

 

Hvis for eksempel spørsmålet er: "Hvorgammel er du?", så ønsker jeg at bare 15, 16, 17 osv. skal aksepteres, mens "16a", "a" og "ingen input" repeterer spørsmålet.

Endret av john-m
Lenke til kommentar

b= 0;

while b == 0

a = input('Hvor gammel er du? ','s');

if strcmpi(a,[hvordan får jeg programmet til å skjønne at det er kun tall jeg er ute etter her])

b = 1;

end

end

 

Ser ikke helt hvor isinteger() skal inn... :(

Endret av john-m
Lenke til kommentar

Finn isinteger vil ikke fungere her, da den bare sjekker om input er en array av integers, altså av typen double. Enkle tall er ikke av typen double.

 

b= 0;
while b == 0
 c = input('Hvor gammel er du? ','s');
  if ~isempty(c) && all(ismember(c,'0123456789'))
  b = 1;
  a = str2num(c);
  Y = a(find(a,1,'first'):end)
 end
end

 

Er vel en røff løsning som burde funke. Alternativt fungerer og

 

b= 0
while b == 0
 c = input('Hvor gammel er du? ');
  if isnumeric(c)
  b = 1;
  Y = a(find(a,1,'first'):end);
  end
end
Y

 

eller kanskje til og med det er mulig å være så frekk som følger

 

string = input('Hvor gammel er du? ','s');
validateattributes(a,{'numeric'},{'positive','nonempty'})

Endret av Nebuchadnezzar
Lenke til kommentar

Gå til matlab og test isinteger(16). Rapporter tilbake hit med resultatet.

>> isinteger(16)
ans =
 0
>> isinteger(int32(16))
ans =
 1

 

Som Nebu sa, isinteger tester datatypen. Hadde du sjekka help isinteger (eller dokumentasjonen på Mathworks sine sider) hadde du fort funne ut det.

Endret av Torbjørn T.
  • Liker 2
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...