C - Minimum und Maximum



  • Guten Tag Leute,

    ich habe mich hier erst neulich angemeldet, deswegen bitte nicht böse sein wenn es in der falschen Section gepostet wird. Jetzt zu meiner Frage: Kann sich evtl einer die Zeit nehmen um mir die Logik in dem Stück Code genau zu erklären? Wäre wirklich sehr nett, weil ich da null durch blicken kann. Bei mir hörts schon bei den Funktionen auf.

    Danke für jeden Ansatz.

    #include <stdio.h>
    #include <stdlib.h>
    
    int minimum(int[], int);
    int maximum(int[], int);
    
    int main(int argc, char *argv[])
    {
      int iZahl[4];
    
      iZahl[0]=192;
        iZahl[3]=64;
          iZahl[2]=63;
            iZahl[1]=62;
            int iLoop;
      int max;
      int min;
    
      max=maximum(iZahl,4);
        min=minimum(iZahl,4);
    
      printf("Das Minimum: %d\n", min);
        printf("Das Maximum: %d\n", max);
    getch();
      return 0;
    }
    
    int minimum(int aiINT[], int anzahl)
    {
        int iLoop;
        int min=10000;
        for(iLoop=0; iLoop<anzahl; iLoop++){
                     if (aiINT[iLoop]<min){
                                           min=aiINT[iLoop];
                                           }
                     }
                     return min;
    }
    
    int maximum(int aiINT[], int anzahl)
    {
        int iLoop;
        int max=-10000;
        for(iLoop=0; iLoop<anzahl; iLoop++){
                     if (aiINT[iLoop]>max){
                                           max=aiINT[iLoop];
                                           }
                     }
                     return max;
    }
    

    MfG

    HumaneExistenz



  • Nimm einen Debugger und gehe schrittweise durch.
    "Erklären Sie die Logik dieses Programms" ist eine klassische Hausaufgabe, und die mach mal selbst.



  • Was verstehst du nicht?
    - den Ablauf vom Programm?
    - den Aufruf der Funktionen?
    - warum es Funktionen gibt?
    - die for-Schleife?



  • #include <stdio.h> 
    #include <stdlib.h> 
    
    int minimum(int[], int); 
    int maximum(int[], int); 
    
    int main(int argc, char *argv[]) 
    { 
    	int iZahl[4]; //Definiert ein Array für 4 Integer
    
    	// Zahlen werden ins Array gespeichert
    	iZahl[0]=192; //1. Zahl ist 192
    	iZahl[3]=64;  //4. Zahl ist 64
    	iZahl[2]=63;  //3. Zahl ist 63
    	iZahl[1]=62;  //2. Zahl ist 62
    	int iLoop;    //Loopvaraible, hier sinnlos
    	int max;      //Variable die das Mamimum speichern wird (würde aber Defininition und Initialisierung in eine Zeile packen)
    	int min;     //Variable die das Minumum speichern wird (würde aber Defininition und Initialisierung in eine Zeile packen)
    
    	max=maximum(iZahl,4); //ruft die Funktion "maximum" auf und speichert das Ergebnis in der Variable "max"
    	min=minimum(iZahl,4); //ruft die Funktion "minimum" auf und speichert das Ergebnis in der Variable "max"
    	                      //Parameter beide Male unser Array von Zahlen (iZahl) und die Länge (4). Wobei die Länge hardcoded ist, das ist kein gute Idee
    
    	printf("Das Minimum: %d\n", min); // Gibt das Minimum auf den Bildschirm aus
    	printf("Das Maximum: %d\n", max); // Gibt das Maximum auf den Bildschirm aus
    	getch(); 
    	return 0; 
    } 
    
    int minimum(int aiINT[], int anzahl) //Funktion mit Rückgabetyp int, nimmt als Parameter 1) ein Array aus ints und 2) Dessen Länge an
    { 
    	int iLoop; //Loopvariable wird definiert, würde ich in de Loop ziehen
    	int min=10000; //Variable die die bisher kleinste Zahl speichert, geht aber so nicht. Bitte mit aiINT[0] initialisieren, oder mit dem maximial möglichen Wert von "int"
    	for(iLoop=0; iLoop<anzahl; iLoop++){ //Über alle Zahlen in unserem Array laufen
    		if (aiINT[iLoop]<min){ // Wenn wir eine kleinere Zahl finden, diese...
    			min=aiINT[iLoop];  //...als kleinste gefunden Zahl merken
    		} 
    	} 
    	return min; // Kleinste gefundene Zahl zurückgeben
    } 
    
    int maximum(int aiINT[], int anzahl) //Funktion mit Rückgabetyp int, nimmt als Parameter 1) ein Array aus ints und 2) Dessen Länge an
    { 
    	int iLoop; //Loopvariable wird definiert, würde ich in de Loop ziehen
    	int max=-10000; //Variable die die bisher kleinste Zahl speichert, geht aber so nicht. Bitte mit aiINT[0] initialisieren, oder mit dem minimal möglichen Wert von "int"
    	for(iLoop=0; iLoop<anzahl; iLoop++){ //Über alle Zahlen in unserem Array laufen
    		if (aiINT[iLoop]>max){ // Wenn wir eine größere Zahl finden, diese...
    			max=aiINT[iLoop]; //...als größte gefunden Zahl merken
    		} 
    	} 
    	return max; // Größte gefundene Zahl zurückgeben
    }
    

    Reicht das ?


Log in to reply