Różne Programy



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.docKonwertuje liczbę dziesiętną na binarną.
fibb.cppOblicza elementy ciagu Fibbonaciego w sposób iteracyjny i rekurencyjny z analizą ilości wywołań.
fibb.docDokumentacja powyższego programu.
funkc.cppProgram odnajduje miejsce zerowe zadanej funkcji 3 różnymi metodami - bisekcji, stycznych i siecznych. Przeprowadza też porównanie skuteczności i wydajności metod.
funkc.docDokumentacja powyższego programu.
kraw6.cppProgram 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.docDokumentacja powyższego programu.
L_dwukier.CPPPrzedstawia pracę z dynamiczną listą dwukierunkową oraz algorytmy zliczania elementów listy, wyszukiwania, transpozycji, wstawiania, usuwania i sortowania listy.
l_dwukier.docDokumentacja powyższego programu.
LPIER.CPPProgram wyszukuje liczby pierwsze badając jej dzielniki.
MAC.CPPPrzeprowadza obliczenia na macierzach dwuwymiarowych - dodawanie, odejmowanie i mnożenie. Program pracuje na dynamicznie przydzielonych tablicach.
NWD.CPPProgram do odszukiwania największego wspólnego dzielnika dwóch liczb.
palindrom.cppBada, 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.docDokumentacja powyższego programu.
PARAMS2.CPPProgram do przeprowadzania obliczeń arytmetycznych pracujący wyłącznie w wierszu poleceń. Obsługuje dodawanie, mnożenie i średnią przekazanych argumentów.
profQ.cppProgram rozwiązujący zagadnienie logiczne dotyczące, na ile sposobów można pokonać schody, jednorazowo pokonując jeden lub dwa stopnie.
profQ.docDokumentacja powyższego programu.
RKW.CPPProgram do rozwiazywania równania kwadratowego.
sito.cppOdnajduje liczby pierwsze stosując algorytm Sita Eratostenesa.
sito.docDokumentacja powyższego programu.
SLIMAK.CPPWypełnia tablicę dwuwymiarową kolejnymi liczbami w sposób spiralny.
sort3.cppImplementacja trzech algorytmów sortujących: QuickSort, BaseSort (sortowanie na bazie) i metodą Shell'a
sort3.docDokumentacja powyższego programu.
sorts.cppImplementacja dwóch algorytmów sortujących - sortowanie przez zliczanie i sortowanie przez indeksowanie.
sorts.docDokumentacja powyższego programu.
sorts1.cppImplementacja trzech algorytmów sortujących in situ: sortowanie przez selekcję (wybieranie), sortowanie przez wstawianie i sortowanie bąbelkowe.
sorts1.docDokumentacja powyższego programu.
stos1-z1.cpp do stos1-z8.cppProgramy reprezentują różne operacje na stosie (liście jednokierunkowej).
UKLRW.CPPProgram do rozwiązywania układu równań drugiego stopnia metodą wyznaczników.
wyszuk.cppProgram do analizy wydajności czasowej różnych algorytmów wyszukujących: wyszukiwania sekwencyjnego (z wartownikiem i bez) i wyszukiwania binarnego.
wyszuk.docDokumentacja 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;
}