Husja Opublikowano 27 Listopada 2004 Zgłoś Opublikowano 27 Listopada 2004 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] Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Polar Opublikowano 27 Listopada 2004 Zgłoś Opublikowano 27 Listopada 2004 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] Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Husja Opublikowano 28 Listopada 2004 Zgłoś Opublikowano 28 Listopada 2004 Dzienkuje za wszelka pomoc :D, program juz dziala :))))))) hihihii Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Polar Opublikowano 29 Listopada 2004 Zgłoś Opublikowano 29 Listopada 2004 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] Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...