Darmowe Forum
Kwiecień 16, 2025, 06:54:52 *
Witamy, Gość. Zaloguj się lub zarejestruj.
Czy dotarł do Ciebie email aktywacyjny?

Zaloguj się podając nazwę użytkownika, hasło i długość sesji
Aktualności: Forum zostaÂło uruchomione!
 
   Strona główna   Pomoc Zaloguj się Rejestracja  
Strony: [1]
  Drukuj  
Autor Wątek: Sortowanie - podstawa zarzÂądzania baz danych  (Przeczytany 8319 razy)
admin
Administrator
Ekspert
*****
Wiadomości: 821


Email
« : Listopad 17, 2010, 08:23:12 »

Sortowanie ma za zadanie uporz¹dkowanie zbioru danych wed³ug zadanego kryterium. Zadane kryterium sortowania mo¿e byÌ wartoœÌ liczby, pierwsza litera umieszczonego s³owa, d³ugoœÌ s³owa.
Uwaga nieuporzÂądkowana tablica nie pozwoli lub znacznie wydÂłuÂży wykonanie funkcji wyboru. Czyli np. na zrealizowanie polecenia wybrania z grupy osĂłb o imieniu "ÂŁukasz".
« Ostatnia zmiana: Listopad 24, 2010, 08:17:42 wysłane przez admin » Zapisane
admin
Administrator
Ekspert
*****
Wiadomości: 821


Email
« Odpowiedz #1 : Listopad 17, 2010, 08:26:27 »

Zadanie 1. Proszê utworzyÌ dwie tablice o dwuelementowe o nazwach A i B. Do pierwszej proszê wpisaÌ z klawiatury dwie dowolne liczby. Do drugiej tablicy liczby powinny byÌ automatycznie przepisane z tablicy A w porz¹dku rosn¹cym. WyœwietliÌ zawartoœÌ obu tablic na ekranie.

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{ int A[2],B[2];
int a,b,c;
for(a=0;a<=1;a++){
cout<<"Podaj "<<a+1<<" element tablcy A: "; cin>>A[a];}
if (A[1]<A[0]){B[0]=A[1];B[1]=A[0];} else {B[0]=A[0];B[1]=A[1];}
for(a=0;a<=1;a++){cout.width(3); cout<<A[a];}
cout<<endl;
for(a=0;a<=1;a++){cout.width(3); cout<<B[a];}   
cout<<endl;   
   
   
    system("PAUSE");
    return EXIT_SUCCESS;
}
« Ostatnia zmiana: Listopad 17, 2010, 09:20:04 wysłane przez admin » Zapisane
admin
Administrator
Ekspert
*****
Wiadomości: 821


Email
« Odpowiedz #2 : Listopad 17, 2010, 09:09:10 »

Zadanie 2. Proszê utworzyÌ dwie tablice pozwalaj¹ce na wprowadzenie trzech zmiennych o nazwach A i B. Do pierwszej proszê wpisaÌ z klawiatury trzy dowolne liczby. Do drugiej tablicy liczby powinny byÌ automatycznie przepisane z tablicy A w porz¹dku rosn¹cym. WyœwietliÌ zawartoœÌ obu tablic na ekranie.


#include <cstdlib>
#include <iostream>

using namespace std;
int main(int argc, char *argv[])
{int z[3],b[3];
for (int c=0;c<3;c++){
    cout<<"Podaj "<<c+1<<" wartoÂśc : ";cin>>z[c];}

if ((z[2]<=z[1]) &&(z[2]<=z[0])) {b[0]=z[2];
if (z[1]<=z[0]){b[1]=z[1];b[2]=z[0];}
else{b[1]=z[0]; b[2]=z[1];}}
else
if ((z[0]<=z[1]) &&(z[0]<=z[2])) {b[0]=z[0];
if (z[1]<=z[2]){b[1]=z[1];b[2]=z[2];} else{b[1]=z[2];b[2]=z[1];}}
else
if ((z[1]<=z[0]) &&(z[1]<=z[2])) {b[0]=z[1];
if (z[2]<=z[0]){b[1]=z[2];b[2]=z[0];} else{b[1]=z[0];b[2]=z[2];}};
 for(int c=0;c<=2;c++)
 {cout.width(4);cout<<z[c];}
 cout<<endl;
for(int d=0; d<=2;d++){cout.width(4);cout<<b[d];}   
    cout<<endl;
   
    system("PAUSE");
    return EXIT_SUCCESS;
}
« Ostatnia zmiana: Listopad 17, 2010, 10:30:28 wysłane przez admin » Zapisane
admin
Administrator
Ekspert
*****
Wiadomości: 821


Email
« Odpowiedz #3 : Listopad 17, 2010, 11:01:43 »

Przedstawione powyÂżej algorytmy sortowania sÂą skuteczne tylko dla niewielkiej liczby danych w tablicy. PowyÂżej trzech elementĂłw tworzenie "drabinki if...if...if " wprowadza powaÂżny chaos. Dlatego opracowano pewne techniki pozwalajÂące na uporzÂądkowanie zmiennych bez absorbowania zbyt duÂżej liczby zmiennych.
Pierwszym omawianym algorytmem sortowania jest algorytm sortowania bÂąbelkowego.
Algorytm sortowania b¹belkowego polega na porównywaniu par elementów le¿¹cych obok siebie i, jeœli jest to potrzebne, zmienianiu ich kolejnoœci.
Czyli w pierwszym przebiegu porĂłwnujemy (i ewentualnie zamieniamy):

    1 - Element pierwszy i drugi
    2 Element drugi i trzeci
     ...
    n-ty  Element (n-1)-wszy i n-ty

KaÂżdy element jest tak dÂługo przesuwany w ciÂągu, aÂż napotkany zostanie element mniejszy od niego, wtedy w nastĂŞpnych krokach przesuwany jest ten mniejszy element.
« Ostatnia zmiana: Listopad 24, 2010, 08:18:16 wysłane przez admin » Zapisane
admin
Administrator
Ekspert
*****
Wiadomości: 821


Email
« Odpowiedz #4 : Listopad 17, 2010, 12:50:38 »

Zadanie 3. ProszĂŞ wprowadziĂŚ do tablicy trzy liczby i nastĂŞpnie posortowaĂŚ je w porzÂądku rosnÂącym.WykorzystaĂŚ algorytm sortowania bÂąbelkowego

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{int a[3],b[3];
int r,y,z;
for(r=0;r<3;r++)
{cout<<"Podaj liczbĂŞ :";cin>>a[r];b[r]=a[r];  }

for(r=0;r<2;r++){
for(y=2;y>r;y--){
if(a[y]<a[y-1]){z=a[y];a[y]=a[y-1];a[y-1]=z;}                 
}}

for(r=0;r<3;r++)
{cout.width(4);cout<<a[r];}   
     
   cout<<endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}
« Ostatnia zmiana: Listopad 17, 2010, 12:53:25 wysłane przez admin » Zapisane
admin
Administrator
Ekspert
*****
Wiadomości: 821


Email
« Odpowiedz #5 : Listopad 17, 2010, 13:13:55 »

Zadanie 4. ProszĂŞ wprowadziĂŚ do tablicy piĂŞĂŚ liczb i nastĂŞpnie posortowaĂŚ je w porzÂądku rosnÂącym.WykorzystaĂŚ algorytm sortowania bÂąbelkowego
Zapisane
admin
Administrator
Ekspert
*****
Wiadomości: 821


Email
« Odpowiedz #6 : Listopad 17, 2010, 13:15:24 »

Zadanie 5. NapisaĂŚ program wprowadzajÂący do tablicy dane i sortujÂący tablicĂŞ o dowolnym wymiarze. WykorzystaĂŚ algorytm sortowania bÂąbelkowego
Zapisane
admin
Administrator
Ekspert
*****
Wiadomości: 821


Email
« Odpowiedz #7 : Listopad 24, 2010, 08:30:16 »

Sortowanie korzystajÂące z algorytmu : dziel i zwyciĂŞÂżaj.  Uwaga Opisywana jest metoda ktĂłra w koĂącowej fazie wprowadza scalanie.

Ten sposób sortowania polega na dzieleniu zbiór danych na coraz mniejsze czêœci i rozwi¹zywaniu problemów lokalnych. Jest to trochê niefortunne t³umaczenie algorytmu, bo moim zdaniem algorytm powinien nazywaÌ siê: dziel-rozwi¹¿-po³¹cz.
Przedstawiany algorytm dziel i zwyciĂŞÂżaj wyglÂąda nastĂŞpujÂąco:
- Dziel- dzielimy ciÂąg na dwa i te dwie czĂŞÂści jeszcze na dwie itd, do chwili uzyskania moÂżliwoÂści prostego sortowania
- ZwycieÂżaj - porzÂądkuje utworzone przez dzielenie krĂłtkie zbiory danych
- Po³¹cz- ³¹czy uporzÂądkowane ciÂągi w jednÂą caÂłoœÌ. 
« Ostatnia zmiana: Grudzień 14, 2010, 17:16:07 wysłane przez admin » Zapisane
admin
Administrator
Ekspert
*****
Wiadomości: 821


Email
« Odpowiedz #8 : Listopad 24, 2010, 09:43:32 »

InnÂą metodÂą sortowania jest metoda sortowania nazywana szybkÂą. Polega one na wybraniu liczby (tzw. elementu osiowego) ze zbioru  i przerzuceniu liczb mniejszych od wartoÂści elementu osiowego na jego lewÂą stronĂŞ,  a wiĂŞkszych elementĂłw na prawÂą.
Zapisane
admin
Administrator
Ekspert
*****
Wiadomości: 821


Email
« Odpowiedz #9 : Marzec 09, 2011, 08:35:23 »

WywoÂłanie funkcji pseudo losowej wersja1 .

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{int a[5]; int z;
srand(time(NULL));
for(int z=0;z<5;z++){
a[z]=1+rand()%100;};

for(int c=0;c<10,c++;){cout<<a[c]<<endl;};
    system("PAUSE");
    return EXIT_SUCCESS;
}
« Ostatnia zmiana: Marzec 09, 2011, 09:36:53 wysłane przez admin » Zapisane
admin
Administrator
Ekspert
*****
Wiadomości: 821


Email
« Odpowiedz #10 : Marzec 09, 2011, 09:06:29 »

Zadanie. Program wpisujÂący do tablicy 5 liczb pseudolosowych. W tablicy liczby sÂą sortowane rosnÂąco i wyÂświetlane na ekranie

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{int a[5]; int z1;
//losowanie
srand(time(NULL));
for(int z=0;z<5;z++){
a[z]=1+rand()%100;};
//wyÂświetlanie
for(z1=0;z1<5;z1++){cout<<a[z1]<<endl;};
cout<<endl;
//sortowanie
for(int s=0;s<5;s++){
for(int y=4;y>=s;y--)
{
if(a[y]<a[y-1]){z1=a[y];a[y]=a[y-1];a[y-1]=z1;}                 
}}

//wyÂświetlanie
for(z1=0;z1<5;z1++){cout<<a[z1]<<endl;};
    system("PAUSE");
    return EXIT_SUCCESS;
}
Zapisane
admin
Administrator
Ekspert
*****
Wiadomości: 821


Email
« Odpowiedz #11 : Marzec 09, 2011, 09:44:28 »

Zadanie Adam P _v1. Podobnie jak w poprzednim zadaniu lecz program wykorzystuje funkcje.

#include <cstdlib>
#include <iostream>

using namespace std;
int a[5]; int z1;

void los(int d[5])
{srand(time(NULL));
for(int z=0;z<5;z++){
a[z]=1+rand()%100;}};

void wysw(int d[5])
{for(z1=0;z1<5;z1++){cout<<a[z1]<<endl;}};
 
void sort(int d[5]){
for(int s=0;s<5;s++){
for(int y=4;y>=s;y--)
{
if(a[y]<a[y-1]){z1=a[y];a[y]=a[y-1];a[y-1]=z1;}                 
}};}

int main(int argc, char *argv[])
{
los(a);
wysw(a);
sort(a);
wysw(a);

  system("PAUSE");
    return EXIT_SUCCESS;
}
Zapisane
admin
Administrator
Ekspert
*****
Wiadomości: 821


Email
« Odpowiedz #12 : Marzec 09, 2011, 09:55:07 »

Zadanie Adam P _v2. Podobnie jak w poprzednim zadaniu lecz program wykorzystuje funkcje dodatkowo uporzÂądkowano sprawĂŞ zmiennych.

#include <cstdlib>
#include <iostream>

using namespace std;


void los(int d[5])
{srand(time(NULL));
for(int z=0;z<5;z++){
d[z]=1+rand()%100;}};

void wysw(int d[5])
{for(int z1=0;z1<5;z1++){cout<<d[z1]<<endl;}};
 
void sort(int d[5]){
for(int s=0;s<5;s++){
for(int y=4;y>=s;y--)
{
if(d[y]<d[y-1]){int z1=d[y];d[y]=d[y-1];d[y-1]=z1;}                 
}};}

int main(int argc, char *argv[])
{int a[5];
los(a);
wysw(a);
sort(a);
wysw(a);

  system("PAUSE");
    return EXIT_SUCCESS;
}
Zapisane
admin
Administrator
Ekspert
*****
Wiadomości: 821


Email
« Odpowiedz #13 : Marzec 09, 2011, 10:13:40 »

Zadanie 1. NapisaĂŚ program ktĂłry do tablicy 10 elementowej wpisze 10 losowych liczb z zakresu od 6 do 18. NastĂŞpnie posortuje je rosnÂąco.

include <cstdlib>
#include <iostream>

using namespace std;


void los(int d[5])
{srand(time(NULL));
for(int z=0;z<5;z++){
d[z]=6+rand()%12;}};

void wysw(int d[5])
{for(int z1=0;z1<5;z1++){cout<<d[z1]<<endl;}};
 
void sort(int d[5]){
for(int s=0;s<5;s++){
for(int y=4;y>=s;y--)
{
if(d[y]<d[y-1]){int z1=d[y];d[y]=d[y-1];d[y-1]=z1;}                 
}};}

int main(int argc, char *argv[])
{int a[5];
los(a);
wysw(a);
sort(a);
wysw(a);

  system("PAUSE");
    return EXIT_SUCCESS;
}
Zadanie 2. Podobnie jak poprzednie zadanie, ale wpisane do tablicy liczby nie mogÂą siĂŞ powtarzaĂŚ.
#include <cstdlib>
#include <iostream>

using namespace std;


void los(int d[10])
{srand(time(NULL)); int w[19]; for(int r=0;r<19;r++){w[r]=0;}
for(int z=0;z<10;){
int n=6+rand()%12;
if (w[n]==0){d[z]=n;z++;w[n]=1;}       
        }};

void wysw(int d[10])
{for(int z1=0;z1<10;z1++){cout<<d[z1]<<endl;}};
 
void sort(int d[10]){
for(int s=0;s<10;s++){
for(int y=9;y>=s;y--)
{
if(d[y]>d[y-1]){int z1=d[y];d[y]=d[y-1];d[y-1]=z1;}                 
}};}

int main(int argc, char *argv[])
{int a[10];
los(a);
wysw(a); cout<<endl<<endl;
sort(a);
wysw(a);

  system("PAUSE");
    return EXIT_SUCCESS;
}






Zadanie 3. Podobnie jak w zadaniu 2, tylko sortowanie od najwiĂŞkszej do najmniejszej.

Zadanie 4. Podobnie jak w zadaniu 3 , ale w funkcji g³ównej (main{}) wpisano tylko wywo³anie funkcji zewnêtrznych.
« Ostatnia zmiana: Marzec 09, 2011, 12:42:47 wysłane przez admin » Zapisane
admin
Administrator
Ekspert
*****
Wiadomości: 821


Email
« Odpowiedz #14 : Marzec 16, 2011, 08:42:31 »

Zadanie 7. NapisaĂŚ program ktĂłry losuje liczby od 0 do 50 i wyÂświetla je na ekranie. JeÂżeli wylosowana zostanie liczba= 5 to losowanie zostaje zatrzymane. StworzyĂŚ wÂłasnÂą funkcjĂŞ losowania.

#include <cstdlib>
#include <iostream>

using namespace std;
void los(void)
{srand(time(NULL));int n;int b;
for (b=1;
{n=rand()%51;
cout.width(4);cout<<n;
if (n==5){break;}
};cout<<endl;};
int main(int argc, char *argv[])
{los();
    system("PAUSE");
    return EXIT_SUCCESS;
}
Zapisane
Strony: [1]
  Drukuj  
 
Skocz do:  

Powered by SMF 1.1.11 | SMF © 2006-2008, Simple Machines LLC | Sitemap

Polityka cookies
Darmowe Fora | Darmowe Forum

proskills polski-serwer-rpg gang-nd mylittlepony shaggydogss