WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   Fakuturelle Funktion? - Hilfe (http://www.wcm.at/forum/showthread.php?t=81448)

coolbininet 22.12.2002 16:42

Fakuturelle Funktion? - Hilfe
 
Hi ein Anfänger fragt:

Ich brauche eine Funktion (am besten das Struktogramm) die mit einem Anfangswert beginnt zB 4 dann muss mit einer Schleife die 4 um eins vermindert werden bis der Wert 1 erreicht und dann muss ich die Ergebnisse also 4, 3, 2, 1, die aus der Inkremation entstehen mit dem Anfangswert 4 multiplizieren Beipsiel: 4*3*2*1

Wie mache ich das mit einem Struktogramm, Programm?

mikeb 22.12.2002 17:56

in welcher programmiersprache willst dus denn schreiben oder haben?

coolbininet 22.12.2002 18:00

Antwort
 
Hi, danke dass du mich darauf hinweißt. :o

Wollte es in C/C++ haben, das Programm oder das Struktogramm.

mfg

käptn 22.12.2002 19:47

Ich kann dir zawr nicht mit C aushelfen, aber vielleicht hilft's doch:

PHP-Code:

function facture($num 0) {
  if (
is_int($num)) {
    if (
$num 0) {
      
$buffer $num;
      
$result $num;
      while(
$buffer 1){
        
$result *= --$buffer;
      }
      return 
$result;
    }
  }
  return 
FALSE;


~

willi47 22.12.2002 20:27

Hi!

Wow, mein erster Beitrag im WCM-Forum.

Jetzt zu deiner Frage.
Du kannst auf www.visualbasic.at deine Frage ins Forum stellen.
Die Beantworten nicht nur Visual Basic Fragen, sondern auch C-Fragen.

mfg

Willi47

Tarjan 22.12.2002 22:50

Ist zwar Java, das ist aber C nicht so unähnlich:

zuerst Klassisch:


Code:

        public static void main (String arguments[])
        {
                int n = 1;          // Ergebnis
                int z = -4;                        // Zähler: hier beginnt die Fakultät
       
                while (z>0)
                {       
                        n*=z;                        // Fakulät berechnen
                        z--;                        // Zähler erniedrigen
                //        System.out.println(z + " " +n);
                }       
                if (z<0) System.out.println("Keine negativen Zahlen bei der Fakultät!!!");
                else
                {
                        if (z==0) n=1;
                        System.out.println(n);
                }
        }

und dann noch als Rekursion:

Code:

        static int Faktu (int n)        // Faktu ist eine Klassenmethode -> keine Instanz nötig
        {
                if (n<0) return -1;                // negative Zahlen haben keine Fakultät -> Code -1 zurückgeben
                if (n==0)                                // Fakultät von 0 ist 1
                {
                        n=1;
                        return n;
                }
                else                                       
                {
                        n *= Faktu(n-1);        // Fakultät n! ist n*(n-1)!
                        System.out.print(n + " ");       
                        return n;
                }
        }
       
        public static void main (String arguments[])
        {
                int n=7;
                n = Faktu(n);
                if (n == -1) System.out.println("Keine negativen Zahlen für Fakultät verwenden!");
                else System.out.println(n);
        }


erdling 02.01.2003 02:00

in der kürze liegt die würze
 
## ----------- python --------------
def fac(wert):
&nbsp&nbsp&nbsp&nbsp if wert == 1: return 1
&nbsp&nbsp&nbsp&nbsp else: return wert * fac(wert-1)


## ----------- aufruf --------------
print fac(6)

fritz
(-:fs)

porli 03.01.2003 00:20

so schaut das ganze halt in pascal aus! dürfat in c so ähnlich sein!

Code:

program faktorielleberrechnen;
uses wincrt;
function faktorielle (zahl:integer):integer;
var i:integer;
begin
    zahl:=1;
    for i:=4 downto 1 do
      begin
        zahl:=zahl*i;
      end;
    faktorielle:=zahl;
end;
var
  zahl:integer;

begin
    writeln('Ergebnis: ',faktorielle(zahl));
end.

is es hp mit kopf alles drum und dran! ohne fehlerüberprüfungen und so zeugs!


Alle Zeitangaben in WEZ +2. Es ist jetzt 02:59 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag