Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Die Aufgabe :

Schreiben Sie ein Programm mit zwei Funktionen zur Berechnung der Fakultät einer na- türlichen Zahl, die von der Eingabe gelesen wird. Die eine Funktion soll die Fakultät mit einem iterativen Algorithmus berechnen, die andere Funktion soll dies rekursiv ausfüh- ren.

               n                     n1
n! = i = ni = 1234⋅...⋅n und 0! = 1

              i=1                   i=1

 

 

ich weiss ungefähr das ich zwei schleifen brauche 

int zahlen ..

printf ....
scanf ... 

doch wie strukturiere ich es ? 

 

Wieso zwei Schleifen?

Überlege dir, wie du die Fakultät überhaupt berechnen kannst.

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

oder

5! = 5 * 4!

 

Kennst du eine Schleifenform, die vielleicht so etwas wie eine Laufvariable hat?

Versuche dein großes Problem (z.B. 5!) in kleinere Probleme zu zerlegen, bis es trivial wird.

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//iterativ
void iterativ (){;
    int fakultaet(int n);
    int summe = 1;
        for(int i = 2;i<=n;i++)
            summe *= i;
        return summe;
    }
//rekursiv
        int fakultaaet( int n)
        {
            if( n == 1)
                return 1;
            return n * fakultaet(n-1);
        }

 

Ich habe etwa so irgendwie was versucht aber scheint nicht zu funktionieren :/

Es funktioniert einfach nicht ^^

Hi,
mit der Aussage kommen wir leider auch nicht weiter. 

Welche Art von Fehler gibt es? Compilerfehler oder Fehler bei der Ausgabe? Wenn du den Code wie hier: 

einfach versucht hast zu kompilieren, gibt es natürlich einen Fehler, den dir dein Compiler auch anzeigt. 

Apple Mach-O Linker (ld) Error Group

  "_main", referenced from:
clang: error: linker command failed with exit code 1 (use -v to see invocation)
 

Das zeigt Xcode an

	#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main (){
    
	    int iterative(int n);
    {
    int sum = 0;
    for(int i = 0; i < n; ++i) {
        sum += i;
    }
    return sum;
}
	    int rekursive(int n);
	
    if(n == 0){
        return 0;
        return n + rekursive(n);}
}
	

Also der sagt, dass das n nicht deklariert ist und außerdem muss ich irgendwie die Zahl selber eingeben die Fakultuert werden soll

Funktionieren würde so etwas hier:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int funktionA(int parameter_1, int parameter_2, int parameter_3)
{
  return (parameter_1+parameter_3)*parameter_2;
}

int main()
{
  int a=0,b=5,c=6,ergebnis_d=0;
  
  ergebnis_d=funktion(a,b,c);
  printf("%d\n",ergebnis_d);
}

 

Bearbeitet von Mttkrb

	#include <stdio.h>
#include <stdlib.h>
#include <math.h>
	    int iterative(int n);
{
    int sum = 0;
    for(int i = 0; i < n; ++i) {
        sum += i;
    }
    return sum;
	
    int rekursive(int n);
	
    if(n == 0){
        return 0;
        return n + rekursive(n);
    }
	int main ()
printf("Bitte Fakultät eingeben: ");
scanf("%d", &n);
printf("iterativ ergebnis: %d\n", int iterative(int n));
printf("rekursiv ergebnis: %d\n", int rekursive(int n));
    
}
	

Bearbeitet von Tikorz

Irgendwas stimmt mit der Klammer nicht ...

Welche Zeile denn ? 
ich verstehe nicht ganz was syntaktisch falsch ist ..

Jede Klammer die du aufmachst, muss auch wieder zugemacht werden. (Und andersrum)

Als Beispiel nimm mal meinen Beitrag von eben. Dort sieht du auch, wie Funktionen definiert werden. Wenn du ein anderes Beispiel möchtest, schau hier: https://de.wikipedia.org/wiki/C_(Programmiersprache)#Funktionen 

Edit: Es bringt nichts, wenn du dir die Lösungen irgendwie zusammenkopierst und dann hoffst, dass es irgendwie läuft. Versuch mal, das geschriebene zu verstehen.

Bearbeitet von Mttkrb

Ich habe es mittlerweile gelöst :) 
ich bedanke mich für die Antworten .

Ich habe eine neue Aufgabe, ich schaue wie weit ich komme und dann wende ich mich nochmal an die Community. Ich versuche mein Bestes zu geben.

Evtl. kann man mir erstmal erklären was getan werden soll .
Ich erstelle erstmal ein neuen Thread.

Es ist für keine Seite sinnvoll, dir den fertigen Code zu geben. Du lernst nichts, wir vergeuden Zeit.

Also setz dich doch mal 10-20 Min hin und wiederhole die Basics

http://lmgtfy.com/?q=c+tutorial

 

Zitat

Ich habe es mittlerweile gelöst :) 
ich bedanke mich für die Antworten .

Ich habe eine neue Aufgabe, ich schaue wie weit ich komme und dann wende ich mich nochmal an die Community. Ich versuche mein Bestes zu geben.

Evtl. kann man mir erstmal erklären was getan werden soll .
Ich erstelle erstmal ein neuen Thread.

Wir sind nicht hier um deine Hausaufgaben zu machen ...

Du weißt sicherlich nicht, wieso dein Code nicht funktioniert hat, oder?

Bearbeitet von KeeperOfCoffee

Mal ganz davon abgesehen, dass es in dem Code, den du gepostet hast, Syntaxfehler gibt...du berechnest dort die Summe von 1 bis n, aber definitiv nicht die Fakultät. Sicher, dass dein Code mittlerweile wirklich das ausgibt, was er soll (die Fakultät) und nicht etwas ganz anderes? :blink:

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.