Skocz do zawartości
Husja

program w C pomocy!

Rekomendowane odpowiedzi

Hi, mam problem z programem, ktory ma sortowac liczby naturalne metoda prostego wstawiania. Napisalam to co widac ale niewyswietla mi wynikow :( Prosze o jaknajszybsza pomoc!

 

[php:1:1283b3b109]

#include <stdio.h>

#include <stdlib.h>

 

 

void SortW(int x[], int ile)

{

int i,j;

int rob;

 

for (i=1;i<ile;i++)

{

rob = x;

j = i-1;

while ((j>=0) && (x[j]>rob))

{

x[j+1] = x[j];

j--;

}

x[j+1] = rob;

}

}

 

int main (int x[])

{

int ile, i;

 

printf ("podaj ilość liczb które chcesz posortowac n");

scanf ("%d", &ile);

printf ("podaj liczby n");

for (i=1;i<ile;i++)

scanf ("%d", &x);

 

printf ("posortowane liczby: &d n", SortW);

system ("PAUSE");

return (0);

}[/php:1:1283b3b109]

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Nie bede się rozwodzić nad niektórymi zapisami w tym kodzie (jak na moje oko to nie może wypisać liczb).

Można to rozwiązać na wiele sposobów. Ja bym to zrobił tak:

 

[php:1:573528eb40]

#include <stdio.h>

#include <stdlib.h>

 

int * SortW(int x[] , int ile) ;

 

//------------------------------------------------------------------------------

int main()

{

int ile, i;

int x[1000];

 

printf ("podaj ilosc liczb które chcesz posortowac n");

scanf ("%d", &ile);

 

printf ("podaj liczby n");

for (i=1;i<ile;i++) scanf ("%d", &x);

 

int * wsk = SortW(x , ile); // *wsk jest ustawiony do tego co zwraca

// funkcja sortujaca ( na talicy )

for ( int i = 0 ; i < ile-1 ; i++ ) printf("posortowane liczby: %d n", wsk);

 

system ("nPAUSE");

return (0);

}

 

//------------------------------------------------------------------------------

 

int * SortW(int x[], int ile) // funkcja zwraca wskaznik int

{

int i,j;

int rob;

 

for (i=1;i<ile;i++)

{

rob = x;

j = i-1;

 

while ((j>=0) && (x[j]>rob))

{

x[j+1] = x[j];

j--;

}

x[j+1] = rob;

}

 

return x ; // czyli wlasciwie zwraca talice , bo nazwa tablicy

} // to wskaźnik do jej zerowego elementu

 

//------------------------------------------------------------------------------

[/php:1:573528eb40]

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Można też tak różnica jest subtelna , ale jednak nie wpływa to zupełnie na szybkość działania... :lol:

A przetestowałem to na moim sprzęcie i na int tablicy[50000], odwróconej od 49999 do 0 , czyli na maxa :twisted: i wynik to ~3 sec.

 

[php:1:e8f8089fde]

#include <stdio.h>

#include <stdlib.h>

 

void SortW(int * x , int ile) ;

 

//------------------------------------------------------------------------------

int main()

{

int ile, i;

const int rozmiar = 1000;

int x[rozmiar];

 

printf ("podaj ilosc liczb które chcesz posortowac n");

scanf ("%d", &ile);

 

printf ("podaj liczby n");

for (i=0;i<ile;i++) scanf ("%d", &x);

 

SortW(x , ile);

 

for ( int i = 0 ; i < ile ; i++ ) printf("posortowane liczby: %d n", x);

 

system ("nPAUSE");

return (0);

}

 

//------------------------------------------------------------------------------

 

void SortW(int * x, int ile)

{

int i,j;

int rob;

 

for (i=1;i<ile;i++)

{

rob = x;

j = i-1;

 

while ((j>=0) && (x[j]>rob))

{

x[j+1] = x[j];

j--;

}

x[j+1] = rob;

}

 

}

 

//------------------------------------------------------------------------------

[/php:1:e8f8089fde]

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...