C :: Aufgabe #4

3 Lösungen Lösungen öffentlich

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

Lösungen:

vote_ok
von devnull (8870 Punkte) - 01.07.2013 um 20:19 Uhr
Quellcode ausblenden C-Code
/****************************************
 * 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;
}
vote_ok
von mraimbot (580 Punkte) - 07.01.2019 um 18:08 Uhr

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

Quellcode ausblenden C-Code
///////////////////////////////////////////////////////////
//! @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
vote_ok
von kathleenw (3600 Punkte) - 18.08.2020 um 10:07 Uhr
Quellcode ausblenden C-Code
#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));
}