|
|
| Autor |
Nachricht |
Bamlee Full Member


 Anmeldungsdatum: 19.05.2006 Beiträge: 296
|
Verfasst 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


 Anmeldungsdatum: 08.06.2005 Beiträge: 9161
|
Verfasst 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? _________________ <SA> i'm going to become rich and famous after i invent a device that allows you to stab people in the face over the internet |
|
 |
Bamlee Full Member


 Anmeldungsdatum: 19.05.2006 Beiträge: 296
|
Verfasst 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


Anmeldungsdatum: 30.06.2006 Beiträge: 7084
|
Verfasst 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


Anmeldungsdatum: 14.01.2007 Beiträge: 203
|
Verfasst 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


 Anmeldungsdatum: 19.05.2006 Beiträge: 296
|
Verfasst 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


 Anmeldungsdatum: 19.05.2006 Beiträge: 296
|
Verfasst am: 19 Mai 2007 - 18:51:33 Titel: |
|
|
| hallo?! |
|
 |
Wirtschaftsinformatiker Valued Contributor


Anmeldungsdatum: 30.06.2006 Beiträge: 7084
|
Verfasst 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


 Anmeldungsdatum: 08.06.2005 Beiträge: 9161
|
Verfasst 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. _________________ <SA> i'm going to become rich and famous after i invent a device that allows you to stab people in the face over the internet |
|
 |
Bamlee Full Member


 Anmeldungsdatum: 19.05.2006 Beiträge: 296
|
Verfasst 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  |
|
 |
|