Darmowe Forum
Grudzieñ 22, 2024, 02:02:39 *
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 7792 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

mylittlepony articz moikrewni spw blackmoon