algorytmy
Edytor algorytmów online: https://app.diagrams.net/
- algorytmy na liczbach całkowitych, np.:
- reprezentacja liczb w dowolnym systemie pozycyjnym, w tym w dwójkowym i szesnastkowym,
- sprawdzanie, czy liczba jest liczbą pierwszą,
- sprawdzanie, czy liczba jest liczbą doskonałą
- rozkładanie liczby na czynniki pierwsze,
- iteracyjna i rekurencyjna realizacja algorytmu Euklidesa,
- iteracyjne i rekurencyjne obliczanie wartości liczb Fibonacciego,
- wydawanie reszty metodą zachłanną
- algorytmy wyszukiwania i porządkowania (sortowania),np.:
- jednoczesne znajdowanie największego i najmniejszego elementu w zbiorze: algorytm naiwny i optymalny,
- algorytmy sortowania ciągu liczb: bąbelkowy, przez wybór, przez wstawianie liniowe lub binarne, przez scalanie, szybki, kubełkowy,
- algorytmy numeryczne, np.:
- obliczanie wartości pierwiastka kwadratowego,
- obliczanie wartości wielomianu za pomocą schematu Homera,
- zastosowania schematu Homera: reprezentacja liczb w różnych systemach liczbowych, szybkie podnoszenie do potęgi,
- wyznaczanie miejsc zerowych funkcji metodą połowienia,
- obliczanie pola obszarów zamkniętych metodą trapezów i prostokątów
- algorytmy na tekstach, np.:
- sprawdzanie, czy dany ciąg znaków tworzy palindrom, anagram,
- porządkowanie alfabetyczne, (leksykograficzne)
- wyszukiwanie wzorca w tekście,
- obliczanie wartości wyrażenia podanego w postaci odwrotnej notacji polskiej,
- algorytmy kompresji i szyfrowania, np.:
- kody znaków o zmiennej długości, np. alfabet Morse'a, kod Huffmana,
- szyfr Cezara,
- szyfr przestawieniowy,
- szyfr z kluczem jawnym (RSA),
- wykorzystanie algorytmów szyfrowania, np. w podpisie elektronicznym,
- algorytmy badające własności geometryczne, np.:
- sprawdzanie warunku trójkąta,
- badanie położenia punktów względem prostej,
- badanie przynależności punktu do odcinka,
- przecinanie się odcinków,
- przynależność punktu do obszaru,
- konstrukcje rekurencyjne: drzewo binarne, dywan Sierpińskiego, płatek Kocha;
REALIZACJE
- algorytmy na liczbach całkowitych, np.:
- reprezentacja liczb w dowolnym systemie pozycyjnym, w tym w dwójkowym i szesnastkowym,
- sprawdzanie, czy liczba jest liczbą pierwszą,
- sprawdzanie, czy liczba jest liczbą doskonałą
- rozkładanie liczby na czynniki pierwsze,
/*rozklad na czynniki */ #include <iostream> using namespace std; int main() { int a,i=2; cout << "a=" ; cin>>a; ///--- while(a>1) { while(a%i==0) { cout<<i<<"\t"; a=a/i; } i++; } ///wynik wyprowadzony jest tylko na ekran ///nie przechowuje tych danych do dalszych obliczen /// jak zrobic funkcje podpowiedz typ void return 0; }
#include <iostream> using namespace std; int _nwd(int a, int b) ///algorytm Euklidesa z dzieleniem { int reszta; while(b>0) { reszta=a%b; a=b; b=reszta; } return a; } /// START int main() { int a,b,c,dzielnik; cout<<"a="; cin>>a; cout<<"b="; cin>>b; dzielnik=_nwd(a,b); /// teraz pokaza funkcje cout << "nwd(" <<a<<","<<b<<")="<<dzielnik<< endl; return 0; } //--------------------------------------------------------------------// rnwd.cpp
#include <iostream> using namespace std; int nwdr(int a, int b) { if (a % b != 0) { //printf("%5d, %5d\n", a, b); return nwdr(b, a % b); } else return b; } int main() { int x = 3509, y = 209; cout << "nwd("<<x<<","<<y<<")="<<nwdr(x, y) << endl; }
- iteracyjne i rekurencyjne obliczanie wartości liczb Fibonacciego,
- wydawanie reszty metodą zachłanną
- algorytmy wyszukiwania i porządkowania (sortowania),np.:
- jednoczesne znajdowanie największego i najmniejszego elementu w zbiorze: algorytm naiwny i optymalny,
- algorytmy sortowania ciągu liczb: bąbelkowy, przez wybór, przez wstawianie liniowe lub binarne, przez scalanie, szybki, kubełkowy,
przezWstawianie.cpp#include <iostream> using namespace std; const int n=10; int main() { int dane[n]= {1,2,0,4,3,7,4,10,2,6}; /// wyswietlenie tablicy for(int i=0; i<n; i++) { cout<<dane[i]<<"\t"; } cout<<"\n"; int i=1; int podniesiona; for (int k=1; k<n; k++) { podniesiona=dane[k]; i=k; while(podniesiona<dane[i-1] && i>0) { dane[i]=dane[i-1]; i--; // cout<<dane[i]<<"\t"; } dane[i]=podniesiona; } for(int i=0; i<n; i++) { cout<<dane[i]<<"\t"; } cout<<"\n"; return 0; }
- algorytmy numeryczne, np.:
- obliczanie wartości pierwiastka kwadratowego,
- obliczanie wartości wielomianu za pomocą schematu Homera,
- zastosowania schematu Homera: reprezentacja liczb w różnych systemach liczbowych, szybkie podnoszenie do potęgi,
- wyznaczanie miejsc zerowych funkcji metodą połowienia,
- obliczanie pola obszarów zamkniętych metodą trapezów i prostokątów
- algorytmy na tekstach, np.:
- sprawdzanie, czy dany ciąg znaków tworzy palindrom, anagram,
- porządkowanie alfabetyczne, (leksykograficzne)
- wyszukiwanie wzorca w tekście,
- obliczanie wartości wyrażenia podanego w postaci odwrotnej notacji polskiej,
- algorytmy kompresji i szyfrowania, np.:
- kody znaków o zmiennej długości, np. alfabet Morse'a, kod Huffmana,
- szyfr Cezara,
- szyfr przestawieniowy,
- szyfr z kluczem jawnym (RSA),
- wykorzystanie algorytmów szyfrowania, np. w podpisie elektronicznym,
- algorytmy badające własności geometryczne, np.:
- sprawdzanie warunku trójkąta,
- badanie położenia punktów względem prostej,
- badanie przynależności punktu do odcinka,
- przecinanie się odcinków,
- przynależność punktu do obszaru,
- konstrukcje rekurencyjne: drzewo binarne, dywan Sierpińskiego, płatek Kocha;
- algorytmy na liczbach całkowitych, np.: