Rozwiązane

ZADANIE 8 Napisz program, który sortuje n liczb wczytanych z klawiatury. (C++)

Powinien on zawierać trzy bezparametrowe funkcje: czytaj_dane(), przetworz_dane() i wyświetl_wynik().

Funkcja czytaj_dane() czyta dane wprowadzone z klawiatury i umieszcza je w tablicy o nazwie liczby.

Funkcja przetworz_dane() sortuje je według wybranego algorytmu (np. algorytmem bąbelkowym).

Funkcja wyświetl_wynik() prezentuje natomiast zawartość posortowanej tablicy liczby na ekranie monitora.

Proszę o pomoc i wytłumaczenie, byłbym wdzięczny



Odpowiedź :

Odpowiedź:

komentarz i wyjaśnienie działania programu znajduje się bezpośrednio w kodzie w formie komentarzy, jest on również w załączniku, jakby tu rozjechało się formatowanie

kod:

#include <iostream>

using namespace std;

int* liczby;//wskaźnik na tablicę poza mainem, bo z jakiegoś powodu

           //funkcje nie mogą przyjmować argumentów

int n;      //tak samo n

void czytaj_dane(){

   cout<<"podaj ile liczb wczytac: ";

   cin>>n; //przed utworzeniem tablicy musimy znać jej rozmiar

           //jako, że nie znamy rozmiaru tablicy przed rozpoczęciem programu

           //musimy użyć tablicy dynamicznej i nie zapomnieć jej potem usunąć

   liczby = new int[n]; //towrzenie dynamicznej tablicy o podanym rozmiarze

   for(int i=0;i<n;i++){ //pętla do wczytywania kolejnych liczb

       cin>>liczby[i];

   }

}

void przetworz_dane(){

   //algorytm sortowania bąbelkowego

   for (int i=0;i<n-1;i++)    

       for (int j=0;j<n-i-1;j++)

           if (liczby[j]>liczby[j+1]){

               int temp = liczby[j]; //tworzenie tymczasowej zmiennej do

               liczby[j]=liczby[j+1];//przechowania wartosci liczby[j]

               liczby[j+1]=temp;

           }

}

void wyswietl_wynik(){

   for (int i=0;i<n;i++)

       cout<<liczby[i]<<(i+1<n ? ", " : ""); //wyswietlanie w petli kolejnych

                                             //liczb z przecinkami miedzy nimi

}

int main()

{

   //wlaczenie kolejnych funkcji

   czytaj_dane();    //czytaj_dane() - pobiera ile liczb wczytac, tworzy tablice

                     //dynamiczna, po czym wczytuje do niej kolejne liczby

   przetworz_dane(); //jest to implementacja najzwyklejszego algorytmu sortowania

                     //bąbelkowego

   wyswietl_wynik(); //najzwyklejsza pętla wyświetlająca wynik

   delete[] liczby;  //usuwanie dynamicznej tablicy liczby[]

   return 0;

}

Zobacz obrazek Eew91640
Zobacz obrazek Eew91640