/* input a list of elements into an array,
* and then print the smallest element.
* Here we use pointers to implement the smallest function. */
#include <stdio.h>
#define TABLESIZE 12
int input(int [], const int);
int *smallest(int *const, const int);
int main(void)
{
int size, *index;
int table[TABLESIZE];
if ((size = input(table, TABLESIZE)) > TABLESIZE)
printf("Too many elements, max is %d\n", TABLESIZE
); else {
index = (int *)smallest(table, size);
printf("The smallest element is %d\n", *index
); }
}
int input(int table[], const int limit)
{
int size; /* expected number */
int k; /* loop control */
printf("Enter number of data items: ");
if (size > limit) return (size);
for (k = 0; k < size; k++)
}
/* Computing the smallest element. */
int *smallest(int *const array, const int limit)
{
int *index, *final, *subscript;
int least;
index = array;
final = array + limit;
least = *index;
for (subscript = array + 1; subscript < final; subscript++)
if (*subscript < least)
least = *(index=subscript);
return (index);
}
Ci8qIGlucHV0IGEgbGlzdCBvZiBlbGVtZW50cyBpbnRvIGFuIGFycmF5LAogKiBhbmQgdGhlbiBwcmludCB0aGUgc21hbGxlc3QgZWxlbWVudC4gCiAqIEhlcmUgd2UgdXNlIHBvaW50ZXJzIHRvIGltcGxlbWVudCB0aGUgc21hbGxlc3QgZnVuY3Rpb24uICovCgojaW5jbHVkZSA8c3RkaW8uaD4KI2RlZmluZSBUQUJMRVNJWkUgMTIKCmludCBpbnB1dChpbnQgW10sIGNvbnN0IGludCk7CmludCAqc21hbGxlc3QoaW50ICpjb25zdCwgY29uc3QgaW50KTsKCmludCBtYWluKHZvaWQpCnsKICBpbnQgc2l6ZSwgKmluZGV4OwogIGludCB0YWJsZVtUQUJMRVNJWkVdOwoKICBpZiAoKHNpemUgPSBpbnB1dCh0YWJsZSwgVEFCTEVTSVpFKSkgPiBUQUJMRVNJWkUpCiAgICAgcHJpbnRmKCJUb28gbWFueSBlbGVtZW50cywgbWF4IGlzICVkXG4iLCBUQUJMRVNJWkUpOwogIGVsc2UgewogICAgIGluZGV4ID0gKGludCAqKXNtYWxsZXN0KHRhYmxlLCBzaXplKTsKICAgICBwcmludGYoIlRoZSBzbWFsbGVzdCBlbGVtZW50IGlzICVkXG4iLCAqaW5kZXgpOwogIH0KfQoKaW50IGlucHV0KGludCB0YWJsZVtdLCBjb25zdCBpbnQgbGltaXQpCnsKICBpbnQgc2l6ZTsgIC8qIGV4cGVjdGVkIG51bWJlciAqLwogIGludCBrOyAgICAgLyogbG9vcCBjb250cm9sICovCgogIHByaW50ZigiRW50ZXIgbnVtYmVyIG9mIGRhdGEgaXRlbXM6ICIpOwogIHNjYW5mKCIlZCIsICZzaXplKTsKCiAgaWYgKHNpemUgPiBsaW1pdCkgcmV0dXJuIChzaXplKTsKCiAgZm9yIChrID0gMDsgayA8IHNpemU7IGsrKykKICAgICBzY2FuZigiJWQiLCAmdGFibGVba10pOwp9CgovKiBDb21wdXRpbmcgdGhlIHNtYWxsZXN0IGVsZW1lbnQuICovCmludCAqc21hbGxlc3QoaW50ICpjb25zdCBhcnJheSwgY29uc3QgaW50IGxpbWl0KQp7CiAgaW50ICppbmRleCwgKmZpbmFsLCAqc3Vic2NyaXB0OwogIGludCBsZWFzdDsKCiAgaW5kZXggPSBhcnJheTsKICBmaW5hbCA9IGFycmF5ICsgbGltaXQ7CiAgbGVhc3QgPSAqaW5kZXg7CiAgZm9yIChzdWJzY3JpcHQgPSBhcnJheSArIDE7IHN1YnNjcmlwdCA8IGZpbmFsOyBzdWJzY3JpcHQrKykKICAgICAgIGlmICgqc3Vic2NyaXB0IDwgbGVhc3QpCiAgICAgICAgICBsZWFzdCA9ICooaW5kZXg9c3Vic2NyaXB0KTsKCiAgcmV0dXJuIChpbmRleCk7Cn0KCg==