C-Kurs/Arrayuebergabe/Musterlösung
< C-Kurs | Arrayuebergabe
Version vom 18. September 2009, 12:12 Uhr von 85.178.222.65 (Diskussion) (Die Seite wurde neu angelegt: „<pre>#include <stdio.h> #include <stdlib.h> #include <stdint.h> #include <limits.h> void help(char *error){ printf("%s\n", error); exit(EXIT_FAILURE); } int f...“)
#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;
}