Jest to kilka plików w formacie C jakie stworzyłem podczas zajęć z algorytmów. Do większości z kodów dołączony jest opis-sprawozdanie. W skład archiwum wchodzą takie algorytmy, jak konwersja z dec na bin, Ciąg Fibbonaciego, Sito Eratostenesa (czasami błędnie znane jako sito Arystotelesa) - czyli znajdowanie liczb pierwszych, algorytmy sortowania i wyszukiwania na wiele różnych sposobów i ich porównanie ze sobą, układ równań, równanie kwadratowe i kilka innych prostych zagadek logicznych. Myślę, że przyda się ten zbiór kilkunastu programów każdemu początkującemu programiście C.
Dokladny spis zawartości:
Paczka do pobrania | |||||||||||
dec2bin.doc | Konwertuje liczbę dziesiętną na binarną. | ||||||||||
fibb.cpp | Oblicza elementy ciagu Fibbonaciego w sposób iteracyjny i rekurencyjny z analizą ilości wywołań. | ||||||||||
fibb.doc | Dokumentacja powyższego programu. | ||||||||||
funkc.cpp | Program odnajduje miejsce zerowe zadanej funkcji 3 różnymi metodami - bisekcji, stycznych i siecznych. Przeprowadza też porównanie skuteczności i wydajności metod. | ||||||||||
funkc.doc | Dokumentacja powyższego programu. | ||||||||||
kraw6.cpp | Program do śledzenia przejść pomiędzy punktami. Odpowiada, czy możliwe jest takie przejście przez wszystkie punkty, aby nie iść nigdy dwa razy tą samą drogą. | ||||||||||
kraw6.doc | Dokumentacja powyższego programu. | ||||||||||
L_dwukier.CPP | Przedstawia pracę z dynamiczną listą dwukierunkową oraz algorytmy zliczania elementów listy, wyszukiwania, transpozycji, wstawiania, usuwania i sortowania listy. | ||||||||||
l_dwukier.doc | Dokumentacja powyższego programu. | ||||||||||
LPIER.CPP | Program wyszukuje liczby pierwsze badając jej dzielniki. | ||||||||||
MAC.CPP | Przeprowadza obliczenia na macierzach dwuwymiarowych - dodawanie, odejmowanie i mnożenie. Program pracuje na dynamicznie przydzielonych tablicach. | ||||||||||
NWD.CPP | Program do odszukiwania największego wspólnego dzielnika dwóch liczb. | ||||||||||
palindrom.cpp | Bada, czy podane zdanie jest palindromem (palindrom to wyraz lub zdanie, które czytane normalnie i od końca daje tą samą treść, np.: "kobyła ma mały bok"). | ||||||||||
palindrom.doc | Dokumentacja powyższego programu. | ||||||||||
PARAMS2.CPP | Program do przeprowadzania obliczeń arytmetycznych pracujący wyłącznie w wierszu poleceń. Obsługuje dodawanie, mnożenie i średnią przekazanych argumentów. | ||||||||||
profQ.cpp | Program rozwiązujący zagadnienie logiczne dotyczące, na ile sposobów można pokonać schody, jednorazowo pokonując jeden lub dwa stopnie. | ||||||||||
profQ.doc | Dokumentacja powyższego programu. | ||||||||||
RKW.CPP | Program do rozwiazywania równania kwadratowego. | ||||||||||
sito.cpp | Odnajduje liczby pierwsze stosując algorytm Sita Eratostenesa. | ||||||||||
sito.doc | Dokumentacja powyższego programu. | ||||||||||
SLIMAK.CPP | Wypełnia tablicę dwuwymiarową kolejnymi liczbami w sposób spiralny. | ||||||||||
sort3.cpp | Implementacja trzech algorytmów sortujących: QuickSort, BaseSort (sortowanie na bazie) i metodą Shell'a | ||||||||||
sort3.doc | Dokumentacja powyższego programu. | ||||||||||
sorts.cpp | Implementacja dwóch algorytmów sortujących - sortowanie przez zliczanie i sortowanie przez indeksowanie. | ||||||||||
sorts.doc | Dokumentacja powyższego programu. | ||||||||||
sorts1.cpp | Implementacja trzech algorytmów sortujących in situ: sortowanie przez selekcję (wybieranie), sortowanie przez wstawianie i sortowanie bąbelkowe. | ||||||||||
sorts1.doc | Dokumentacja powyższego programu. | ||||||||||
stos1-z1.cpp do stos1-z8.cpp | Programy reprezentują różne operacje na stosie (liście jednokierunkowej). | ||||||||||
UKLRW.CPP | Program do rozwiązywania układu równań drugiego stopnia metodą wyznaczników. | ||||||||||
wyszuk.cpp | Program do analizy wydajności czasowej różnych algorytmów wyszukujących: wyszukiwania sekwencyjnego (z wartownikiem i bez) i wyszukiwania binarnego. | ||||||||||
wyszuk.doc | Dokumentacja powyżej zastosowanych algorytmów. |
Chcesz zobaczyć jeszcze więcej programów ? Tak, Tak, Tak
ZADANIE 2
#include
#include
using namespace std;
int main()
{
/* PROGRAM WYŚWIETLAJĄCY NA EKRANIE SEKWENCJE KOLEJNYCH LICZB CAŁKOWITYCH
NAJPIERW OD 1 DO 10, A NASTĘPNIE OD 10 DO 1. DO SPOWOLNIENIA OPERACJI WYDRUKU DOWOLNA DODATKOWA PĘTLA. NA ZAKOŃCZENIE JESZCZE JEDNA PĘTLA,
KTÓRA SPOWODUJE, ŻE CAŁY PROCES ODLICZANIA POTÓRZY SIĘ TRZY RAZY. */
float liczba= 3;
for (int k = 1; k <= 3; k++)
{
cout << endl;
cout << endl << "Petla odliczajaca od 1 do 10" << endl;
for (int i = 1; i <= 10; i++)
{
for (int j = 1; j <= 10000000; j++)
{
sqrt(liczba);
}
cout << i << " ";
}
cout << endl;
cout << endl << "Petla odliczajaca od 10 do 1" << endl;
for (int i = 10; i >= 1; i--)
{
for (int j=1; j <= 10000000; j++)
{
sqrt(liczba);
}
cout << i << " ";
}
}
cout << endl << "Koniec :)";
char znak;
cin >> znak;
ZADANIE 9
#include
using namespace std;
int main()
{
/* PROGRAM WYZNACZAJĄCY ITERACYNIE (NUMERYCZNIE) SUMĘ SZEREGU:
1/x + 1/(x^2) + 1/(x^3) + 1/(x^4) + . . . + 1/(x^n). */
float q, x, suma;
int n;
cout << "Podaj n: ";
cin >> n;
while (n <= 0)
{
cout << "n musi byc dodatnie !!!" << endl;
cout << "Nowe n: ";
cin >> n;
}
cout << endl;
cout << "Podaj x: ";
cin >> x;
cout << endl << "Zatem pierwszy wyraz szeregu wynosi: " << (1/x);
q = (1/x);
cout << endl << "Ostatni wyraz szeregu wynosi: ";
suma = q;
for (int i = 1; i <= (n-1); i++)
{
q *= (1/x);
suma += q;
}
cout << q;
cout << endl << "Suma wyrazow szeregu wynosi: " << suma;
char znak;
cin >> znak;
}
ZADANIE 8
#include
using namespace std;
int main()
{
/* PROGRAM WCZYTUJĄCY LICZBY Z KLAWIATURY,
Z JEDNOCZESNYM ZADAWANIEM PYTANIA "CZY KONIEC WPROWADZANIA T/N ?"
NA ZAKOŃCZENIE PROGRAM POWINIEN WYŚWIETLIĆ WARTOŚĆ:
ŚREDNIĄ, MAKSYMALNĄ, MINIMALNĄ Z PODANYCH LICZB. */
float liczba;
float min=900000000;
float max= -900000000;
float wynik =0;
int licznik =0;
char klawisz;
do
{
cout << "Wprowadz liczbe: ";
cin >> liczba;
cout << "Czy koniec wprowadzania? t/n" << endl;
cin >> klawisz;
wynik =+ liczba;
licznik++;
if (liczba < min)
{
min = liczba;
}
if (liczba > max)
{
max = liczba;
}
while ((klawisz != 'n') && (klawisz != 't'))
{
cout << "Jesli nie chcesz zakonczyc wprowadzania wcisnij klawisz n !!!" << endl;
cin >> klawisz;
}
}
while (klawisz != 't');
cout << "Skoro napisales t to konczymy" << endl;
cout << endl << "Srednia liczb wynosi: " << (wynik / licznik) << endl;
cout << "Najmniejsza z tych liczb wynosi: " << min << endl;
cout << "Najwieksza z tych liczb wynosi: " << max;
char znak;
cin >> znak;
}
ZADANIE 6
#include
using namespace std;
int main()
{
/* PROGRAM WCZYTUJĄCY KOLEJNE LICZBY Z KLAWIATURY I KOŃCZĄCY SIĘ GDY:
- SUMA TYCH LICZB PRZEKROCZY 100,
- ILOŚĆ PODANYCH LICZB UJEMNYCH PRZEKROCZY 10,
- DWIE KOLEJNE PODANE LICZBY BEDĄ MIAŁY IDENTYCZNĄ WARTOŚĆ. */
float tosamo, liczba;
float suma = 0;
int ujemne = 0;
bool obok = false;
do
{
cout << endl << "Podaj liczbe: ";
cin >> liczba;
if (tosamo == liczba)
{
obok = true;
}
suma += liczba;
if (liczba < 0)
{
ujemne++;
}
tosamo = liczba;
}
while ((suma < 100) && (ujemne < 10) && (obok != true));
cout << endl << "Przerwano wczytywanie z powodu: " << endl;
if (suma > 100)
{
cout << "Suma liczb przekroczyla 100." << endl;
}
if (ujemne > 10)
{
cout << "Podales ponad 10 liczb ujemnych." << endl;
}
if (obok == true)
{
cout << "Podales po sobie dwie takie same liczby.";
}
char znak;
cin >> znak;
}
ZADANIE 7
#include
using namespace std;
int main()
{
/* PROGRAM WCZYTUJĄCY ZNAKI Z KLAWIATURY AŻ DO MOMENTU NACIŚNIĘCIA KLAWISZA 'k'.
W TRAKCIE WCZYTYWANIA NALEŻY ZLICZAĆ ILOŚĆ PODANYCH ZNAKÓW.
NA ZAKOŃCZENIE NALEŻY WYŚWIETLIĆ INFORMACJE:
- ILE BYŁO PODANYCH ZNAKÓW (PRZED NACIŚNIĘCIEM 'k')
- ILE Z TYCH ZNAKÓW BYŁO DUŻYMI LITERAMI. */
char klawisz;
int licznik = 0;
int licznik1 = 0;
cout << "Podawaj klawisze: " << endl;
cout << endl;
while (klawisz != 'k')
{
cin >> klawisz;
cout << "Wprowadziles: " << klawisz << endl;
licznik++;
if ((klawisz >= 'A') && (klawisz <= 'Z'))
{
licznik1++;
}
}
cout << endl << "Podales " << (licznik-1) << " znakow." << endl;
cout << "Podales " << licznik1 << " duzych liter.";
char znak;
cin >> znak;
ZADANIE 3
#include
using namespace std;
int main()
{
/* PROGRAM WYŚWIETLAJĄCY NA EKRANIE KOLEJNE 100 LICZB PARZYSTYCH OD ZADANEJ LICZBY */
int pocz;
cout << endl << "Podaj liczbe calkowita od ktorej chcesz zobaczyc liczby parzyste: ";
cin >> pocz;
if ((pocz % 2) == 0)
{
for (int i= pocz+1; i <= pocz + 200; i++)
{
if ((i % 2) == 0)
{
cout << i << " ";
}
}
}
else
{
for (int i= pocz; i <= pocz + 200; i++)
{
if ((i % 2) == 0)
{
cout << i << " ";
}
}
}
char znak;
cin >> znak;
}
ZADANIE 4
#include
using namespace std;
int main()
{
/* PROGRAM WYŚWIETLAJĄCY NA EKRANIE KOLEJNE LICZBY CAŁKOWITE TYPU INT (DO 100),
KTÓRE SĄ PODZIELNE BEZ RESZTY PRZEZ n (GDZIE n JEST ZADAWANE Z KLAWIATURY) */
int n;
cout << endl << "Podaj n: ";
cin >> n;
cout << "Liczby podzielne bez reszty przez " << n << " to:" << endl;
for (int i=0; i <= 100; i++)
{
if ((i % n) == 0)
{
cout << i << " ";
}
}
char znak;
cin >> znak;
}
ZADANIE 5
#include
using namespace std;
int main()
{
/* PROGRAM WYŚWIETLAJĄCY NA EKRANIE "CHOINKĘ" O WYSOKOŚCI ZADAWANEJ Z KLAWIATURY.
___*
__***
_*****
*******
___#___________ */
int h;
cout << "Wprowadz wysokosc choinki: ";
cin >> h;
cout << endl;
for (int i = 1; i <= h-1; i++)
{
for (int k = 1 ; k <= h-i-1 ; k++)
{
cout << " ";
}
for (int j = 1; j <= 2*i-1 ; j++)
{
cout << "*";
}
cout << endl;
}
for (int pien = 1; pien <= h-2; pien++)
{
cout << " ";
}
cout << "#";
char znak;
cin >> znak;
}