problem z sortowaniem prostym C

0

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); 
   }
}
0
  1. pierwsze słyszę o sortowaniu metodą karcianą i prostą
  2. nikt ci nie poprawi kodu, jeżeli masz jakiś problem to o niego pytaj, a nie marnuj czasu innych
0

W funkcji sort_pro() zamiast

for(i=0;i>=n-1;i++)

powinno być for(i=0;i<n-1;i++)

1 użytkowników online, w tym zalogowanych: 0, gości: 1