Vide 16 prøve hjælp!

Her kan du diskutere opgaverne til C# serien og evt. dele dine egne løsningsforslag med andre.
Besvar
Vikingekongen
Begynder
Indlæg:6
Tilmeldt:6. mar 2015, 21:54
Vide 16 prøve hjælp!

Indlæg af Vikingekongen » 7. mar 2015, 17:10

Editeret af Cristian - Moderator
07-03-2015 20:58
-------------------------------------------

Kode: Vælg alt

Bog.cs

class Bog
    {
        public void PrintInfo() {                                                   // Dette er en metode.
            Console.WriteLine("Jeg er en bog");
           
        }
        public void harRåd(int bogensPris, int pengePung, bool nokPenge) {
            Console.Write("Bogen koster " + bogensPris + " kr, jeg har " + pengePung + " kr, jeg har penge nok! ");

            if (nokPenge)
                Console.WriteLine("Jaa! jeg har råd");
            else
                Console.WriteLine("Øvv! jeg har ikke råd");

            

        }

Program.cs

class Program
    {
        static void Main(string[] args) {
            //instantiate an object
            Bog SherlockHolmes = new Bog();                               //bog object "reference-variablen/Sherlock Holmes"
            SherlockHolmes.harRåd(150, 300, true);                              // her overfører jeg 2 værdier til min metode.
            SherlockHolmes.PrintInfo();                                   // kalder metoden "PrintInfo" på mit object "SherlockHolmes"
        }

Er det virkelig rigtigt? her har jeg kaldt bogenspris 150kr og pengepung for 300kr...

Hvorfor kan jeg ikke lave

Kode: Vælg alt

public void harRåd(int bogensPris, int pengePung, bool nokPenge)
om til

Kode: Vælg alt

public void harRåd(int bogensPris, int pengePung, bool bogensPris <= pengePung)
Mit problem er at den ikke selv regner ud om jeg har råd til bogen, jeg skal selv ændre den fra true eller false i program.cs

Vikingekongen
Begynder
Indlæg:6
Tilmeldt:6. mar 2015, 21:54

Re: Vide 16 prøve hjælp!

Indlæg af Vikingekongen » 7. mar 2015, 17:15

Jeg ændede if til

Kode: Vælg alt

 if (bogensPris <= pengePung)
                Console.WriteLine("Jaa! jeg har råd");
            else
                Console.WriteLine("Øvv! jeg har ikke råd");
og nu virker det... jeg så først fejlen efter jeg spurgte om hjælp..

cristian
Moderator
Moderator
Indlæg:882
Tilmeldt:26. sep 2011, 21:31
Kontakt:

Re: Vide 16 prøve hjælp!

Indlæg af cristian » 7. mar 2015, 21:05

Vikingekongen skrev:Jeg ændede if til

Kode: Vælg alt

 if (bogensPris <= pengePung)
                Console.WriteLine("Jaa! jeg har råd");
            else
                Console.WriteLine("Øvv! jeg har ikke råd");
og nu virker det... jeg så først fejlen efter jeg spurgte om hjælp..
Det helt i orden, super du fik det til at virke.

Nico86dk
Begynder
Indlæg:6
Tilmeldt:28. jul 2016, 15:20

Re: Vide 16 prøve hjælp!

Indlæg af Nico86dk » 28. jul 2016, 15:26

Skal man pr default sætte bool værdien til true i metodehovedet? For ændre jeg den til false og og der er penge nok returnerer den false.
Har fundet inspiration til koden ved det Vikingekongen postede bare med andre variabelnavne og retur tekst.

jepperask
Geni
Geni
Indlæg:378
Tilmeldt:4. nov 2012, 17:57

Re: Vide 16 prøve hjælp!

Indlæg af jepperask » 28. jul 2016, 23:07

Først og fremmest, så er Vikingekongens oprindelige spørgsmål, hvorvidt der kan laves en evaluering i metode-signaturen, hvilket ikke er muligt. Signaturen er blot en opskrift, som dikterer hvilke informationer metoden kræver, og hvad de lokalt skal kaldes.

Vikingekongens brug af true/false-konstanten nokPenge er også elimineret, idét udtrykket "if (bogensPris <= pengePung)" udregner netop dette. Så i stedet for altid at være én ting, så er det nu afhængigt af de 2 andre værdier, hhv. bogensPris og pengePung. Så metodens signatur burde nu se således ud:

Kode: Vælg alt

public void harRåd(int bogensPris, int pengePung) { ... }
.. og kan kaldes således:

Kode: Vælg alt

SherlockHolmes.harRåd(150, 300);

Besvar