Wrzucam kody kalkulatorów stworzone w trzech popularnych językach. Do stworzenia programu w Pascalu używałem kompilatora Turbo Pascal 7.0 (uruchamianie przez Ctrl+F9), do C++ korzystałem z Microsoft Visual Studio 2005 (F5 i potwierdzenie żeby skompilować), a kod we flashu stworzył Łukasz Jezior
Wcześniej już podałem podobny kod napisany w Code::Blocks – do zapoznania się z nim zapraszam tutaj.
Tutaj pobierzesz pliki .pas .cpp .swf i .html.
VN:F [1.9.3_1094]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.3_1094]
written by laptopik
Sortowanie jest jednym z poważnych problemów programowania w każdym języku. Obecnie średnio najwydajniejszym algorytmem sortującym jest Quicksort.
Na początek zajmiemy się jednak stworzeniem własnego algorytmu. Zasada jego działania jest prosta. Program bierze każdy element tabeli po kolei i porównuje go z każdym innym elementem w tabeli. Jeśli napotka jakikolwiek większy element niż znajdujący się na końcu tablicy, zamienia go z tym ostatnim.
-
#include <iostream>
-
-
using namespace std;
-
-
int main() {
-
// deklaracja i wypełnienie tablicy
-
int a[] = {9, 412, 22, 623, 666, 425, 248589789, 124, 4572, 148589789}; // 10 elementów
-
-
//sortowanie
-
//zaczynamy poszukiwanie największej liczby od końca tablicy, dla każdego elementu wykonujemy czynność napisaną dalej
-
//q reprezentuje indeks elementu tablicy
-
for (int q=9; q>0; q–) {
-
// q jest zmniejszane, ponieważ pomijamy w sprawdzaniu liczby które zostały określone jako największe wcześniej, q reprezentuje miejsce gdzie umieścimy największą wartość tego przebiegu
-
// zmienna "najwieksza" przechowuje indeks elementu w tablicy z największą dotychczas znalezioną wartością
-
// zakładamy od początku że jest to 0, by zacząć porównywanie od początku, to właśnie wartość znajdująca się w tym elemencie jest porównywana z każdym następnym
-
int najwieksza=0;
-
-
for(int d=0; d<=q; d++) {
-
// metoda "każda z każdą", dla danego elementu bierzemy każdy inny element tablicy, aż do q, bo w miejsce q ustawimy największą znalezioną wartość
-
if (a[d]>a[najwieksza]) najwieksza=d;
-
// jeśli dany element jest większą od obecnego zapisanego jako największy, poprawiamy indeks największej wartości
-
}
-
// bo wewnętrznym forze, podmieniamy największą znalezioną wartość z ostatnim elementem danego przebiegu (q)
-
int s = a[q];
-
a[q]=a[najwieksza];
-
a[najwieksza] = s;
-
}
-
-
//sprawdzenie
-
// wyrzucamy na wyjście uporządkowane już elementy tablicy
-
for(int n=0; i<10; i++) cout<<a[n]<<endl;
-
-
}
A teraz najszybszy algorytm Quicksort:
Jako argumenty przyjmuje on tablicę, indeks pierwszego elementu oraz indeks ostatniego elementu:
-
void quickSort(int arr[], int left, int right) {
-
int i = left, j = right;
-
int tmp;
-
int pivot = arr[(left + right) / 2];
-
-
/* partition */
-
while (i <= j) {
-
while (arr[i] < pivot) i++;
-
while (arr[j] > pivot) j–;
-
if (i <= j) {
-
tmp = arr[i];
-
arr[i] = arr[j];
-
arr[j] = tmp;
-
i++;
-
j–;
-
}
-
};
-
-
/* recursion */
-
if (left < j) quickSort(arr, left, j);
-
if (i < right) quickSort(arr, i, right);
-
}
Szczegółowy opis algorytmu Quicksort można znaleźć tutaj.
VN:F [1.9.3_1094]
Rating: 7.5/10 (2 votes cast)
VN:F [1.9.3_1094]
written by Don Daniello
\\ tags: algorytm, c++, cpp, sortowanie
Dobre pytanie, jak na przykład napisać kalkulator w C++ ? Zacznijmy od początku
Co to C++ ?
C++, inaczej cpp to język programowania wywodzący się z bardzo starego C. Jest to prawie najwydajniejszy język programowania, posiadający zarazem największe możliwości. Oczywiście na przykład pisząc w asemblerze, otrzymamy trochę wydajniejszy program (wykonujący szybciej operacje), jednak napisanie go zajmie dużo więcej czasu. Z drugiej skrajności, pisząc na przykład w Visual Basicu otrzymamy mniej wydajny program, jednak mniej zajmie napisanie go. Obecnie często spotykane jest korzystanie z bibliotek napisanych w języku asemblera w programach napisanych w C++ (dzięki temu wrażliwe instrukcje wykonywane są szybciej). Więcej o asemblerze tutaj. My zajmiemy się C++.
Co potrzeba do pisania programu w C++ ?
Napisany program w C++ (kod źródłowy) należy skompilować specjalnym programem zwanym kompilatorem aby otrzymać plik wynikowy ( program wykonywalny). Po skompilowaniu programu nie można uzyskać jego źródła (kompilacja jest nieodwracalna), dlatego należy pamiętać, by nie zgubić kodu źródłowego, w przeciwnym razie modyfikacja programu będzie niemożliwa i będzie trzeba zaczynać od początku. Kod w C++ jest jednakowy dla wszystkich systemów operacyjnych.
Kompilator
Dobrym kompilatorem, godnym polecenia jest obecnie Code::Blocks. Jest to IDE (Integrated Development Environment -> zintegrowane środowisko programistyczne). Zawiera podstawowe biblioteki, przyjazny, kolorujacy edytor tekstu i kompilatory. Jest bardzo prosty w użyciu. Jego strona domowa to http://codeblocks.org, jest dostępny pod Windowsem, Linuxem i MacOS’em.
Piszemy Kalkulator
Zaprezentuję tutaj gotowy kalkulator, ponieważ najlepiej uczyć się na przykładach. Kod jest „self-explained”, komentarze umieściłem w kodzie, wystarczy przeczytać.
-
/*————————+
-
| Calculatorix |
-
| v 1.0 |
-
| by DonDaniello.com |
-
+————————*/
-
// Wszystko co jest umieszczone pomiędzy /* i */ nie jest brane pod uwagę przez kompilator, jest to tzw. komentarz wieloliniowy. Każda linia zaczynająca się od "//" jest komentarzem jednoliniowym (tak jak ta). Jest możliwość wpisania komentarza po kodzie tak jak poniżej. W takim wypadku kod jest brany pod uwagę tylko do "//".
-
-
#include <iostream> // ładujemy bibliotekę wejścia/wyjścia (input/output)
-
#include <cmath> // ładujemy bibliotekę matematyczną
-
-
using namespace std; // używamy standardowych bibliotek do naszych odwołań
-
-
int main() // podstawowa funkcja programu, obowiązkowa
-
{
-
int dzialanie; // deklaracja zmiennej liczby całkowitej o nazwie dzialanie.
-
double x, y, z; // deklaracja zmiennych liczb długich, niecałkowitych o nazwach x, y i z.
-
// Zauważ, że prawie każde polecenie kończy się cudzysłowem.
-
-
cout <<
"Witaj w Calculatorix v 1.0 !"<<endl<<endl;
-
// endl to funkcja zwracająca znak końca linii. "cout <<" oznacza przesłanie czegoś do standardowego wyjścia"
-
while (true) { // pętla zawsze spełniona
-
// wysyłamy tekst
-
cout <<
"Dostepne dzialania:"<<endl;
-
cout <<
"1 – Dodawanie"<<endl;
-
cout <<
"2 – Odejmowanie"<<endl;
-
cout <<
"3 – Mnozenie"<<endl;
-
cout <<
"4 – Dzielenie"<<endl;
-
cout <<
"5 – Potegowanie"<<endl;
-
cout <<
"6 – Pierwiastkowanie"<<endl;
-
cout <<
"7 – Wartosc absolutna"<<endl<<endl;
-
cout <<
"Wybierz dzialanie do wykonania:";
-
cin >> dzialanie; // przyjmujemy wybór działania
-
-
switch (dzialanie) { // wybór działania
-
-
case 1: // jeśli podano jeden to:
-
cout <<
"Podaj pierwsza liczbe: "; cin >> x;
// cout << endl;
-
cout <<
"Podaj druga liczbe: "; cin >> y;
// cout << endl;
-
z = x + y; // liczymy
-
cout << x <<
" plus " << y <<
" rowna sie" << z <<
"." << endl << endl;
-
break; // koniec przypadku
-
-
case 2:
-
cout <<
"Podaj pierwsza liczbe: "; cin >> x;
// cout << endl;
-
cout <<
"Podaj druga liczbe: "; cin >> y;
// cout << endl;
-
z = x – y;
-
cout << x <<
" minus " << y <<
" rowna sie " << z <<
"." << endl << endl;
-
break;
-
-
case 3:
-
cout <<
"Podaj pierwszy czynnik: "; cin >> x;
// cout << endl;
-
cout <<
"Podaj drugi czynnik: "; cin >> y;
// cout << endl;
-
z = x * y;
-
cout << x <<
" razy " << y <<
" rowna sie " << z <<
"." << endl << endl;
-
break;
-
-
case 4:
-
cout <<
"Podaj dzielna liczbe: "; cin >> x;
// cout << endl;
-
cout <<
"Podaj dzielnik liczbe: "; cin >> y;
// cout << endl;
-
z = x / y;
-
cout << x <<
" podzielone przez " << y <<
" rowna sie " << z <<
"." << endl << endl;
-
break;
-
-
case 5:
-
cout <<
"Podaj podstawe potegi: "; cin >> x;
// cout << endl;
-
cout <<
"Podaj wykladnik potegi: "; cin >> y;
// cout << endl;
-
z = pow (x, y);
-
cout << x <<
" do potegi " << y <<
" rowna sie " << z <<
"." << endl << endl;
-
break;
-
-
case 6:
-
cout <<
"Podaj podstawe pierwiastka: "; cin >> x;
// cout << endl;
-
z = sqrt (x);
-
cout <<
"Pierwiastek z " << y <<
" wynosi " << z <<
"." << endl << endl;
-
break;
-
-
case 7:
-
cout <<
"Podaj podstawe wartosci absolutnej: "; cin >> x;
// cout << endl;
-
z = abs (x);
-
cout <<
"Wartosc absolutna liczby " << y <<
" wynosi " << z <<
"." << endl << endl;
-
break;
-
-
default: cout<<endl<<"Bye Bye !"; return 0; break; // jeśli podano coś innego, wysyłamy tekst i wyłączamy program
-
}
-
}
-
}
Kod bez komentarzy do pobrania tutaj: Calculatorix
VN:F [1.9.3_1094]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.3_1094]
written by Don Daniello
\\ tags: c++, kalkulator, Programowanie