Visual C++ aufgabe für Uni
-
also wir müssen eine aufgabe in C++ machen.... ich sitze hier schon seit einer woche dran aber schaffs einfach nich diese zu lösen da ich
1. noch nie was mit C++ zu tun hatte und
2. unser proffesor uns GARNIX über C++ beibringt sondern nur darüber redet wann und wo der erste pc gebaut wurde und wie pc´s aufgebaut sind und son kram
nun wende ich mich an euch unf hoffe das ihr mir helfen könnt.....
die aufgabe dürfte euch in weniger als einer minute zu lösen sein aber ich bin einfach zu doof dafür.... ich würd mich wirklich sehr über eure hilfe freuen
Hier ist die aufgabe als PDF: http://uploaded.to/?id=sjasra
-
also ich glaube der sinn der sache ist, dass du dich damit beschäftigst und es nicht von anderen machen lässt. du kannst mit sicherheit hier auch gute tipps bekommen die bei der lösung der aufgabe helfen werden und wenn du wirklich vorher noch gar nix mit c++ zu tun hattest solltest du vorher vielleicht auchmal nen tutorial durcharbeiten ...
-
so also ich habs jetz ma versucht ich hoffe das es richtig ist
int fak (int n)
{
if (n > 1)
return 0;
else if (1 == 1)
return 1;
else
return n * (fak (n - 1));
}
-
Hi Unity01...
kann mich meinem vorredner nur anschließen, denke nicht das es sinnvoll
wäre dir hier die komplette Lösung für deine Aufgabe zugeben,
weil du dadurch nichts lernst, höchstens wie Copy+Paste funktioniert.Aber da du ja schreibst du versuchst es schon über eine Woche,
kannst du ja bestimmt auch genauer erklären wo deine Probleme sind
und wir können dich Schritt für Schritt zu deiner Lösung führen.Die Aufgabe die dir dein Prof gegeben hat ist wirklich sehr Simpel,
sind höchsten 4-5 Zeilen Code, musst halt ein bißchen nachdenken.Und falls dir das alles zu mühsam ist gibt es immer noch Google,
einfach mal "fakultät c++" eingeben und tata 128.000 treffer.
-
Sorry du warst mit deinem Post schneller wie ich...
Deine Lösung sieht vom Ansatz her ja schon mal ganz gut aus,
aber deine if-Abfragen versteh ich nicht.Wenn n größer 1 ist brichts du mit return ab, warum?
Und was soll Wenn 1 gleich 1 ist, das trifft natürlich immer zu,
somit kommst du nie zu deiner Berechnung.Wie wär's denn so:
int fak(int n){ if (n==0) return(1); else return n*fak(n-1); }denk mal drüber nach ist wirklich simpel...
wünsch dir noch viel erfolg und falls du noch probleme hast
einfach melden...
-
Dieser Thread wurde von Moderator/in estartu aus dem Forum MFC (Visual C++) in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
so wäre es vllt noch besser, da hier ein negativer Parameter vermieden wird:
unsigned int fak(unsigned int n){ if (n == 0) return 1; else return n * fak(n - 1); }außerdem kannst du doch schon abbrechen, wenn n == 1...
denn 0! ergibt doch nicht 1, oder?also:
unsigned int fak(unsigned int n){ if (n <= 1) return n; else return n * fak(n - 1); }MfG DrakoXP
-
???
Dein Posting solltest du nochmal überdenken.

Es gibt schließlich keinen Grund die Kuh wieder auf's Eis zu schieben.

/edit/
Nur vertippt.
-
DrakoXP schrieb:
außerdem kannst du doch schon abbrechen, wenn n == 1...
denn 0! ergibt doch nicht 1, oder?
-
namespace math { unsigned long fak(unsigned long n) { return (n == 0 ? 1 : n * fak(n - 1)); } };int main() { std::cout << math::fak(10) << std::endl; }... so ist doch schön

-
(D)Evil schrieb:
namespace math { unsigned long fak(unsigned long n) { return (n == 0 ? 1 : n * fak(n - 1)); } };... so ist doch schön

Endlich ein Mensch, der mich versteht.
Wobei es per Endrekursion natürlich in gewisser Weise noch schöner ist, weil es dann vom Compiler ge-inlined werden kann.