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 ?