2010-11-24, 22:09
  #1
Medlem
Hallå, har en uppgift i MATLAB som jag försöker lösa.

Det går ut på att jag ska skriva ett program som slumpar en pumpas vikt som ligger mellan 1 och 100, och man ska skriva in ett tal, varpå datorn svarar om det är för lågt eller för högt, ända tills man hittar rätt.

Så här kan den se ut:


Vad heter du? Tomten
Hej Tomten, hur mycket tror du min pumpa väger? 50
Det var för lågt, gissa igen: 70
Det var för högt, gissa igen : 69
Rätt gissat!


Relativt enkelt kan man tycka, men jag har stött på problem. Så här ser min kod ut :

-------------------------------------------
namn = input('Vad heter du?','s');
gissning = input(['Hej ' num2str(namn) ', hur mycket tror du min pumpa väger? '];
vikt=floor(100*rand(1));

while gissning~=vikt
if gissning>vikt
input('Det var för mycket. Gissa igen ');
elseif gissning<vikt
input('Det var för litet. Gissa igen ');
elseif gissning==vikt
disp('Rätt gissat. Nästa år ska jag odla en större pumpa.')
end
end

--------------------------------------------

Namnet funkar bra, men när man ska börja gissa går det fel. Om vikten från början är 50, och jag gissar 40, så säger den att det är för lågt. Om jag sen gissar 60, så säger den fortfarande att det är för lågt, och även om jag skriver in rätt svar så är det för lågt.

Vad kan det bero på?

Uppskattar all hjälp
Citera
2010-11-24, 22:13
  #2
Medlem
Du uppdaterar inte variabeln 'gissning' efter varje gissning, utan variabeln innehåller bara värdet från den första gissningen. Ändra raderna

input('Det var för mycket. Gissa igen ');

och

input('Det var för litet. Gissa igen ');

till

gissning = input('Det var för mycket. Gissa igen ');

resp.

gissning = input('Det var för litet. Gissa igen ');
Citera
2010-11-24, 22:14
  #3
Medlem
servuss avatar
inputet ligger ju utanför while-satsen.
Citera
2010-11-24, 22:16
  #4
Medlem
Citat:
Ursprungligen postat av dbshw
Du uppdaterar inte variabeln 'gissning' efter varje gissning, utan variabeln innehåller bara värdet från den första gissningen. Ändra raderna

input('Det var för mycket. Gissa igen ');

och

input('Det var för litet. Gissa igen ');

till

gissning = input('Det var för mycket. Gissa igen ');

resp.

gissning = input('Det var för litet. Gissa igen ');


Tack, det löste nästan allting, när jag nu kommer fram till rätt svar så skriver den ingenting
Är det någe fel på min sista disp-funktion?

Edit: glöm det där, jag la dispen utanför while-satsen, då funkade det. tack ska ni ha
__________________
Senast redigerad av Mattef 2010-11-24 kl. 22:21.
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in