programmieren in C?

2 Antworten

Hallo Thena,

Auf den ersten Blick sehe ich drei Probleme mit deinem Code:

  1. Du musst ganz am Anfang deiner Datei (nach dem include) die Methode "myFakultaet(double);" deklarieren, damit der Compiler weiß, das sie existiert und was für Argumente du ihr übergeben musst.
  2. Du musst den Rückgabewert deiner Methode bestimmen oder "void" hinschreiben, wenn es keinen Rückgabewert gibt. Sonst weiß der Compiler nicht, was er erwarten muss.
  3. Du musst der Methode, wenn du sie aufrufst, eine Zahl, deren Fakultät du haben willst, übergeben, und das Ergebnis in einer anderen Variable speichern.

Hier ein Beispiel, wie du es verbessern könntest:

#include <stdio.h>

double myFakultaet(double);

int main()
{
double val = 0; // ist egal was für ein Wert, muss halt nur existieren
double ergebnis = myFakultaet(val);

printf("%f", ergebnis);

return 0;

}

double myFakultaet(double val){

  double ergebnis;
  
  double a;
  
  // Sie*
  printf("Geben Sie eine Zahl ein ");
  
  scanf_s("%f", &val);
  
  ergebnis = 1;

  // for- statt while-Schleife
  for(int a = 1; a <= val; a++) {
    // sonst setzt du das Ergebnis immer neu; += addiert es
    ergebnis += ergebnis * a;
  }
 
  return ergebnis;
    
 }
Thena03 
Fragesteller
 28.11.2021, 23:13

ahh danke das Programm funktioniert, jedoch gibt es das falsche Ergebnis an. ich glaub das hat was mit dem Wert double val = 0. zutun

0
Username541765  28.11.2021, 23:23
@Thena03

Hab mir deinen Code jetzt nochmal genauer angeschaut; die while-Schleife kannst du gut durch eine for-Schleife ersetzen, die tut dasselbe, nur schöner. Und du musst dass Ergebnis immer erhöhen, sonst hast du am Ende nur das letzte Ergebnis von "a * Ergebnis". Der etwas längere Code dafür wäre "ergebnis = ergenis + ergebnis * a", aber du kannst auch einfach "+=" nehmen und damit den Wert automatisch addieren.

0
Thena03 
Fragesteller
 28.11.2021, 23:26
@Username541765

ja, aber der Code im allgemeinen funktioniert, jedoch gibt trotzdessen den falschen wert an, also wenn ich zum Beispiel 10 eingebe, dann gibt er mir für die Fakultät 1 an, was falsch ist. Was genau muss geändert werden, damit es die richtige Fakultät anzeigt?

0
Thena03 
Fragesteller
 28.11.2021, 23:31
@Username541765

alles gut ich habs, danke für die Hilfe. Echt korrekt das du dir so viel zeit genommen hast.

1

Ich hatte Dir bereits die Implementierung der Funktion gemäß Deiner Aufgabenstellung gezeigt.

Ich weiß nicht, was Du hier fabrizieren willst, aber die Eingabe der Zahl von der die Fakultät berechnet werden soll, hat nichts in der Funktion myFakultaet() selbst zu suchen.