C
182 schrieb:
Hallo zusammen,
ich studiere Elektrotechnik und brauche Hilfe bei einer Hausaufgabe:
Bin ein völliger Anfänger in diesem Bereich und freue mich über jede Unterstützung!
Gegeben sei folgendes C-Programm:
“#include <stdio.h>
float funk (int zahl);
void main ()
{
int i;
printf("\n Eingabe");
scanf("%d", &i);
printf("\n \n Ausgabe(%d) = %f",i,funk(i));
}
float funk (int zahl)
{
float erg=0.0;
if (zahl>0)
erg=zahl+funk(zahl/3) / funk(zahl-1);
else erg=1.0;
return(erg);
}
a) Welche Programmiermethode findet hier Anwendung?
b) Berechnen Sie das Ergebnis für die Eingabe i=5. Geben Sie dazu
Schritt für Schritt in einer Tabelle die Werte für erg und zahl (bzw.
i) an. Wodurch sind hier die „Schritte“ bestimmt, d.h. an welcher Stelle
im Programm verändern sich jeweils zahl und erg?
c) Terminiert (d.h. endet) das Programm für jede zulässige Eingabe? Begründen
Sie Ihre Antwort.
a) http://de.wikipedia.org/wiki/Funktionale_Programmierung
b)
erg=5+funk(1.66) / funk(4)
erg=5+[1.66 + funk(0,55)/funk(0.66) ] / [4 + funk(1,33) / funk(3)]
usw..
am besten du Kompilierst das Programm mit http://sourceforge.net/projects/dev-cpp/files/Binaries/Dev-C%2B%2B%204.9.9.2/devcpp-4.9.9.2_nomingw_setup.exe/download
c) frag diesen "professor" wie er "jede ZULÄSSIGE Eingabe" definiert, denn wenn die Eingabe "zulässig" ist, muss das Programm terminieren. Ausgenommen von stack overflows usw. terminiert es immer, wenn die eingabedaten aus zahlen bestehen