C :: Aufgabe #4
3 Lösungen

Funktion welche Minimum und Maximum aus einem Array zurückgibt
Anfänger - C
von Gustl
- 07.12.2012 um 17:36 Uhr
Programmieren Sie eine Funktion welche aus einem Array von Integer-Elementen das Minimum und Maximum zurückgibt.
Als Übergabe-Parrameter wird das Array übergeben.
Testen Sie die Funktion mit 2 Abfragen, bzw. mit 2 verschiedenen Arrays.
Hilfestellung: Sortierverfahren - Wikipedia
Als Übergabe-Parrameter wird das Array übergeben.
Testen Sie die Funktion mit 2 Abfragen, bzw. mit 2 verschiedenen Arrays.
Hilfestellung: Sortierverfahren - Wikipedia
Lösungen:

/**************************************** * min_max.c Min/Max aus Integer-Array * * OS : GNU/Linux * compile: gcc -Wall -o min_max min_max.c * * devnull 01-07-2013 ****************************************/ #include <stdlib.h> #include <stdio.h> #include <limits.h> #include <time.h> void min_max( int *pa, int n, int *pmin, int *pmax ) { int imin=INT_MAX; int imax=INT_MIN; int i; for (i=0;i<n;i++,pa++) { imin = (*pa < imin)?*pa:imin; imax = (*pa > imax)?*pa:imax; } *pmin=imin; *pmax=imax; } void print_array( int *pa, int n ) { int i; for (i=0;i<n;i++,pa++) printf("%d ", *pa); printf("\n"); } /* main */ int main( void ) { int arr[] = {4,3,2,1,0,-1,-2,-3,-4,-5}; int anz=sizeof(arr)/sizeof(int); int min,max,i; print_array( arr,anz ); min_max( arr, anz, &min, &max ); printf("Min=%d , Max=%d\n\n", min,max ); srand(time(NULL)); for (i=0;i<anz;i++) arr[i] = rand() % 1000; print_array( arr,anz ); min_max( arr, anz, &min, &max ); printf("Min=%d , Max=%d\n\n", min,max ); return 0; }
Zitat:
\C-Aufgaben> .\Aufgabe-0004.exe
Array: { 20, 133, -708, 0, 5780, 9820, -10003, 19 }
arrayInfo.min = -10003
arrayInfo.max = 9820
Array: { -5, -200, -708, 8900, -5780, -9820, 10, 10 }
arrayInfo.min = -9820
arrayInfo.max = 8900

/////////////////////////////////////////////////////////// //! @file Aufgabe-0004.c //! @date 07.01.2019 //! @author Sebastian Schröder //! @details //! Compiler : gcc 5.1.0 //! C-FLAGS : -pipe -std=c99 -Wall -Wextra -pedantic -Werror -D_DEFAULT_SOURCE -O0 -g -o Aufgabe-0004.exe Aufgabe-0004.c //! Testumgebung: Windows 10 - Windows PowerShell //! //! Aufgabe: Funktion welche Minimum und Maximum aus einem Array zurückgibt //! Programmieren Sie eine Funktion welche aus einem Array von Integer-Elementen das Minimum und Maximum zurückgibt. //! Als Übergabe-Parrameter wird das Array übergeben. //! Testen Sie die Funktion mit 2 Abfragen, bzw. mit 2 verschiedenen Arrays. //! @see https://de.wikipedia.org/wiki/Sortierverfahren /////////////////////////////////////////////////////////// #include <limits.h> #include <stdio.h> #include <stdlib.h> #define ARRAYSIZE 8 typedef struct SArrayInfo { int min; int max; } SArrayInfo; SArrayInfo getMinMax(const int *sourceArray, int sourceLength); void printArray(const int *sourceArray, int sourceLength); int main (/*int argc, char **argv*/) { int myArray1[ARRAYSIZE] = { 20, 133, -708, 0, 5780, 9820, -10003, 19}; int myArray2[ARRAYSIZE] = { -5, -200, -708, 8900, -5780, -9820, 10, 10}; SArrayInfo arrayInfo; arrayInfo = getMinMax (myArray1, ARRAYSIZE); printArray (myArray1, ARRAYSIZE); printf ("arrayInfo.min = %11i\n", arrayInfo.min); printf ("arrayInfo.max = %11i\n", arrayInfo.max); printf ("\n"); arrayInfo = getMinMax (myArray2, ARRAYSIZE); printArray (myArray2, ARRAYSIZE); printf ("arrayInfo.min = %11i\n", arrayInfo.min); printf ("arrayInfo.max = %11i\n", arrayInfo.max); return EXIT_SUCCESS; } SArrayInfo getMinMax(const int *sourceArray, int sourceLength) { SArrayInfo arrayInfo; arrayInfo.max = INT_MIN; arrayInfo.min = INT_MAX; for (int i = 0; i < sourceLength; ++i) { if (sourceArray[i] < arrayInfo.min) arrayInfo.min = sourceArray[i]; if (sourceArray[i] > arrayInfo.max) arrayInfo.max = sourceArray[i]; } return arrayInfo; } void printArray(const int *sourceArray, int sourceLength) { printf ("Array: { "); for (int i = 0; i < sourceLength; ++i) { if (i > 0) { printf (", "); } printf ("%i", sourceArray[i]); } printf (" }\n"); } #undef ARRAYSIZE

#include <stdio.h> #include <stdlib.h> int maximum(int *array, int groesse) { int maximum, i; maximum = 0; for (i=0; i<groesse; i++) { if (array[i]>maximum) maximum = array[i]; } return maximum; } int minimum(int *array, int groesse) { int minimum, i; minimum = array[0]; for (i=0; i<groesse; i++) { if (array[i] < minimum) minimum = array[i]; } return minimum; } int main(void) { int array1[11]={1,2,3,4,8,9,4,45,56,41,75}; int array2[9]={78,15,97,34,36,14,94,72,64}; printf("Das Minimum vom Array1 beträgt: %d\n",minimum(array1,11)); printf("Das Maximum vom Array1 beträgt: %d\n",maximum(array1,11)); printf("Das Minimum vom Array2 beträgt: %d\n",minimum(array2,9)); printf("Das Maximum vom Array2 beträgt: %d\n",maximum(array2,9)); }