Sortowanie tablicy z losowymi elementami

0

Dlaczego mi się to nie sortuje?

#include <stdio.h>
#include <stdlib.h>
#define swap
#define ROZMIAR 10

void wyswietl_tablica (int *tab)
{
    srand(time(NULL));
    int i;
    for(i=0;i<ROZMIAR;i++)
    {
        tab[i]=0+rand()%20;
        printf("A[%d]= %d\n",i,tab[i]);
    }
}

void sortuj(int tab[])
{
   int i,j;
   for(i=0; i<ROZMIAR-1; i++)
   {
    int min = i;
    for(j = i+1; j<ROZMIAR;j++)
        if(tab[min]>tab[j])
        min=j;
    if(min!=i)
        swap(&tab[min],&tab[i]);
   }
   return;
}
 
int main()
{
    int tablica[ROZMIAR];
    wyswietl_tablica(tablica);
    printf("Posortowana tablica: \n");
    sortuj(tablica);
    wyswietl_tablica(tablica);
    return 0;
}
0
Jakub Wrona napisał(a):

Dlaczego mi się to nie sortuje?

#define swap
//...
        swap(&tab[min],&tab[i]);

łoł, to się w ogóle kompiluje? Chyba definicji swap brakuje?

0
KamilAdam napisał(a):
Jakub Wrona napisał(a):

Dlaczego mi się to nie sortuje?

#define swap
//...
        swap(&tab[min],&tab[i]);

łoł, to się w ogóle kompiluje? Chyba definicji swap brakuje?
Teraz mi wyskakuje jakiś error nie mam pojęcia czemu

#include <stdio.h>
#include <stdlib.h>
#define ROZMIAR 10

void wyswietl_tablica (int *tab)
{
    srand(time(NULL));
    int i;
    for(i=0;i<ROZMIAR;i++)
    {
        tab[i]=0+rand()%20;
        printf("A[%d]= %d\n",i,tab[i]);
    }
    return;
}
void swap(int *first,int *second)
{
    int schowek;
    schowek = *first;
    *first = *second;
    *second = schowek;
    return;
}
void sortuj(int *tab)
{
   int i,j;
   for(i=0; i<ROZMIAR-1; i++)
   {
    int min = i;
    for(j = i+1; j<ROZMIAR;j++)
        if(tab[min]>tab[j])
        min=j;
    if(min!=i)
        swap(&tab[min],&tab[i]);
   }
   return;
}

int main()
{
    int tablica[ROZMIAR];
    wyswietl_tablica(tablica);
    printf("Posortowana tablica: \n");
    sortuj(tablica);
    wyswietl_tablica(tablica);
    return 0;
}
1

No to usuń tą linię

#define swap
0

Ktoś coś?

2
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define TableSize 10

void show_table(int tab[],int size)
{ // od 12 lat można deklarować `i` wewnątrz for, http://forum.4programmers.net/1101404
    for(int i=0;i<size;++i) printf("%s%d",","+!i,tab[i]); // ","+!i - wypisanie przecinka ale nie przed pierwszą liczbą
    printf("\n");
}

void rand_table(int tab[],int size)
{
    for(int i=0;i<size;++i) tab[i]=0+rand()%21; // do 20 więc %21
}

void swap(int *a,int *b)
{
    int tmp=*a; *a=*b; *b=tmp;
}

void sort_table(int tab[],int size)
{
	for(int i=1;i<size;++i)
	{
		int min=i-1;
    	for(int j=i;j<size;++j) if(tab[min]>tab[j]) min=j;
        swap(&tab[min],&tab[i-1]); // niech sobie sama z sobą swapuje
   }
   return;
}

int main()
{
    srand(time(NULL)); // tylko raz na początku programu.
    int tab[TableSize];
    int size=sizeof(tab)/sizeof(*tab);
    rand_table(tab,size);
    printf("Wypelniona tablica:\n");
    show_table(tab,size);
    sort_table(tab,size);
    printf("Posortowana tablica:\n"); // po kiego ci ta spacja po dwukropku?
    show_table(tab,size);
    return 0;
}
1

Ty to do szkoły potrzebujesz?

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