Avatar billede mads1987 Nybegynder
30. november 2004 - 22:32 Der er 10 kommentarer og
1 løsning

fakultet (n!) af flere tal

Hej eksperter, endnu engang har jeg brug for lidt ekspert hjælp. Jeg ønsker et program i jave som kan udregne faktulteten af flere tal. Det skal foregå dynamisk. Således at tallene f.eks. bliver skrevet til et array, for senere at blive hentet ud igen.

Jeg har bare brug for de linier kode hvor dette sker, jeg kan godt selv skrive ud osv.

Ved godt det ikke er god skik direkte at sprøge efter kode, uden at komme op med et forslag, men jeg står på ret bar bund.

Med venlig hilsen
Mads
Avatar billede arne_v Ekspert
30. november 2004 - 22:40 #1
Noget a la dette:

public class Fac {
    public static int fac(int n) {
        int res = 1;
        for(int i = 2; i <= n; i++) {
            res *= i;
        }
        return res;
    }
    public static void fac(int[] in, int[] out) {
        for(int i = 0; i < in.length; i++) {
            out[i] = fac(in[i]);
        }
    }
    public static void main(String[] args) {
        int[] in = { 1, 2, 3, 4, 5, 10 };
        int[] out = new int[in.length];
        fac(in, out);
        for(int i = 0; i < out.length; i++) {
            System.out.println(out[i]);
        }
    }
}

?
Avatar billede jakoba Nybegynder
30. november 2004 - 22:44 #2
kan man overloade metodenavne med forskellig return type ? (java 5?)
Avatar billede arne_v Ekspert
30. november 2004 - 22:46 #3
Det tror jeg ikke. Der skal være forskel på argumenterne. Forskel i retur typen
er ikke nok.
Avatar billede arne_v Ekspert
30. november 2004 - 22:46 #4
Hvorfor ?
Avatar billede jakoba Nybegynder
30. november 2004 - 22:49 #5
fordi din ene fac returnerer en int og den anden er void, det kan man da vist ikke.
Avatar billede arne_v Ekspert
30. november 2004 - 22:50 #6
Det kan du da sagtens hvis argumenterne er forskellige hvilket de er.
Avatar billede arne_v Ekspert
30. november 2004 - 22:52 #7
1.5, 1.4, 1.3 og formentlig også ældre versioner
Avatar billede mads1987 Nybegynder
01. december 2004 - 14:47 #8
Ja det virker jo ganske godt! Jeg har lagt nogle flere point oven i, da jeg utrolig gerne ville have, hvis du ville skrive et par kommentare i koden, er ikke helt med på hvad der foregår.
Avatar billede arne_v Ekspert
01. december 2004 - 15:00 #9
public class Fac {
    // udregn fakultet for et enkelt tal, n er tallet fakultet skal beregns for, resultet er retur værdi
    public static int fac(int n) {
        // sæt resultat til 1 og gang med 2, gang med 3, ..., gang med n
        int res = 1;
        for(int i = 2; i <= n; i++) {
            res *= i;
        }
        return res;
    }
    // udregn fakultet for alle tal i et array, første argument er de tal der skal beregens for, andet argument er resultater
    public static void fac(int[] in, int[] out) {
        for(int i = 0; i < in.length; i++) {
            out[i] = fac(in[i]);
        }
    }
    public static void main(String[] args) {
        // de tal vi vil have beregnet faklultet for
        int[] in = { 1, 2, 3, 4, 5, 10 };
        // vi allokerer plads til resultater
        int[] out = new int[in.length];
        // beregn
        fac(in, out);
        // udskriv
        for(int i = 0; i < out.length; i++) {
            System.out.println(out[i]);
        }
    }
}
Avatar billede arne_v Ekspert
01. december 2004 - 15:01 #10
og et svar
Avatar billede mads1987 Nybegynder
01. december 2004 - 17:57 #11
Mange tak :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester