Opdracht met Faculteit

Status
Niet open voor verdere reacties.

Jorre89

Gebruiker
Lid geworden
24 okt 2010
Berichten
6
We moeten een programma dat de faculteit van een ingevoerd, geheel, getal toont maken. De faculteit van een geheel getal is gedefinieerd als volgt:n! = 1*2*3*4*....

bv. 5! = 1*2*3*4*5

Faculteit van 5 = 120

Dit is de code die ik al heb, de negatieve invoer wordt tegengehouden, en de loop wordt gemaakt, enkel de 'formule' om de faculteit te berekenen wil maar niet lukken.

Code:
 {
            int faculteit, n;
            int i = 1;

            do
            {
                System.Console.WriteLine("Voer geheel getal in:");
                n = int.Parse(Console.ReadLine());

                if ((n < 0) || (n == 0))
                {
                    Console.WriteLine("U voerde een negatief of foutief getal in!");
                }

                else if (n >= 0)
                {
                    [B]i = i * 2;
                    faculteit = i++ * n++;[/B]
                    
                    Console.WriteLine("Faculteit van " + n + " is " + faculteit);
                }
            }
            while (n != 0);

De code in het vet zou moeten aangepast worden, maar ik kan maar niet vinden hoe ik dit juist moet oplossen.
 
Laatst bewerkt door een moderator:
Wat ik geleerd heb is dat 5 faculteit = 5*4*3*2*1 (en niet andersom). Voor het antwoord maakt het niet uit, maar voor het programmeren wel (je begint gewoon bij de invoer (5 in dit geval) en gaat door tot 1).

Zoiets als dit (niet getest):
int invoer = 5;
int resultaat = 1;

zolang invoer > 1
resultaat *= invoer;
invoer--

Tip: de laatste 'slag' (* 1) is m.i. overbodig en scheelt weer rekenwerk, daarom de "zolang invoer > 1". Als je hier > 0 van maakt wordt het getal alsnog *1 gedaan (maar dat is dus eigenlijk onzinnig).
 
Laatst bewerkt:
Nee zo wil het niet werken en gebeurd er ook niets.

Ik ben nog volop aan het zoeken en proberen, en ik zal er wel uitkomen.

toch bedankt.
 
Dat zal dan denk ik toch wel aan jou liggen hoor :p

[cpp]
public static int fac(int invoer)
{
int res = 1;
while (invoer > 1)
{
res *= invoer;
invoer--;
}
return res;
}

// console.writeline(fac(5).ToString());
[/cpp]

Precies zoals aaajeetee al aangaf ;)
 
Jij hebt deze code in C++ staan, bij mij staat ze in C# :confused:
Is er dan geen verschil tussen de invoer?

greetings
 
Laatst bewerkt:
Jij hebt deze code in C++ staan, bij mij staat ze in C# :confused:
Is er dan geen verschil tussen de invoer?

Ik gebruik altijd de cpp-tag wanneer ik code post :p

(in C++ schrijf je gewoon: static int fac(int n); de rest is hetzelfde)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan