C Programm - Verständnisprobleme



  • Heyho, ein frohes Fest!

    Ich arbeite mich gerade durch "C Programmieren von Anfang an" und bin bei bsp0033 ein wenig hängen geblieben... geht um "eigene Funktionen definieren", ist soweit auch verständlich größtenteils, doch folgendes Programm wird nicht näher erläutert, wobei ich das hierbei dann doch ganz fein fände:

    #include <stdio.h>
    
    int max(int a, int b) {
    	if(a > b)
    		return a;
    	else
    		return b;
    }
    
    int eingabe(int nr) {
    	int eingabe;
    	printf("Bitte die %i. Zahl eingeben: ",nr);
    	scanf("%i",&eingabe);
    	return eingabe;
    }
    
    main() {
    	int i,anzahl,maximum;
    	printf("\nWieviel Zahlen eingeben? ");
    	scanf("%i",&anzahl);
    	maximum = eingabe(1);
    	for(i=2; i<=anzahl; i++)
    		maximum = max(eingabe(i),maximum);
    	printf("\nDie groesste Zahl war %i.",maximum);
    }
    

    Relativ weit unten; warum "maximum = eingabe(1)"? Also warum die 1? und warum "for (i=2)"? Und nicht 1?

    Hmm... danke schon mal für Antworten...



  • Also soweit ich das sehe, ist das Ziel des Programms ja, eine vom Benutzer vorgegebene Anzahl an Zahlen einzulesen, und davon die Größte zu ermitteln.

    In Zeile 20 wird erstmal eingelesen, wieviele Zahlen der Nutzer eingeben will und in anzahl gespeichert.
    Danach wird in Zeile 21 die erste Zahl eingelesen und in maximum gespeichert, weil es die einzige Zahl ist die bisher eingelesen wurde und somit auch die Höchste ist.

    Die übergabe von 1 an eingabe ist einfach dazu da, um dem Benutzer die aktuelle Zahl anzugeben, die eingelesen wird und dass ist am Anfang halt die 1. Zahl. Dazu musst du dir nur die Funktion eingabe angucken.
    Die Zeile:
    printf("Bitte die %i. Zahl eingeben: ",nr);
    Dort wird nr ausgegeben, also das Argument was der Funktion übergeben wurde. Bei der Ausführung sollte dann:

    Bitte die 1. Zahl eingeben:

    herauskommen.

    Die for-schleife beginnt mit i=2 und nicht mit i=1, weil die erste Zahl ja schon eingelesen wurde, deswegen wird i dort auf 2 gesetzt.

    PS: Der Code ist für meine Begriffe aber ziemlich schrecklich, warum steht das so umständlich in dem Buch? oO



  • main()

    😕 Komisches Buch...

    Die main-Funktion sieht korrekt so aus:

    int main(void) {
      // ...
      return 0;
    }
    

    bzw. so:

    int main(int argc, char *argv[]) {
      // ...
      return 0;
    }
    

    Als C-Anfänger wirst du die Zweite allerdings noch nicht brauchen 😉



  • Ravendark schrieb:

    main()

    😕 Komisches Buch...

    Die main-Funktion sieht korrekt so aus:

    int main(void) {
      // ...
      return 0;
    }
    

    bzw. so:

    int main(int argc, char *argv[]) {
      // ...
      return 0;
    }
    

    Als C-Anfänger wirst du die Zweite allerdings noch nicht brauchen 😉

    Ähm was is denn an "main()" falsch? 🙄



  • gosha16 schrieb:

    Ähm was is denn an "main()" falsch?

    nichts, das ist nur uralt-C-schreibweise. heutige compiler wollen ein 'void' oder 'int' davor sehen.
    🙂


Anmelden zum Antworten