C: Programmcode minimieren

Hallo Leute,

ich brauch mal ein paar Tipps von euch:

Ich will die Fakultät berechnen:

        int fak=1;
        for(; a > 0; a--)fak *= a;
        return fak;

kennt einer einen schicken “Einzeiler” ? in der Richtung return (…). Gibts da was in der Math.h ?

und ich will etwas ausgeben, eine Zahl einlesen und das dann als return(…) zurückgeben:

        char b[2+1];  //Zeichenkette mit 3 Zeichen
        printf("bitte geben sie eine Zahl ein: ");
        return (atol(gets(b)));    //Zeichenkette mit gets(b) einlesen und dann mit atol in einen Int umgewandeln.

Optimal wäre soetwas wie getchar() für int. Meine erste Idee war return(getchar()); was auch perfekt gewesen wäre wenn getchar nicht den Ascii Wert sondern die Zahl ansich zurückgeben würde.

Ziel: sowenig Code wie möglich.

Wünschenswert wäre:
Teil eins:
return …;
Teil zwei:
printf(…);
return …;

Vllt. hat ja einer eine Idee

Hm… Fakultät als Einzeiler „riecht“ nach Rekursion:

double fak(int n) { return (n<2) ? 1.0 : n*fak(n-1); }
…bei dem zweiten verstehe ich nicht ganz, was an dem atol(gets(b)) das Problem ist?

Für mich klingt das eher nach Hausaufgabe ;D

Jaaaaaah… Ich würde mir den Quellcode bei der Abgabe auch erklären lassen. :bigsmile:

Ich wuerd ja ne lib bauen und gegen die linken, dann waerens auch nur einzelne funktions aufrufe. :smile:

Ich hab die Aufgabe schon gelöst, jetzt geht es nur drum für mich persönlich so wenig wie möglich Zeile an Code. Der gute Stil sei mal dahingestellt.

Was ich auch gemacht hab um printf und return in eine Zeile zubekommen :

[code]int ausgabe(int a)
{
return(0*(printf(„die Faktultaet betraegt %i\n“,a)));

}
[/code]

und bei der main hab ich auch gespart:

int main() { return(ausgabe(berechnung(eingabe()))); }

ich möchte wenn möglich das ohne das anlegen der Varable b machen.

für Zeichen würde ich ja return(getch()); machen aber für Zahlen ist die Funktion nur bedingt zu gebrauchen. so etwas wie getint(); wäre optimal.