Vinnaren i pepparkakshustävlingen!
2010-11-12, 19:53
  #1
Medlem
Hej jag sitter och försöker programmera mitt första program i matlab men får det inte att fungera.

det jag ska göra är att jag ska få datorn att slumpa en vikt på mellan 1-100 kg och sen ska jag gissa vad vikten blir. men detta vill sig inte oxh jag är lite förvirrad över om jag ska använda if while eller switch.

jag har kommit en bit dock där jag får rätt svar tillbaks efter att jag har gissat bara att det kommer flera gånger i all oändlighet.

det här är det jag har kodat hittills.

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

x=round(rand*100)

Namn=input('Tjena! vad heter du?' ,'s' );
Vikt=input(['Tjenare ', num2str(Namn),', gissa vad min pumpa väger:']);


while(Vikt~=x)
if x>Vikt
disp('för lågt')
elseif x<Vikt
disp('för högt')
else x==Vikt
disp('bra')

end
end


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

Gissar jag fel här så får jag svaret för lågt eller för högt spammat till mig och gissar jag rätt får jag inget svar alls.
Citera
2010-11-12, 19:59
  #2
Medlem
lägg in frågan i while-loopen
Citera
2010-11-12, 20:11
  #3
Medlem
Citat:
Ursprungligen postat av kinyo
lägg in frågan i while-loopen


alltså jag vill ju att programmet ska upprepa t.ex. "för lågt, gissa igen" tills jag gissar rätt.

jag så dock att jag inte have skrivit in ",gissa igen" i de som jag postade innan.

men om jag lägger in frågan i while loopen så får jag att vikt är en odefinierad variabel.

det jag har skrivit nu ser ut så här:


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


Namn=input('Tjena! vad heter du?' ,'s' );
Vikt=input(['Tjenare ', num2str(Namn),', gissa vad min pumpa väger:']);

while(Vikt~=x)


if x>Vikt
disp('för lågt, gissa igen')
elseif x<Vikt
disp('för högt, gissa igen')
else x==Vikt
disp('bra jobbat!')

end
end


-----------------------------------------
Citera
2010-11-12, 20:24
  #4
Medlem


du ska lägga in frågan i loopen också

tänk vad som händer när loopen kör ett varv, först kontrollerar du och jämför med vad du gissat och skriver ut olika saker beroende på hur du gissat, sen måste du gissa igen, om du lägger in en fråga i slutet av loopen också så borde det funka
Citera
2010-11-12, 20:35
  #5
Medlem
Kod:
x=round(rand*100)

Namn=input('Tjena! vad heter du?' ,'s' );
Vikt=input(['Tjenare ', num2str(Namn),', gissa vad min pumpa väger:']);


while(Vikt~=x)
if x>Vikt
Vikt=input('För lågt, gissa igen:')
elseif x<Vikt
Vikt=input('För högt, gissa igen:')
else x==Vikt
disp('bra')
end
end

Nu vet jag inte om det där blev exakt rätt då jag inte kan matlab, men principiellt rätt är det.

Edit: Du kan naturligtvis skriva samma sak på flera olika sätt, det viktiga är att du ger användaren en chans att ändra på variabeln vikt i while-loopen, annars tar den ju aldrig slut. Sätter du in frågan i while loopen så kommer den att ställas likadant varje gång, vilket jag skulle säga blir litet fult. Om du vill sätta in den i while-loopen ändå så måste du definiera variabeln Vikt först, typ till Vikt = x+1 eller något annat skiljt från x.
__________________
Senast redigerad av Obeskrivlig 2010-11-12 kl. 20:41.
Citera
2010-11-12, 20:45
  #6
Medlem
Citat:
Ursprungligen postat av Obeskrivlig
Kod:
x=round(rand*100)

Namn=input('Tjena! vad heter du?' ,'s' );
Vikt=input(['Tjenare ', num2str(Namn),', gissa vad min pumpa väger:']);


while(Vikt~=x)
if x>Vikt
Vikt=input('För lågt, gissa igen:')
elseif x<Vikt
Vikt=input('För högt, gissa igen:')
else x==Vikt
disp('bra')
end
end

Nu vet jag inte om det där blev exakt rätt då jag inte kan matlab, men principiellt rätt är det.

Edit: Du kan naturligtvis skriva samma sak på flera olika sätt, det viktiga är att du ger användaren en chans att ändra på variabeln vikt i while-loopen, annars tar den ju aldrig slut. Sätter du in frågan i while loopen så kommer den att ställas likadant varje gång, vilket jag skulle säga blir litet fult. Om du vill sätta in den i while-loopen ändå så måste du definiera variabeln Vikt först, typ till Vikt = x+1 eller något annat skiljt från x.

det funkade pria förutom att nr jag gissar rätt så får jag bara tillbaks

Vikt =

25

och inte Bra jobbat!


men det tror jag nog att jag kan komma på själv. men tack för hjälpen!
Citera
2010-11-13, 01:09
  #7
Medlem
matteyass avatar
Kod:
x=floor(rand*100)+1;

Namn=input('Tjena! vad heter du? ' ,'s' );
Vikt=input(['Tjenare ', num2str(Namn),', gissa vad min pumpa väger:']);

while(1)
    if x>Vikt
        Vikt=input('För lågt, gissa igen:');
    elseif x<Vikt
        Vikt=input('För högt, gissa igen:');
    else
        disp('Rätt svar')
        break
    end
end
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback