Sitzung: Jeden Freitag in der Vorlesungszeit ab 16 Uhr c. t. im MAR 0.005. In der vorlesungsfreien Zeit unregelmäßig (Jemensch da?). Macht mit!

C-Kurs/Arrayuebergabe/Musterlösung

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <limits.h>

void
help(char *error){
	printf("%s\n", error);
	exit(EXIT_FAILURE);
}

int
find_max(int *arr, size_t size){
	int max = 0;
	size_t i;
	for(i = 0; i < size; i++){
		if(*(arr + i) > max)
			max = *(arr + i);
	}
	return max;
}

int
main(int argc, char **argv){
	size_t size = 0;
	int *arr = NULL;
	size_t c;

	if(argc < 2)
		help("Es fehlt die Groess des Arrays");

	size = strtol(argv[1], NULL, 10);
	if(0 == size || UINT_MAX / sizeof(int) < size)
		help("alles ausser positive natuerliche Zahlen im Bereich 0 - n*sizeof(int) <= SIZE_MAX sind ungueltig");

	if(NULL == (arr = malloc(sizeof(int) * size))){
		perror("malloc()");
		help("Fehler beim Speicherallozieren");
	}

	for(c = 0; c < size; c++){
		printf("%4d Integer Wert bitte eingeben: ", (int)c);
		scanf("%d", &arr[c]);
	}

	printf("Der groesste Wert im Array ist: %d\n", find_max(arr, size));

	free(arr);

	return 0;
}