Решил немножко поиграться с циклом for и тернарным условным оператором.
Программа должна в массиве случайно заданных чисел найти минимум и максимум. Однако, мало того, что она плохо ищет, так ещё и переменная либо min, либо max, принимают очень большое или очень маленькое значение (например, 1590569472 или -688611888)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 10
#define RANDMAX 100
int main()
{
srand (time(NULL));
int a[N], i, max, min;
for (i = 0, a[N]; i < N; printf ("%3d", a[++i] = rand()%RANDMAX));
for (max = a[0], i = 1; i < N; (max = (max < a[i]) ? a[i]: max), i++);
for (min = a[0], i = 1; i < N; (min = (min > a[i]) ? a[i]: min), i++);
printf ("\n Max: %d\n Min: %d\n", max, min);
return 0;
}
Использую ubuntu 14.04, gcc 4.8.
Примеры того, что получаю при запуске программы.
dima@trustme:~/amaproga$ ./stih
28 88 78 72 69 35 11 3 45 92
Max: 88
Min: -542684176
dima@trustme:~/amaproga$ ./stih
9 23 14 80 3 4 20 48 30 42
Max: 1213853936
Min: 3
dima@trustme:~/amaproga$ ./stih
68 46 77 71 51 82 62 66 55 55
Max: 1436604496
Min: 46
dima@trustme:~/amaproga$ ./stih
31 55 60 31 94 26 26 37 65 11
Max: 94
Min: -1571974768
dima@trustme:~/amaproga$ ./stih
31 55 60 31 94 26 26 37 65 11
Max: 94
Min: -1921410176
dima@trustme:~/amaproga$ ./stih
37 51 51 96 23 89 31 2 53 3
Max: 96
Min: -1506582624
Объясните, пожалуйста, в чём проблема. И, если возможно, подскажите как исправить. Заранее спасибо.