Witam! Mam problem z sortowaniem przez wybieranie, otóż program nie sortuje liczb.
#define SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int *alokuj(int ilosc) //Funckja alkouje dynamicznie pamięć
{
int *tablica = (int *)malloc(ilosc*sizeof(int));
return tablica;
}
void wczytaj(int ilosc, int *tablica)
{
int i;
for (i = 0; i < ilosc; i++)
scanf("%i", &tablica[i]);
}
int maxind(int ilosc, int *tablica) //Funckja zwraca indeks największego elementu
{
int k = NULL, i;
for (i = 1; i < ilosc; i++)
{
if (tablica[i]>tablica[k]) k = i;
}
return k;
}
void sort(int ilosc, int *tablica) //Funkcja sortuje przez wybieranie
{
int k, i, x;
for (i = 0; i < ilosc-1; i++)
{
k = maxind(ilosc - 1, tablica);
x = tablica[ilosc - i - 1];
tablica[ilosc - i - 1] = tablica[k];
tablica[k] = x;
}
}
void wypisz(int ilosc, int *tablica)
{
for (int i = 0; i < ilosc; i++)
printf("%i\n", tablica[i]);
}
void main()
{
unsigned int n = NULL;
int *liczby;
char q;
printf("Ile liczby chcesz podac?: "); scanf("%i", &n);
liczby = alokuj(n);
printf("Podaj %i liczb:\n", n);
wczytaj(n, liczby);
sort(n, liczby);
printf("\nPosortowane elementy tablicy:\n");
wypisz(n, liczby);
system("pause");
}