Koledzy pokazali Ci elementarne błędy. Ja zaproponuję dalszy tok...
Masz błąd koncepcyjny. Określenie wartości min i max można wykonać w 1 przebiegu pętli. Zbędne są 2 przebiegi.
Przed wykonaniem pętli wartość min powinna wynosić maksymalną wartość int którą pobierzesz z <limits.h> ( będzie to INT_MAX) a wartość max powinna wynosić minimalną wartość dla typu int (INT_MIN).
Typem indeksu powinien być size_t.
Poprawna sygnatura funkcji main(...) to: int main(void)
Pierwsza poprawka:
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
int main(void)
{
int tab[15];
size_t i;
int max = INT_MIN;
int min = INT_MAX;
printf("Witam. Wczytaj 15 roznych liczb do tablicy.\n");
printf("Kontynuuj ENTEREM\n");
for (i = 0; i < 15; ++i)
{
printf("Podaj %zu liczbe do tablicy: ", i + 1);
scanf("%d", &tab[i]);
}
for (i = 0; i < 15; ++i)
{
if (tab[i] < min)
{
min = tab[i];
}
if(tab[i] > max)
{
max = tab[i];
}
}
printf("Element minimalny to: %d\n", min);
printf("Element maksymalny to: %d\n", max);
return 0;
}
Bardziej ogólne podejście do problemu to:
1. Wczytaj dane do tablicy.
2. Znajdź wartość minimalną i maksymalną.
3. Wypisz wartość minimalną i maksymalną.
Podział na funkcje:
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
int max = INT_MIN;
int min = INT_MAX;
void read_values(int * tab, size_t size)
{
size_t i;
printf("Witam. Wczytaj 15 roznych liczb do tablicy.\n");
printf("Kontynuuj ENTEREM\n");
for (i = 0; i < size; ++i)
{
printf("Podaj %zu liczbe do tablicy: ", i + 1);
scanf("%d", &tab[i]);
}
}
void min_max(int * tab, size_t size)
{
size_t i;
for (i = 0; i < size; ++i)
{
if (tab[i] < min)
{
min = tab[i];
}
if(tab[i] > max)
{
max = tab[i];
}
}
}
void show_result(void)
{
printf("Element minimalny to: %d\n", min);
printf("Element maksymalny to: %d\n", max);
}
int main(void)
{
int tab[15];
read_values(tab, 15);
min_max(tab, 15);
show_result();
return 0;
}
Sukces (czyli wszystko poszło dobrze) z main(..), jest wartość EXIT_SUCCESS z <stdlib.h>.
Wartość minimalna i maksymalna z tablicy to para wartości. Można zrobić z tego strukturę.
Do wyświetlenia wartości, można przekazać strukturę.
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <stdlib.h>
typedef struct {
int min_value;
int max_value;
} min_max_t;
void read_values(int * tab, size_t size)
{
size_t i;
printf("Witam. Wczytaj %zu roznych liczb do tablicy.\n", size);
printf("Kontynuuj ENTEREM\n");
for (i = 0; i < size; ++i)
{
printf("Podaj %zu liczbe do tablicy: ", i + 1);
scanf("%d", &tab[i]);
}
}
min_max_t min_max(int * tab, size_t size)
{
int max = INT_MIN;
int min = INT_MAX;
size_t i;
for (i = 0; i < size; ++i)
{
if (tab[i] < min)
{
min = tab[i];
}
if(tab[i] > max)
{
max = tab[i];
}
}
min_max_t result = {min, max};
return result;
}
void show_result(min_max_t value)
{
printf("Element minimalny to: %d\n", value.min_value);
printf("Element maksymalny to: %d\n", value.max_value);
}
int main(void)
{
int tab[15];
read_values(tab, 15);
min_max_t result = min_max(tab, 15);
show_result(result);
return EXIT_SUCCESS;
}
W kodzie powtarza się "magiczna wartość" 15. Należy ją zdefiniować do ponownego użycia. Konserwatywnym rozwiązaniem jest #define:
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <stdlib.h>
#define NUM_ELEMENTS 15
typedef struct {
int min_value;
int max_value;
} min_max_t;
void read_values(int * tab, size_t size)
{
size_t i;
printf("Witam. Wczytaj %zu roznych liczb do tablicy.\n", size);
printf("Kontynuuj ENTEREM\n");
for (i = 0; i < size; ++i)
{
printf("Podaj %zu liczbe do tablicy: ", i + 1);
scanf("%d", &tab[i]);
}
}
min_max_t min_max(int * tab, size_t size)
{
int max = INT_MIN;
int min = INT_MAX;
size_t i;
for (i = 0; i < size; ++i)
{
if (tab[i] < min)
{
min = tab[i];
}
if(tab[i] > max)
{
max = tab[i];
}
}
min_max_t result = {min, max};
return result;
}
void show_result(min_max_t value)
{
printf("Element minimalny to: %d\n", value.min_value);
printf("Element maksymalny to: %d\n", value.max_value);
}
int main(void)
{
int tab[NUM_ELEMENTS];
read_values(tab, NUM_ELEMENTS);
min_max_t result = min_max(tab, NUM_ELEMENTS);
show_result(result);
return EXIT_SUCCESS;
}