Witam,
mam do napisania program do sortowania liczb metoda babelkowa, karciana i prosta. I tutaj wlasnie mam problem z sortowaniem prostym.Program kompiluje sie prawidlowo jednak niedziala to sortowanie. Moglby mi ktos poprawic kod?
#include <stdio.h>
#include <stdlib.h>
void recznie(int tabin[], int n);
void losowo(int tabin[], int n);
void sort_b(int tabout[], int n);
void sort_k(int tabout[], int n);
void sort_pro(int tabout[], int n);
int main(void)
{
int i, n, w;
int tabin[100], tabout[100];
char c;
do
{
w = 0;
printf("Podaj, ile liczb chcesz wprowadzic (maks. 100):\nn=");
scanf("%d", &n);
printf("Wybierz metode wprowadzenia %d liczb (r- recznie, l - losowo):\n", n);
c = getch();
switch(c)
{
case 'r': case 'R':
recznie(tabin, n);
break;
case 'l': case 'L':
losowo(tabin, n);
break;
default:
w = 1;
system("cls");
break;
}
}while(w);
printf("\n\n");
for(i=0; i<n; i++)
tabout[i] = tabin[i]; //przepisanie tablicy tabin do tablicy tabout
do
{
w = 0;
printf("Wybierz metode sortowania ciagu (b - sortowanie babelkowe, k - sortowanie karciane, p - sortowanie proste ):\n");
c = getch();
switch(c)
{
case 'b': case 'B':
sort_b(tabout, n);
break;
case 'k': case 'K':
sort_k(tabout, n);
break;
case 'p': case 'P':
sort_pro(tabout, n);
break;
default:
w = 1;
system("cls");
break;
}
}while(w);
system("cls");
printf("Ciag wprowadzony:\n");
for(i=0; i<n; i++)
printf("%d\t", tabin[i]);
printf("\n\n");
printf("Ciag posortowany:\n");
for(i=0; i<n; i++)
printf("%d\t", tabout[i]);
printf("\n\n");
return 0;
}
void recznie(int tabin[], int n)
{
int i;
system("cls");
for(i=0; i<n; i++)
{
printf("a%d = ", i+1);
scanf("%d", &tabin[i]);
}
}
void losowo(int tabin[], int n)
{
int i;
system("cls");
srand(time(0));
for(i=0; i<n; i++)
{
tabin[i] = rand();
}
}
void sort_b(int tabout[], int n) //Deklaracja funkcji odpowiedzialnej za sortowanie liczb
{
int i, w, p, tmp = 0;
w=n;
do
{
p = 0;
for(i=0; i<n-1; i++)
{
if(tabout[i]>tabout[i+1])
{
tmp = tabout[i];
tabout[i] = tabout[i+1];
tabout[i+1] = tmp;
p = 1;
}
}
}while(p!=0);
}
void sort_k(int tabout[], int n)
{
int i, tmp, w;
w = n;
for(i=n; i>=2; i--)
{
if(tabout[i-1]<tabout[i-2])
{
tmp = tabout[i-1];
tabout[i-1] = tabout[i-2];
tabout[i-2] = tmp;
sort_k(tabout, n);
}
}
}
void sort_pro(int tabout[],int n)
{
int i,j=n,k,chwila;
for(i=0;i>=n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(tabout[j]<tabout[k])
k=j;
}
chwila=tabout[k];
tabout[k]=tabout[i];
tabout[i]=chwila;
sort_pro(tabout, n);
}
}