testuser Skrevet 5. desember 2012 Del Skrevet 5. desember 2012 (endret) 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 5. desember 2012 av john-m Lenke til kommentar
Dipol Skrevet 5. desember 2012 Del Skrevet 5. desember 2012 Lag en funksjon for hver sekvens som du kan hoppe til ifrå if/else løkken. Lenke til kommentar
testuser Skrevet 5. desember 2012 Forfatter Del Skrevet 5. desember 2012 Det er dette jeg sliter litt med. Hvordan hopper jeg ut fra if/elseif? Og hvordan burde jeg merke hver sekvens? Lenke til kommentar
Nebuchadnezzar Skrevet 5. desember 2012 Del Skrevet 5. desember 2012 (endret) 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 Endret 5. desember 2012 av Nebuchadnezzar 3 Lenke til kommentar
testuser Skrevet 14. desember 2012 Forfatter Del Skrevet 14. desember 2012 (endret) 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 14. desember 2012 av john-m Lenke til kommentar
testuser Skrevet 14. desember 2012 Forfatter Del Skrevet 14. desember 2012 Takk, men hvordan brukes den? Lenke til kommentar
Flin Skrevet 14. desember 2012 Del Skrevet 14. desember 2012 http://bit.ly/WchWnY Lenke til kommentar
testuser Skrevet 14. desember 2012 Forfatter Del Skrevet 14. desember 2012 (endret) 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 14. desember 2012 av john-m Lenke til kommentar
Flin Skrevet 15. desember 2012 Del Skrevet 15. desember 2012 Leste du dokumentasjonen du finner når du googler? Hva har alle aldre til felles? Jo de er heltall eller integers, så hvis du har en funksjon som sjekker om en variabel er integer og returnere true eller false har du vel alt du trenger. Lenke til kommentar
Nebuchadnezzar Skrevet 15. desember 2012 Del Skrevet 15. desember 2012 (endret) 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 15. desember 2012 av Nebuchadnezzar Lenke til kommentar
Flin Skrevet 15. desember 2012 Del Skrevet 15. desember 2012 Gå til matlab og test isinteger(16). Rapporter tilbake hit med resultatet. Lenke til kommentar
Torbjørn T. Skrevet 15. desember 2012 Del Skrevet 15. desember 2012 (endret) 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 15. desember 2012 av Torbjørn T. 2 Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå