Studium, Ausbildung und Beruf
 StudiumHome   FAQFAQ   RegelnRegeln   SuchenSuchen    RegistrierenRegistrieren   LoginLogin

Fehler in der Fakultätsaufgabe
Neues Thema eröffnen   Neue Antwort erstellen
Foren-Übersicht -> Informatik-Forum -> Fehler in der Fakultätsaufgabe
 
Autor Nachricht
Bamlee
Full Member
Benutzer-Profile anzeigen
Full Member


Anmeldungsdatum: 19.05.2006
Beiträge: 296

BeitragVerfasst am: 17 Mai 2007 - 13:19:31    Titel: Fehler in der Fakultätsaufgabe

Ich bin dabei die Rekursion in C++ zu lernen. Ich habe versucht eine Fakultätsaufgabe mit einem Eingabe- und einem Ausgabeparameter zu schreiben.
Jedoch kommt bei mir de Fehlermeldung
Zitat:
[C++ Fehler] Unit1.cpp(21): E2188 Ausdruckssyntax

könnt ihr mir bitte sagen worin der Fehler liegt und was ich machen muss um diese Fak. aufgabe rekursiv zu schreiben
Zitat:
#include<conio.h>
#include<iostream.h>

berechnung(int n, int &sum); //prototyp

berechnung(int n,int &sum) //ein-ausgabeparameter
{
int i; //lokale variable i
for(i=1;i<n;i+=1)
{
sum=n-i; //Fakultätsfunktion
} return sum; gibt den errechneten Wert zurück?!
} ;

void main()
{
int eingabe;
int summe;
cout<<"hallo , bitte gib eine zahl ein\n zahl: ";
cin>>eingabe;
cout<<"die Fakultaet betraegt:"<<berechnung(int n,int &sum)<<endl;
getch();
}


Mit freundlichen Grüßen
Bamlee
Whoooo
Valued Contributor
Benutzer-Profile anzeigen
Valued Contributor


Anmeldungsdatum: 08.06.2005
Beiträge: 8988

BeitragVerfasst am: 17 Mai 2007 - 14:03:59    Titel:

Kann sein, dass euer C anders ist als das C, was ich kenne (was ich zwar nicht glaube, aber man weiss ja nie). Auf jeden Fall fällt mir folgendes auf:

1. Das ist nicht rekursiv, sondern iterativ
2. Deine Fkt. hat keinen Rückgabetyp
3. Der Aufruf der Fkt. aus dem Ausgabestream ist falsch

Wundert mich, dass dein Compiler nur eine Fehlermeldung ausgibt. Womit arbeitest du?
Bamlee
Full Member
Benutzer-Profile anzeigen
Full Member


Anmeldungsdatum: 19.05.2006
Beiträge: 296

BeitragVerfasst am: 17 Mai 2007 - 14:13:12    Titel:

Kann sein, dass euer C anders ist als das C, was ich kenne (was ich zwar nicht glaube, aber man weiss ja nie). Auf jeden Fall fällt mir folgendes auf:

1. Das ist nicht rekursiv, sondern iterativ
2. Deine Fkt. hat keinen Rückgabetyp
3. Der Aufruf der Fkt. aus dem Ausgabestream ist falsch

Wundert mich, dass dein Compiler nur eine Fehlermeldung ausgibt. Womit arbeitest du?


Das ist c++ nicht c, von Borland.

1.Ja das ist noch nicht rekursiv, meine Frage war ja auch wie ich daraus etwas rekursives machen kann.
2. gibt die Return anweisung nichts zurück?
3.kannst du mir bitte sagen wie ich dieses Prob. aufheben kann?

Mit freundlichen Grüßen
Bamlee
Wirtschaftsinformatiker
Valued Contributor
Benutzer-Profile anzeigen
Valued Contributor


Anmeldungsdatum: 30.06.2006
Beiträge: 7084

BeitragVerfasst am: 17 Mai 2007 - 17:43:39    Titel:

da sind ein Haufen logische Fehler drin.

Ich fange mal an :

Zitat:
berechnung(int n,int &sum) //ein-ausgabeparameter
{
int i; //lokale variable i
for(i=1;i<n;i+=1)
{
sum=n-i; //Fakultätsfunktion
} return sum; gibt den errechneten Wert zurück?!
} ;




das sieht mir aus, wie eine Kreuzung der iterativen Lösung mit der rekursiven Lösung. Das funktioniert nicht.
Beim ersten return Aufruf in der Schleife wird die Funktion beendet. Das ist bei der C++ Funktion so. Außerdem macht ein return nur Sinn, wenn die Funtion einen Rückgabewert hat, was bei Dir nicht der Fall ist. Du willst ja das Ergebnis über die Variable sum ausgeben.
Daher bringt die Schleife nicht viel.

Iterativ könnte man das z.b. so lösen :
wobei hier

int berechnung(int n) {
temp = 1;
for ( int i = 2; i <= n; i ++)
{
temp = temp * i;
}

return temp;
}

das sollte gehen ( auspropiert hab ich es jetzt nicht ).

Zitat:

cout<<"die Fakultaet betraegt:"<<berechnung(int n,int &sum)<<endl;


muss anders lauten, nämlich : cout<<"die Fakultaet betraegt:"<<berechnung( n)<<endl;

jetzt sollte es gehen.
Behind These Walls
Full Member
Benutzer-Profile anzeigen
Full Member


Anmeldungsdatum: 14.01.2007
Beiträge: 203

BeitragVerfasst am: 18 Mai 2007 - 15:14:59    Titel:

Zur Rekursion müsstest du erst wissen wie die Fakultät rekursiv definiert ist:
Die Fakultät von n = n * fak(n-1)
und die Fakultät für n = 1 ist 1
also brauchst du in deiner Funktion aufjedenfall eine Abbruchbedingung!
Code:

fakultät(n)
   wenn n = 1
      return 1
   sonst
      return n * fakultät(n-1)
Bamlee
Full Member
Benutzer-Profile anzeigen
Full Member


Anmeldungsdatum: 19.05.2006
Beiträge: 296

BeitragVerfasst am: 18 Mai 2007 - 17:27:26    Titel:

SO ich habe jetzt die C++ Klausur hinter mir, ist leider nicht so verlaufen wie ich es mir gewünscht habe, aber na ja was solls halb so schlimm. Ich habe aber eine andere Frage an euch.
Ich möchts später an einer Uni bzw. FH Maschinenbau oder Mechatronik studieren. Inwieweit ist die Programmiersprache im Studium nötig?
Ist c++ für diese Studiengänge von Überfluss oder ist es brauchbar?
Bamlee
Full Member
Benutzer-Profile anzeigen
Full Member


Anmeldungsdatum: 19.05.2006
Beiträge: 296

BeitragVerfasst am: 19 Mai 2007 - 18:51:33    Titel:

hallo?!
Wirtschaftsinformatiker
Valued Contributor
Benutzer-Profile anzeigen
Valued Contributor


Anmeldungsdatum: 30.06.2006
Beiträge: 7084

BeitragVerfasst am: 19 Mai 2007 - 19:08:19    Titel:

Zitat:

Ich möchts später an einer Uni bzw. FH Maschinenbau oder Mechatronik studieren. Inwieweit ist die Programmiersprache im Studium nötig?
Ist c++ für diese Studiengänge von Überfluss oder ist es brauchbar?


in Maschinenbau wirst du warscheinlich mal eine Prüfung in Programmieren haben, dass kann auch in C++ sein.
Aber ich denke, gerade in Mechatronik wirst du das brauchen.

Das variiert aber von Hochschule zu Hochschule.
Whoooo
Valued Contributor
Benutzer-Profile anzeigen
Valued Contributor


Anmeldungsdatum: 08.06.2005
Beiträge: 8988

BeitragVerfasst am: 20 Mai 2007 - 21:28:47    Titel:

Ums Programmieren wirst du kaum herumkommen, und es kommt immer dann, wenn du es am wenigsten erwartest. Ich kenne einen Maschinenbauer, der sich für sein Diplom wieder C++ aneignen musste, weil seine Diplomarbeit unter anderem die Implementierung einer Simulationssoftware in C++ beinhaltete. Wenn du was technisches machen willst, dann ist C/C++ nach wie vor sehr wichtig; für Mechatroniker sowieso - die meisten Microcontroller werden in ASM oder C programmiert.
Bamlee
Full Member
Benutzer-Profile anzeigen
Full Member


Anmeldungsdatum: 19.05.2006
Beiträge: 296

BeitragVerfasst am: 20 Mai 2007 - 21:56:41    Titel:

Oh dann ist es besser ich häng mich da wieder rein, aber irgendwie fehlt mir da völlig die Motivation. Wisst ihr vllt wie ich mich mit c++ wieder anfreunden kann Sad
Beiträge der letzten Zeit anzeigen:   
Foren-Übersicht -> Informatik-Forum -> Fehler in der Fakultätsaufgabe
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

Chat :: Nachrichten:: Lexikon :: Bücher :: Impressum