dila
-
Gesamte Inhalte
6 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Beiträge von dila
-
-
Vielleicht ist der Sinn dieser Aufgabe auch, dass dir die Grenzen der Wertebereiche der Datentypen bewusst werden.
Für 100! brauchst du einen Ganzzahltyp mit einer Größe von über 500 Bit. Es gibt spezielle Bibliotheken, die das können, aber ich glaube nicht, dass das der Sinn der Aufgabe ist.
Du kannst wie gesagt auch einen Fließkommatyp wie double benutzen. Hätte den zusätzlichen Vorteil, dass du bei negativem Argument die Möglichkeit hättest, im Rückgabewert ein ungültiges Ergebnis anzuzeigen. Allerdings wäre der Wert dann nicht genau. Fließkommatypen erkaufen sich die großen Wertebereiche durch verringerte Genauigkeit.
P.S.: Was ist ein "Schleifentyp"? Das habe ich noch nie gehört.
Also die 2te Aufgabe lautet so:
Programmieren Sie in der Programmiersprache C zwei weitere Funktionen zur Berechnung
von n!mit Hilfe von Schleifen. Wählen Sie sich dazu zwei Schleifentypen aus, die sie in
der Vorlesung kennengelernt haben. (Für-Schleife, Abweisenden-Schleife, Nicht-Abweisenden-
Schleife).
-
Nein, das ist falsch. Die Fakultät ist für negative Zahlen nicht definiert. Da du aber beim Rückgabetyp int nicht "nichts" zurückgeben kannst, könntest du eine Fehlermeldung ausgeben oder das Programm abbrechen.
Da dürfte erheblich mehr fehlen. Du benutzt int, das ist auf heute üblichen Systemen 32 Bit groß. Die größte damit darstellbare Zahl ist 2.147.483.647, das reich noch nicht einmal für 13!. Selbst wenn dein int 64 Bit hat, kommst du nur bis 20!. Deine Funktion liefert dafür zwar noch Ergebnisse, aber sie sind alle falsch.
Oh super dann ist ja ziemlich alles falsch durch was kann ich denn int ersetzen? (tut mir Leid für die dumen fragen )
-
Wenn ich in mein Programm noch Schleifentypen reintue, würde es dann theoretisch den Wert 100 ausrechnen? Weil bei der zweiten Aufgabe soll ich Schleifentypen einbauen und die Werte nochmal testen.
-
Was gibt deine Funktion denn für -5 zurück? Die Fakultät ist ja nun nur für nichtnegative Zahlen definiert
Das Problem ist, dass der richtige Wert viel zu groß ist, als dass er in einen int (oder irgendeinen anderen Ganzzahltyp) hineinpassen würde. Möglicherweise ist das das gewünschte Ergebnis des Tests. Du könntest auch mit Fließkommatypen rechnen, dort passen so große Werte eher hinein, allerdings auf Kosten der Genauigkeit.
Also für den Wert -5 kommt auch Null raus, und ich habe mir gedacht, dass es soweit richtig ist. Also für negative Zahlen rechnet das Programm den Wert niht aus. Ich weiß das bei meinem Programm 1-2 Ziffern fehlen, damit ich den Wert 100 Berechne.Aber was es genua ist weiss ich leider nicht.
-
Ich bitte um Hilfe! Ich habe die Folgende Aufgabenstellung :
Ändern Sie die Implementierung des Euklidischen Algorithmus in rekursiven Stil um.
&
Implementieren Sie eine Funktion in der Programmiersprache C zur Berechnung von f(n)=n! , wobei f(0):=1 gilt. mittels rekursiven Aufrufes. Testen Sie ihre Funktion in einem Programm für die Werte n=10,0,-5,100.
Also ich habe schon ein Programm geschrieben, was auch sehr gut funktioniert ABER nur bei den Werten 10,0,-5. Bei der Zahl 100 kommt leider 0 raus, was natürlich falsch ist.
Das ist das , was ich geschrieben habe:
#include<stdio.h>
int factorial(int n)
{
if (n == 1)
return 1;
else
return n*factorial(n-1);
}
int main ()
{
int m;
int n;
printf("Zahl eingeben:");
scanf("%d", &m);
printf("m lautet %d\n",m);
printf("Zahl eingeben:");
scanf("%d", &n);
printf("n lautet %d\n",n);
return 0;
}
Euklidischer Algorithmus (C)
in C und C++
Geschrieben
Also ? hihi sorry kenne mich mit solchen sachen nicht gut aus.