Zadaniepobieranie
ZADANIE: Napisz w języku C program, który pobiera od użytkownika 20 liczb zapisując je do tablicy. Następnie jedną połowę tablicy przekazuje do posortowania jednej procedurze, potem drugą połowę – drugiej procedurze (w rzeczywistości może to być ta sama procedura dla obu połówek tablicy – trzeba jedynie pamiętać o odpowiednich parametrach przekazywanych do procedury podczas jej wywołania). Po posortowaniu dowolną metodą połówek tablicy wyświetl je i przekaż do ostatniej procedury, która dokona scalenia tablicy w jedną, posortowaną całość. Wyświetl rezultat końcowy.Wskazówki:
Ostatni etap sortowania opisany powyżej występuje w informatyce pod nazwą „scalanie” lub „merge”. W związku z tym, że obie połówki mogą być sortowane niezależnie, powyższy problem nadaje się idealnie do zrównoleglenia (co będzie tematem kolejnych zajęć laboratoryjnych). Do sortowania obu połówek można wykorzystać dowolną z metod, np. QuickSort, InsertionSort, BubbleSort, itp..
#include <stdio.h>
int sortowanie (int tablica[], int pocz, int kon)
{
int i,a,tmp;
for ( i = pocz; i < kon; i++ )
for ( a = pocz; a < kon; a++ )
if ( tablica[a] > tablica[a+1] )
{
tmp = tablica[a];
tablica[a] = tablica[a+1];
tablica[a+1] = tmp;
}
}
int wyswietl (int tablica[], int pocz, int kon)
{
int a;
for (a = pocz; a < kon; a++)
{
printf("%d, ", tablica[a]);
}
printf("n");
}
int main()
{
int tablica[20], a, i;
printf("Podaj dwadzieścia różnych liczbnn");
for (a = 0; a < 20; a++)
{
printf("Podaj liczbę numer %d :", a);
scanf("%d", &i);
tablica[a] = i;
system("cls");
}
printf("Wprowadzono dwadzieścia liczbnn");
printf("nLiczby przed sortowaniem to :nn");
wyswietl (tablica, 0, 20);
printf("n");
sortowanie (tablica, 0, (0+20)/2);
sortowanie (tablica, ((0+20)/2)+1, 20);
printf("Liczby po sortowaniu to :nn");
printf("Pierwsza połówka tablicy to :nn");
wyswietl (tablica, 0, (0+20)/2);
printf("n");
printf("nDruga połówka tablicy to :nn");
wyswietl (tablica, ((0+20)/2)+1, 20);
system("PAUSE");
return 0;
}