Inicjalizacja repozytorium

This commit is contained in:
Mateusz Słodkowicz 2025-01-27 23:31:45 +01:00
commit e37cf6b784
Signed by: materus
GPG Key ID: 28D140BCA60B4FD1
27 changed files with 1743 additions and 0 deletions

View File

@ -0,0 +1,6 @@
*
!.gitignore
!**/
!*.pas
.#*.pas

View File

@ -0,0 +1,44 @@
program rownanie_kwadratowe;
var
a,b,c : Double;
x,x1,x2 : Double;
Delta : Double;
begin
write('Podaj a: ');
ReadLn(a);
write('Podaj b: ');
ReadLn(b);
write('Podaj c: ');
ReadLn(c);
if a=0 then
begin
x:=c/b;
writeln('To jest rownanie liniowe');
writeln(x:0:5); // Wypisze pięć miejsc po przecinku zamiast naukowej notacji
end else
begin
Delta:=b*b-4*a*c;
if Delta < 0 then
writeln('Brak rozwiazan')
else
begin
if Delta > 0 then
begin
x1:=(-b - Sqrt(Delta))/(2*a);
x2:=(-b + Sqrt(Delta))/(2*a);
writeln('Dwa pierwiastki');
writeln(x1:0:5);
writeln(x2:0:5);
end else
begin
x:=b/(2*a);
writeln('Jeden pierwiastek');
writeln(x:0:5);
end;
end;
end;
end.

View File

@ -0,0 +1,37 @@
program rok_przestepny;
function Czytaj_rok: Integer;
var
rok: Integer;
begin
write('Podaj rok: ');
readln(rok);
Czytaj_rok:=rok;
end;
function Czy_przestepny(rok :Integer ): Boolean;
begin
Czy_przestepny:= ((rok mod 4 = 0) AND (NOT (rok mod 100 = 0)) ) OR (rok mod 400 = 0);
end;
procedure Wypisz_czy_przestepny(rok : Integer; przestepny: Boolean );
begin
if przestepny then
writeln('Rok ', rok, ' jest przestepny')
else
writeln('Rok ', rok, ' nie jest przestepny');
end;
procedure Glowna_procedura;
var
rok : Integer;
przestepny : Boolean;
begin
rok:= Czytaj_rok();
przestepny:= Czy_przestepny(rok);
Wypisz_czy_przestepny(rok,przestepny);
end;
begin
Glowna_procedura()
end.

View File

@ -0,0 +1,38 @@
program suma_cyfr;
function Czytaj_liczbe : Integer;
var
liczba : Integer;
begin
write('Podaj liczbe: ');
readln(liczba);
Czytaj_liczbe:=liczba;
end;
function Suma_cyfr(liczba : Integer) : Integer;
var suma : Integer;
begin
suma:=0;
liczba:=abs(liczba);
while liczba>0 do
begin
suma:=suma+(liczba mod 10);
liczba:=trunc(liczba/10);
end;
Suma_cyfr:=suma;
end;
procedure Wypisz_wynik(liczba : Integer; suma : Integer );
begin
writeln('Suma cyfr liczby ', liczba, ' to ', suma);
end;
procedure Glowna_procedura;
var liczba : Integer;
begin
liczba:=Czytaj_liczbe();
Wypisz_wynik(liczba,Suma_cyfr(liczba));
end;
begin
Glowna_procedura();
end.

View File

@ -0,0 +1,53 @@
program silnia;
function Czytaj_liczbe: Int64;
var
liczba: Int64;
begin
Write('Podaj liczbę calkowita: ');
ReadLn(liczba);
Czytaj_liczbe := liczba;
end;
function Silnia_rekurencyjna(n: Int64): Int64;
begin
if n = 0 then
Silnia_rekurencyjna := 1
else
Silnia_rekurencyjna := n * Silnia_rekurencyjna(n - 1);
end;
function Silnia_iteracyjna(n: Int64): Int64;
var
wynik, i: Int64;
begin
wynik := 1;
for i := 1 to n do
wynik := wynik * i;
Silnia_iteracyjna := wynik;
end;
procedure Wypisz_wyniki(wynikRek, wynikIter: Int64);
begin
WriteLn('Silnia rekurencyjna: ', wynikRek:10);
WriteLn('Silnia iteracyjna: ', wynikIter:10);
end;
procedure Glowna_procedura;
var
liczba, wynikRek, wynikIter: Int64;
begin
liczba := Czytaj_liczbe;
if liczba < 0 then
begin
WriteLn('Silnia jest zdefiniowana tylko dla liczb nieujemnych.');
Exit;
end;
wynikRek := Silnia_rekurencyjna(liczba);
wynikIter := Silnia_iteracyjna(liczba);
Wypisz_wyniki(wynikRek, wynikIter);
end;
begin
Glowna_procedura()
end.

View File

@ -0,0 +1,71 @@
program silnia_czas;
uses sysUtils;
function Czytaj_liczbe: Int64;
var
liczba : Int64;
begin
Write('Podaj liczbe calkowita: ');
ReadLn(liczba);
Czytaj_liczbe := liczba;
end;
function Silnia_rekurencyjna(n: Int64): Int64;
begin
if n = 0 then
Silnia_rekurencyjna := 1
else
Silnia_rekurencyjna := n * Silnia_rekurencyjna(n - 1);
end;
function Silnia_iteracyjna(n: Int64): Int64;
var
wynik, i : Int64;
begin
wynik := 1;
for i := 1 to n do
wynik := wynik * i;
Silnia_iteracyjna := wynik;
end;
procedure Wypisz_wyniki(liczba,ile,wynikRek, wynikIter : Int64; CzasI, CzasR : TdateTime);
begin
writeln('Podana liczba: ', liczba);
writeln('Podana liczba iteracji', ile);
writeln('Czas silni rekurencyjnej: ', CzasR:0:2, ' sekund');
WriteLn('Silnia rekurencyjna: ', wynikRek:10);
writeln('Czas silni iteracyjnej: ', CzasI:0:2, ' sekund');
WriteLn('Silnia iteracyjna: ', wynikIter:10);
end;
procedure Glowna_procedura;
var
CzasI, CzasR : TdateTime;
i : Int64;
ile, liczba : Int64;
wynikI, wynikR : Int64;
begin
liczba := Czytaj_liczbe();
Write('Podaj liczbe iteracji: ');
ReadLn(ile);
CzasI := Time();
for i := 0 to ile do
wynikI := Silnia_iteracyjna(liczba);
CzasI := Time()-CzasI;
CzasI := CzasI*24*60*60;
CzasR := Time();
for i := 0 to ile do
wynikR := Silnia_rekurencyjna(liczba);
CzasR := Time()-CzasR;
CzasR := CzasR*24*60*60;
Wypisz_wyniki(liczba,ile,wynikR,wynikI,CzasI,CzasR);
end;
begin
Glowna_procedura()
end.

View File

@ -0,0 +1,33 @@
program suma_cyfr;
function Czytaj_liczbe : Integer;
var
liczba : Integer;
begin
write('Podaj liczbe: ');
readln(liczba);
Czytaj_liczbe:=liczba;
end;
function Suma_cyfr(liczba : Integer) : Integer;
begin
if liczba = 0 then
Suma_cyfr:=0
else
Suma_cyfr:= (abs(liczba) mod 10) + Suma_cyfr(liczba div 10);
end;
procedure Wypisz_wynik(liczba : Integer; suma : Integer );
begin
writeln('Suma cyfr liczby ', liczba, ' to ', suma);
end;
procedure Glowna_procedura;
var liczba : Integer;
begin
liczba:=Czytaj_liczbe();
Wypisz_wynik(liczba,Suma_cyfr(liczba));
end;
begin
Glowna_procedura();
end.

View File

@ -0,0 +1,65 @@
program potega;
function potega_iter(a : Integer ;n : Integer ) : Integer;
var
wynik, i : Integer;
begin
wynik := 1;
for i := 1 to n do
wynik:= wynik*a;
potega_iter:= wynik;
end;
function potega_rek(a : Integer ;n : Integer ) :Integer;
begin
if n = 0 then
potega_rek:= 1
else
potega_rek:= a * potega_rek(a,n-1);
end;
function potega_iter_kwr(a : Integer ;n : Integer ) : Integer;
var
wynik : Integer;
begin
wynik := 1;
if n = 1 then
wynik:=a;
while n>1 do
begin
if n mod 2 = 1 then
begin
wynik:=a*wynik;
n:=n-1;
end
else
begin
wynik:=a*a*wynik;
n:=n div 2;
end;
end;
potega_iter_kwr:=wynik;
end;
function potega_rek_kwr(a : Integer ;n : Integer ) :Integer;
var
wynik : Integer;
begin
wynik:=0;
if n = 0 then
potega_rek_kwr:= 1
else if n mod 2 = 1 then
potega_rek_kwr:= a * potega_rek_kwr(a,n-1)
else
begin
wynik := potega_rek_kwr(a, n div 2);
potega_rek_kwr:=wynik*wynik;
end;
end;
begin
WriteLn('Potega Iteracyjna: ', potega_iter(2,3));
WriteLn('Potega Rekurencyjna: ', potega_rek(2,3));
WriteLn('Potega Iteracyjna Kwadratowa: ', potega_iter_kwr(2,3));
WriteLn('Potega Rekurencyjna Kwadratowa: ', potega_rek_kwr(2,3));
end.

View File

@ -0,0 +1,20 @@
import math;
a = float(input("Podaj a: "))
b = float(input("Podaj b: "))
c = float(input("Podaj c: "))
if(a==0):
x=c/b
print("To jest rownanie liniowe\n", x)
else:
Delta=b*b-4*a*c
if (Delta < 0):
print("Brak rozwiazan")
elif (Delta > 0):
x1=(-b - math.sqrt(Delta))/(2*a)
x2=(-b + math.sqrt(Delta))/(2*a)
print('Dwa pierwiastki\n', x1,'\n', x2)
else:
x=b/(2*a)
print('Jeden pierwiastek\n',x);

View File

@ -0,0 +1,15 @@
def Czytaj_rok():
rok = int(input("Podaj rok: "))
return rok;
def Czy_przestepny(rok):
return ((rok%4==0) and not (rok%100==0)) or (rok % 400 == 0)
def Wypisz_czy_przestepny(rok,przestepny):
if(przestepny):
print("Rok", rok, "jest przestepny")
else:
print("Rok", rok, "nie jest przestepny")
def Glowna_procedura():
rok = Czytaj_rok()
Wypisz_czy_przestepny(rok,Czy_przestepny(rok))
Glowna_procedura()

View File

@ -0,0 +1,16 @@
from math import trunc
def Czytaj_liczbe():
return int(input("Podaj liczbe: "))
def Suma_cyfr(liczba):
suma=0
liczba=abs(liczba)
while(liczba>0):
suma=suma+(liczba%10)
liczba=int(trunc(liczba/10))
return suma
def Wypisz_wynik(liczba,suma):
print("Suma cyfr liczby",liczba,"to",suma)
def Glowna_procedura():
liczba=Czytaj_liczbe()
Wypisz_wynik(liczba,Suma_cyfr(liczba))
Glowna_procedura()

View File

@ -0,0 +1,40 @@
from datetime import datetime
def Czytaj_liczbe():
return int(input("Podaj liczbe calkowita: "))
def Silnia_rekurencyjna(n):
if(n==0):
return 1
else:
return n * Silnia_rekurencyjna(n-1);
def Silnia_iteracyjna(n):
wynik = 1
for i in range(1,n+1):
wynik = wynik*i
return wynik
def Wypisz_wynikli(liczba,ile,wynikRek,wynikIter,CzasI,CzasR):
print("Podana liczba:", liczba);
print("Podana liczba iteracji", ile);
print("Czas silni rekurencyjnej:", CzasR, 'sekund');
print("Silnia rekurencyjna:", wynikRek);
print("Czas silni iteracyjnej:", CzasI, 'sekund');
print("Silnia iteracyjna:", wynikIter);
def Glowna_procedura():
wynikR = 0
wynikI = 0
liczba = Czytaj_liczbe()
ile = int(input("Podaj liczbe iteracji: "))
CzasI = datetime.today()
for i in range(0,ile+1):
wynikI = Silnia_iteracyjna(liczba)
CzasI = datetime.today() - CzasI
CzasI = CzasI.seconds+CzasI.microseconds*0.000001
CzasR = datetime.today()
for i in range(0,ile+1):
wynikR = Silnia_rekurencyjna(liczba)
CzasR = datetime.today() - CzasR
CzasR = CzasR.seconds+CzasR.microseconds*0.000001
Wypisz_wynikli(liczba,ile,wynikR,wynikI,CzasI,CzasR)
Glowna_procedura()

View File

@ -0,0 +1,75 @@
---
author: Mateusz Słodkowicz
lang: pl
title: Algorytmy i Struktury Danych
---
Zadania/Ćwiczenia z przedmiotu Algorytmy i Struktury Danych.
# Ćwiczenie 2 - Zadanie 1
Program na rozwiązywanie równania kwadratowego.
**Wymagania na program**:
1. Aplikacja konsolowa (prosty program)
2. Na wejściu programu należy podać wartości a,b,c
3. Na wyjściu program wypisuje komunikaty, opisane algorytmem
[Pascal](./Pascal/AiSD5_C2%20Ćwiczenie%202/zad1_rownanie_kwadratowe.pas)
[Python](./Python/AiSD5_C2%20Ćwiczenie%202/zad1_rownanie_kwadratowe.py)
# Ćwiczenie 2 - Zadanie 2
**Definicja**
Rok przestępny to taki, który spełnia następujące warunki:
- jest podzielny przez 4 i niepodzielny przez 100
lub
- jest podzielny przez 400
**Wymagania na program**:
1. Aplikacja konsolowa (prosty program)
2. Na wejściu programu należy podać liczbę określającą numer roku
3. Na wyjściu program wypisuje komunikat, czy podany rok jest
przestępny.
4. Podziel program na cztery części:
1. Funkcja typu całkowitego czytająca numer roku podany przez
użytkownika i zwracająca odczytaną liczbę
2. Funkcja typu logicznego, której argumentem jest liczba całkowita
sprawdzająca, czy rok jest przestępny
3. Procedura, której argumentami są: numer roku i wartość logiczna,
wypisująca na konsoli, czy rok jest przestępny
4. Procedura zawierająca w sobie wywołania pozostałych funkcji i
procedur, która jest wywoływana z programu głównego.
[Pascal](./Pascal/AiSD5_C2%20Ćwiczenie%202/zad2_rok_przestepny.pas)
[Python](./Python/AiSD5_C2%20Ćwiczenie%202/zad2_rok_przestepny.py)
# Ćwiczenie 2 - Zadanie 3
Obliczanie sumy cyfr
**Wymagania na algorytm**:
1. Algorytm iteracyjny (nie rekurencyjny)
**Wymagania na program**:
1. Aplikacja konsolowa (prosty program)
2. Na wejściu programu należy podać liczbę całkowitą.
3. Na wyjściu program wypisuje wynik obliczeń.
4. Podziel program na cztery części:
1. Funkcja typu całkowitego czytająca liczbę całkowitą
2. Funkcja typu całkowitego, której argumentem jest liczba
całkowita, a wynikiem suma cyfr tej liczby
3. Procedura wypisująca wynik obliczeń, której argumentami są:
liczba całkowita i suma cyfr tej liczby
4. Procedura zawierająca w sobie wywołania pozostałych funkcji i
procedur, która jest wywoływana z programu głównego.
[Pascal](./Pascal/AiSD5_C2%20Ćwiczenie%202/zad3_suma_cyfr.pas)
[Python](./Python/AiSD5_C2%20Ćwiczenie%202/zad3_suma_cyfr.py)

8
Podstawy Programowania I/.gitignore vendored Normal file
View File

@ -0,0 +1,8 @@
*
!.gitignore
!**/
!*.cpp
!*.md
.#*.cpp
.#*.md

View File

@ -0,0 +1,214 @@
/*
Autor: Mateusz Słodkowicz
Grupa: D3
Numer Indeksu: 167675
Opis: Gra w Papier, Kamień, Nożyce.
Program zapyta do ilu wygranych chcesz zagrać.
Remis nie liczy się jako wygrana bądź przegrana.
Gra trwa do uzyskania przez kogoś wyniku podanego na początku, po zakończeniu gra wypisze kto wygrał "mecz"
oraz umożliwia rozpoczęcię kolejnego "meczu".
Aby zakończyć program należy przy wyborze "do ilu" podać zero.
Plik źródłowy powinien być zapisany z kodowaniem UTF-8.
*/
#include <chrono>
#include <iostream>
#include <random>
#include <string>
#ifdef _WIN32 // Dodatkowe nagłówki dla windows'a
#include <cstdlib>
#include <windows.h>
// Nieco jaśniejszy niż domyślny biały
#define DEFAULT_COLOR (FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_INTENSITY)
#endif
void wypiszCzerwony(std::string tekst)
{
#ifdef _WIN32
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); // "Uchwyt" wyjścia konsoli
std::cout << std::flush; // Flush aby przypadkiem program nie zmienił koloru poprzedniego tekstu
SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_INTENSITY); // Ustawienie czerwonego koloru
std::cout << tekst << std::flush; // Flush aby program na pewno wypisał tekst przed ustawienie domyślnego koloru
SetConsoleTextAttribute(hConsole, DEFAULT_COLOR);
#else
std::cout << "\033[31m" << tekst << "\033[0m";
#endif
}
void wypiszZielony(std::string tekst)
{
#ifdef _WIN32
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
std::cout << std::flush;
SetConsoleTextAttribute(hConsole, FOREGROUND_GREEN | FOREGROUND_INTENSITY);
std::cout << tekst << std::flush;
SetConsoleTextAttribute(hConsole, DEFAULT_COLOR);
#else
std::cout << "\033[32m" << tekst << "\033[0m";
#endif
}
void czyscEkran()
{
#ifdef _WIN32
system("cls"); // Wywołanie "cls" dla wyczyczenia ekranu konsoli na windowsie
#else
std::cout << "\033[2J\033[1;1H"; // Sekwencja czyszczenia dla terminala ANSI
#endif
}
int main()
{
#ifdef _WIN32
SetConsoleOutputCP(CP_UTF8); // Ustawienie kodowania UTF-8 dla wyjścia konsoli, pozwala wyświetlić polskie znaki.
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hConsole, DEFAULT_COLOR);
#endif
// Generator liczb
auto seed = std::chrono::system_clock::now().time_since_epoch().count(); // większa dokładność czasu niż time(0)
std::mt19937 rng(seed); // Generator licz losowych
std::uniform_int_distribution<char> dist('1', '3'); // Zakres liczb (znaków) losowych
// Zmienne
unsigned int wybor = 0;
unsigned int wygraneGracza = 0;
unsigned int wygraneKomputera = 0;
unsigned char ostatniaRunda = 0;
unsigned char ostatniMecz = 0;
char gracz = 0, komputer = 0;
// Główna pętla gry
while (true)
{
czyscEkran();
// Wypisanie wyniku ostatniego meczu
if (ostatniMecz != 0)
std::cout << "Ostatni mecz: ";
if (ostatniMecz == 1)
wypiszZielony("Wygrana gracza\n");
else if (ostatniMecz == 2)
wypiszCzerwony("Wygrana komputera\n");
// Reset zmiennych
wygraneKomputera = 0;
wygraneGracza = 0;
ostatniaRunda = 0;
ostatniMecz = 0;
wybor = 0;
// Wybór do ilu wygranych
std::cout << "Do ilu wygranych chcesz zagrać?\n"
"Wprowadź 0 aby wyjść z programu\n"
"Ile: ";
while (!(std::cin >> wybor))
{
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
wypiszCzerwony("Błąd, wprowadź jeszcze raz.\n");
std::cout << "Ile: ";
}
if (!wybor)
break;
// Pętla do czasu wygranej gracza lub komputera
while (wygraneGracza != wybor && wygraneKomputera != wybor)
{
czyscEkran();
gracz = 0;
komputer = dist(rng);
// Wypisanie wyniku ostatniej rundy
if (ostatniaRunda != 0)
std::cout << "Ostatnia runda: ";
if (ostatniaRunda == 1)
wypiszZielony("Wygrana gracza\n");
else if (ostatniaRunda == 2)
wypiszCzerwony("Wygrana komputera\n");
else if (ostatniaRunda == 3)
std::cout << "Remis\n";
// Wypisanie danych aktualnego meczu
std::cout << "Gra do: " << wybor << "\n\n"
<< "GRACZ ";
wypiszZielony(std::to_string(wygraneGracza));
std::cout << " - ";
wypiszCzerwony(std::to_string(wygraneKomputera));
std::cout << " KOMPUTER\n\n";
// Menu wyboru
std::cout << "1. Papier\n"
"2. Kamień\n"
"3. Nożyce\n";
while (gracz < '1' || gracz > '3')
{
std::cout << "Wybór: ";
while (!(std::cin >> gracz))
{
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
// Remis
if (gracz == komputer)
ostatniaRunda = 3;
// Switch z wyborem gracza, porównanie do komputera
else
switch (gracz)
{
case '1': // Gracz wybrał papier
if (komputer == '2') // Komputer wybrał kamień
{
++wygraneGracza;
ostatniaRunda = 1;
}
else if (komputer == '3') // Komputer wybrał nożyce
{
++wygraneKomputera;
ostatniaRunda = 2;
}
break;
case '2': // Gracz wybrał kamień
if (komputer == '3') // Komputer wybrał nożyce
{
++wygraneGracza;
ostatniaRunda = 1;
}
else if (komputer == '1') // Komputer wybrał papier
{
++wygraneKomputera;
ostatniaRunda = 2;
}
break;
case '3': // Gracz wybrał nożyce
if (komputer == '1') // Komputer wybrał papier
{
++wygraneGracza;
ostatniaRunda = 1;
}
else if (komputer == '2') // Komputer wybrał kamień
{
++wygraneKomputera;
ostatniaRunda = 2;
}
break;
}
}
// Ustawienie wyniku meczu
if (wygraneGracza == wybor)
ostatniMecz = 1;
else
ostatniMecz = 2;
};
czyscEkran();
std::cout << "Dziękujemy za grę!";
return 0;
}

View File

@ -0,0 +1,249 @@
---
author: Mateusz Słodkowicz
lang: pl
title: Podstawy Programowania I
---
Zadania/Ćwiczenia z przedmiotu Podstawy Programowania I
# Zadania 1
## Zadanie 1
Napisz program, który zapyta użytkownika o liczbę chłopców i dziewcząt
zapisanych do klasy.
Program powinien wyświetlać wartość procentową chłopców i dziewcząt w
klasie.
[C++](Zadanie%201.1/zadanie1.cpp)
## Zadanie 2
Kino przechowuje tylko pewien procent przychodu ze sprzedaży biletów.
Reszta trafia do
dystrybutora. Napisz program obliczający dochód kina i zysk kasy
biletowej za dzień.
Załóż, że kino zatrzymuje 20% zysku kasy biletowej
Program powinien pytać ile zostało sprzedanych biletów dla dzieci i
dorosłych. (Cena biletu dla
dorosłych wynosi 10 zł, a dla dziecka 6 zł). Wyświetlony powinien zostać
komunikat podobny do
poniższego:
``` example
Sprzedane bilety dla dorosłych:
Sprzedane bilety dla dzieci:
Zysk kasy brutto:
Zysk kasy netto:
Kwota zapłacona dystrybutorowi:
```
[C++](./Zadanie%201.1/zadanie2.cpp)
## Zadanie 3
Zadeklarować trzy zmienne typu całkowitego. Wczytać dane. Obliczyć sumę
tych liczb, ich średnią
arytmetyczną i średnią harmoniczną. Wyświetlić wyniki.
[C++](./Zadanie%201.1/zadanie3.cpp)
## Zadanie 4
Rowerzysta pokonuje drogę o długości d w trzech etapach. Przez d
oznaczono całą długość drogi
przebytej przez rowerzystę. Przebyta droga i średnia prędkość w
kolejnych etapach:
``` example
etap I 0,2 d 10 m/s
etap II 0,5 d 5 m/s
etap III 0,3 d 10 m/s
```
Należy napisać program obliczający całkowity czas jazdy rowerzysty.
Wyniki przeliczyć na godziny,
minuty, sekundy.
Wczytać długość drogi d, wyświetlić wyniki.
[C++](./Zadanie%201.1/zadanie4.cpp)
# Zadania 2
Uwagi:
- Wszystkie zadania powinny być w jednym programie, kolejne zadania
oddzielone liniami komentarza.
- Program powinien czytelne wczytywanie danych i czytelne wypisywanie
wyników.
- W obliczeniach nie należy korzystać z funkcji pow()
- Stała pi M<sub>PI</sub> należy dołączyć bibliotekę matematyczną
\#include \<cmath\>
[C++](./Zadanie%201.2/zadanie.cpp)
## Zadanie 1
Wczytać dwie liczby typu całkowitego (x, y) i wypisać, która liczba jest
większa a może są takie same.
Sprawdzić czy x jest liczbą nieparzystą. Wypisać odpowiedni komunikat.
Nie wykonywać działań, kiedy pierwsza wczytana liczba będzie zerem.
## Zadanie 2
Obliczyć wartość funkcji określonej wzorem:
$$
\large y(x) = \begin{cases}
\frac{3}{4} \cdot x^{3} \cdot \frac{7}{8} x & \text{dla x ∈ <-10, 0>} \\\\
\frac{1}{sin(x) + 3} & \text{dla x ∈ (0, 4>} \\\\
-2x/3 & \text{dla pozostałych}
\end{cases}
$$
Dane: x typu rzeczywistego
## Zadanie 3
Napisać program pozwalający obliczyć
1. Objętość kuli (dane: R promień kuli)
2. Objętość walca (dane: promień podstawy walca, h wysokość walca)
3. Objętość stożka (dane: R promień podstawy stożka, h wysokość
stożka)
W programie należy użyć struktury wielokrotnego wyboru switch.
Obliczoną wartość wypisać na ekranie.
## Zadanie 4
Firma kurierska pobiera opłaty zgodnie z poniższym cennikiem:
| Waga paczki | Opłata za każde 100 km (zł) |
|------------------------------------------|-----------------------------|
| 2 kg lub mniej | 5,30 |
| Powyżej 2 kg, lecz nie więcej niż 6 kg | 6,20 |
| Powyżej 6 kg, lecz nie więcej niż 10 kg | 7,70 |
| Powyżej 10 kg, lecz nie więcej niż 20 kg | 10,80 |
Napisz program, który prosi o wpisanie wagi paczki i odległości, jaką
musi przebyć przesyłka, a następnie wyświetli cenę.
Weryfikacja poprawności wprowadzanych danych: program nie powinien
przyjmować wagi paczki mniejszej lub równej 0 kg ani powyżej 20 kg (to
największa waga paczki, jaką może przyjąć firma).
# Zadania 3
Uwagi:
- Wszystkie punkty powinny być realizowane w jednym programie.
- W programie należy użyć pętli for, while, do while. Nie powinno być w
programie pętli nieskończonych. Nie
należy używać tablic. Nie używać funkcji pow
- Czytelność komunikatów. Komunikaty powinny być krótkie, ale tak
sformułowane, żeby nie było
wątpliwości, które zadanie jest wykonywane.
[C++](./Zadanie%201.3/zadanie.cpp)
## Zadanie 1
Funkcja, który wyświetli tabliczkę mnożenia liczb od 1 do n w
następującej postaci
| | 1 | 2 | 3 |
|-----|-----|-----|-----|
| 1 | 1 | 2 | 3 |
| 2 | 2 | 4 | 6 |
| 3 | 3 | 6 | 9 |
n należy wczytać, n \<1, 10\>.
W tym przypadku n = 3.
## Zadanie 2
Funkcja, która oblicza i zwraca średnią kilku liczb całkowitych przy
założeniu, że ostatnia wczytana wartość
jest znacznikiem 0. Przykładowa seria wejściowa może być
``` example
10 8 11 7 9 0
```
wskazując, że ma być wyliczona średnia wartości poprzedzających 0.
## Zadanie 3
Funkcja, który oblicza i zwraca sumę S określoną wzorem:
$$
\large {S = \sum^{m}_{k=0}} \frac{1+j}{2j^3 + 3}
$$
Dane: m
## Zadanie 4
Ten punkt powinien działać w pętli, bez funkcji
Napisz program obliczający obłożenie hotelu. Program powinien
wystartować, pytając użytkownika o
nazwę hotelu i liczbę pięter w hotelu. Pętla powinna iterować raz na
każde piętro. W każdej iteracji pętla
powinna zapytać użytkownika o liczbę pokoi na piętrze i liczbę pokoi
zajętych.
Po wszystkich iteracjach program powinien wyświetlić, ile pokoi ma
hotel, ile z nich jest zajętych, a ile wolnych oraz procent, jaki
stanowią zajęte pokoje.
UWAGA. Zdarza się, że w część hoteli nie ma trzynastego piętra (może to
być inny numer piętra).
Pętla w tym programie powinna pomijać iteracje na tym piętrze.
Weryfikacja poprawności wprowadzanych danych: Nie akceptuj liczby
mniejszej niż 1 dla liczby pięter.
Nie akceptuj liczby mniejszej niż 5 dla liczby pokoi na piętrze.
# Projekt 1
Napisz program, który pozwala użytkownikowi zagrać z komputerem w grę
kamień, papier, nożyce.
Użytkownik powinien mieć możliwość rozegrania kilku rund.
Program powinien działać następująco:
1. Kiedy program zostaje uruchomiony, generowana jest liczba losowa od
1 do 3. Jeśli tą liczbą
jest 1, to oznacza, że komputer wybrał kamień. Jeśli tą liczbą jest
2, to komputer wybrał
papier. Jeśli tą liczbą jest 3,to komputer wybrał nożyce (nie
wyświetlaj jeszcze wyboru
komputera).
2. Użytkownik wprowadza swój wybór: „kamień”, „papier” albo „nożyce” na
klawiaturze.
3. Wyświetlany jest wybór komputera.
4. Zwycięzca jest wybierany na podstawie następujących zasad:
- Jeśli jeden gracz wybierze kamień, a drugi nożyce, to wygrywa
kamień
(kamień tępi nożyce).
- Jeśli jeden gracz wybierze nożyce, a drugi papier, to wygrywają
nożyce
(nożyce przecinają papier).
- Jeśli jeden gracz wybierze papier, a drugi kamień, to wygrywa
papier
(papier owija kamień).
- Jeśli obaj gracze wybiorą ten sam ruch, to rozgrywka musi zostać
powtórzona, aby
wyłonić zwycięzcę.
Program powinien być napisany z wykorzystaniem poznanych instrukcji
języka.
Program można rozbudować, dodając nowe opcje lub dokonać innych zmian.
Należy wtedy dołączyć
krótki opis programu.
[C++](./Projekt1/main.cpp)

View File

@ -0,0 +1,34 @@
/*
Autor: Mateusz Slodkowicz
Grupa: D3
Numer Indeksu: 167675
Opis: Program wczyta liczbe dziewczat i chlopcow w klasie a nastepnie
wypisze ich wartosc procentowa w klasie.
*/
#include <iostream>
int main()
{
unsigned int dziewczyny = 0;
unsigned int chlopcy = 0;
std::cout << "Podaj liczbe dziewczat: ";
std::cin >> dziewczyny;
std::cout << "Podaj liczbe chlopcow: ";
std::cin >> chlopcy;
unsigned int razem = dziewczyny+chlopcy;
if(razem>0)
{
std::cout << "\nProcent chlopcow: " << (100*((float)chlopcy/razem)) << "%";
std::cout << "\nProcent dziewczat: " << (100*((float)dziewczyny/razem)) << "%" << std::endl;
}
else
std::cout << "Brak osob w klasie" << std::endl;
return 0;
}

View File

@ -0,0 +1,41 @@
/*
Autor: Mateusz Slodkowicz
Grupa: D3
Numer Indeksu: 167675
Opis: Program wczyta liczbe biletow dla dzieci i doroslych a nastepnie
wypisze wyniki sprzedazy.
*/
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
unsigned int dzieci = 0;
unsigned int dorosli = 0;
const float dlaKina=0.20;
std::cout << "Podaj liczbe biletow dzieci: ";
std::cin >> dzieci;
std::cout << "Podaj liczbe biletow doroslych: ";
std::cin >> dorosli;
float brutto = (dzieci*6.0) + (dorosli*10.0);
float netto = (brutto*dlaKina);
float dystrybutor = brutto - netto;
//Ustawienie 2 miejsc po przecinku
std::cout << std::fixed;
std::cout << std::setprecision(2);
std::cout << "\nSprzedane bilety dla doroslych: " << dorosli << "\n";
std::cout << "Sprzedane bilety dla dzieci: " << dzieci << "\n";
std::cout << "Zysk kasy brutto: " << brutto << "zl\n";
std::cout << "Zysk kasy netto: " << netto << "zl\n";
std::cout << "Kwota zaplacona dystrybutorowi: " << dystrybutor << "zl" << std::endl;
return 0;
}

View File

@ -0,0 +1,27 @@
/*
Autor: Mateusz Slodkowicz
Grupa: D3
Numer Indeksu: 167675
Opis: Program wczyta 3 zmienne i wypisze sume, srednia i srednia harmoniczna.
*/
#include <iostream>
int main()
{
int a = 0;
int b = 0;
int c = 0;
std::cout << "Podaj pierwsza wartosc: ";
std::cin >> a;
std::cout << "Podaj druga wartosc: ";
std::cin >> b;
std::cout << "Podaj trzecia wartosc: ";
std::cin >> c;
std::cout << "\nSuma: " << a+b+c << "\n";
std::cout << "Srednia arytmetyczna: " << (float)(a+b+c)/3.0f << "\n";
std::cout << "Srednia harmoniczna: " << 3.0/(1.0/a + 1.0/b +1.0/c) << "\n";
return 0;
}

View File

@ -0,0 +1,28 @@
/*
Autor: Mateusz Slodkowicz
Grupa: D3
Numer Indeksu: 167675
Opis: Program wczyta dlugosc trasy rowerzysty w metrach oraz
wypisze w jakim czasie przebyl odcinek trasy na danym etapie.
*/
#include <iostream>
int main()
{
float d = 0;
std::cout << "Podaj odleglosc trasy w metrach: ";
std::cin >> d;
float czas = ((d * 0.2f) / 10) + ((d * 0.5f) / 5) +((d * 0.3f) / 10);
int godziny = czas/3600;
int minuty = (czas - godziny*3600)/60;
int sekundy = (czas - godziny*3600 - minuty*60);
std::cout << "Trasa przejechana w:\n";
std::cout << godziny <<" godz. "
<< minuty <<" min. "
<< sekundy << " sek." <<std::endl;
return 0;
}

View File

@ -0,0 +1,191 @@
/*
Autor: Mateusz Slodkowicz
Grupa: D3
Numer Indeksu: 167675
*/
#include <cmath>
#include <iomanip>
#include <iostream>
// ===========
// ZADANIE 1
// ===========
void zadanie1()
{
std::cout << "Zadanie 1" << std::endl;
int x = 0;
int y = 0;
std::cout << "Podaj x: ";
std::cin >> x;
if (x == 0)
{
std::cout << "x jest rowne 0, nie mozna wykonac obliczen" << std::endl;
return;
}
std::cout << "Podaj y: ";
std::cin >> y;
if (x > y)
std::cout << "x jest wieksze od y\n";
else if (x == y)
std::cout << "x jest rowne y\n";
else
std::cout << "x yest mniejsze od y\n";
std::cout << ((x % 2) ? "x jest nieparzyste" : "x jest parzyste") << std::endl;
}
// ===========
// ZADANIE 2
// ===========
void zadanie2()
{
std::cout << "\nZadanie 2" << std::endl;
double x = 0;
double y = 0;
std::cout << "Podaj x: ";
std::cin >> x;
if (x >= -10.0 && x <= 0.0)
y = (3.0 / 4.0) * (x * x * x) + (7.0 / 8.0) * x;
else if (x > 0.0 && x <= 4.0)
y = 1.0 / (sin(x) + 3.0);
else
y = (-2.0 * x) / 3.0;
std::cout << "y = " << y << std::endl;
}
// ===========
// ZADANIE 3
// ===========
void zadanie3()
{
std::cout << "\nZadanie 3" << std::endl;
unsigned short wybor = 0;
double R = 0;
double h = 0;
std::cout << "Co chcesz obliczyc?\n"
"1. Objetosc kuli\n"
"2. Objetosc walca\n"
"3. Objetosc stozka\n";
while (!(wybor >= 1 && wybor <= 3)) // Zapetlenie az nie zostanie wybrana odpowiedz z zakresu 1-3
{
std::cout << "Twoj wybor: ";
std::cin >> wybor;
}
switch (wybor)
{
case 1:
std::cout << "Podaj promien kuli: ";
std::cin >> R;
if (R <= 0)
std::cout << "Promien musi byc wiekszy od zera!" << std::endl;
else
std::cout << "Objetosc kuli wynosi: " << ((4.0 / 3.0) * M_PI * R * R * R) << std::endl;
break;
case 2:
std::cout << "Podaj promien podstawy walca: ";
std::cin >> R;
if (R <= 0)
{
std::cout << "Promien musi byc wiekszy od zera!" << std::endl;
break;
}
std::cout << "Podaj wysokosc walca: ";
std::cin >> h;
if (h <= 0)
{
std::cout << "Wysokosc musi byc wieksza od zera!" << std::endl;
break;
}
std::cout << "Objetosc walca: " << (M_PI * R * R * h) << std::endl;
break;
case 3:
std::cout << "Podaj promien podstawy stozka: ";
std::cin >> R;
if (R <= 0)
{
std::cout << "Promien musi byc wiekszy od zera!" << std::endl;
break;
}
std::cout << "Podaj wysokosc stozka: ";
std::cin >> h;
if (h <= 0)
{
std::cout << "Wysokosc musi byc wieksza od zera!" << std::endl;
break;
}
std::cout << "Objetosc stozka: " << ((1.0 / 3.0) * M_PI * R * R * h) << std::endl;
break;
default:
break;
}
}
// ===========
// ZADANIE 4
// ===========
void zadanie4()
{
std::cout << "\nZadanie 4" << std::endl;
double waga = 0;
double odleglosc = 0;
std::cout << "Podaj odleglosc w kilometrach: ";
std::cin >> odleglosc;
if (odleglosc <= 0)
{
// Nie ma podanej minimalnej odleglosci wiec zakladam ze musi byc jedynie wieksza od zera
std::cout << "Odleglosc musi byc wieksza od zera!" << std::endl;
return;
}
const int ILE = (ceil(odleglosc / 100.0)); // Zwiekszenie mnoznika co 100 km
std::cout << "Podaj wage paczki w kilogramach w zakresie 0-20: ";
std::cin >> waga;
std::cout << std::fixed << std::setprecision(2);
if (waga > 20.0 || waga <= 0)
{
std::cout << "Waga z poza zakresu!" << std::endl;
return;
}
else if (waga <= 2.0)
std::cout << "Cena: " << (5.30) * ILE << "zl" << std::endl;
else if (waga <= 6.0)
std::cout << "Cena: " << (6.20) * ILE << "zl" << std::endl;
else if (waga <= 10.0)
std::cout << "Cena: " << (7.70) * ILE << "zl" << std::endl;
else if (waga <= 20.0)
std::cout << "Cena: " << (10.80) * ILE << "zl" << std::endl;
}
// ======
// MAIN
// ======
int main()
{
zadanie1();
zadanie2();
zadanie3();
zadanie4();
return 0;
}

View File

@ -0,0 +1,186 @@
/*
Autor: Mateusz Słodkowicz
Grupa: D3
Numer Indeksu: 167675
*/
#include <cstdio>
#include <iostream>
void wypisz_tabliczke(const unsigned int);
double srednia(const int, const unsigned int);
double suma(const int);
// =========
// MAIN
// =========
int main()
{
// Zadania w main'ie podzieliłem na mniejsze scopy aby mieć możliwość zwijania w edytorze.
// Zadanie 1
{
unsigned int n = 0;
std::cout << "Zadanie 1\n";
while (n < 1 || n > 10)
{
std::cout << "Podaj wielkosc tabliczki: ";
std::cin >> n;
}
wypisz_tabliczke(n);
}
// Zadanie 2
// W zadaniu nie widzę żeby było określone czy wczytywanie wartości ma być w funkcji czy w main'ie więc założyłem że
// w mainie, funkcja jedynie wylicza średnią
{
std::cout << "\nZadanie 2\n"
"Podawaj liczby do wyliczenia sredniej, podaj 0 by zakonczyc (0 nie zostatnie uwzglednione przy "
"obliczeniach)\n";
int suma = 0;
unsigned int ile = 0;
int last = 0;
do
{
std::cout << "Podaj liczbe: ";
std::cin >> last;
if (last)
{
++ile;
suma += last;
}
} while (last);
std::cout << "Srednia: " << srednia(suma, ile) << "\n";
}
// Zadanie 3
{
std::cout << "\nZadanie 3\n";
int m = -1;
while (m < 0)
{
std::cout << "Podaj m wieksze lub rowne 0: ";
std::cin >> m;
}
std::cout << "Suma: " << suma(m) << "\n";
}
// Zadanie 4
// Piętra zaczynam liczyć od parteru więc w przypadku podania jednego piętra będzie to jedynie parter (piętro 0).
//
// Zakładam że w przypadku "pominięcia" piętra powinno być dodane kolejne aby w przypadku podania na przykład 14
// pięter było ich faktycznie parter + 13 pięter mimo braku piętra 13 (zamiast piętra 13 będzie piętro 14).
//
// Używam string dla nazwy hotelu, w uwagach
// jest informacja aby nie używać tablic jednak zakładam że w tym wypadku string jest dopuszczalny.
{
std::cout << "\nZadanie 4\n";
std::string nazwa;
unsigned int pietra = 0;
unsigned int aktualne_pietro = 0;
unsigned int liczba_pokoi = 0, liczba_zajetych = 0;
std::cout << "Podaj nazwe hotelu: ";
std::cin >> nazwa;
while (pietra < 1)
{
std::cout << "Podaj ilosc pieter: ";
std::cin >> pietra;
}
std::cout << "Liczba pokoi na pietro powinna byc nie mniejsza niz 5\n"
"Liczba zajetych nie moze byc wieksza niz liczba pokoi na pietrze\n";
while (pietra > 0)
{
if (aktualne_pietro == 13) // Pominięcie "pechowego" piętra
{
aktualne_pietro++;
continue;
}
unsigned int akt_pok = 0, akt_zaj = 0;
while (akt_pok < 5)
{
if (!aktualne_pietro)
std::cout << "Podaj liczbe pokoi na parterze: ";
else
std::cout << "Podaj liczbe pokoi na pietrze " << aktualne_pietro << ": ";
std::cin >> akt_pok;
}
do
{
std::cout << "Podaj liczbe zajetych pokoi (calkowita ilosc pokoi " << akt_pok << "): ";
std::cin >> akt_zaj;
} while (akt_zaj > akt_pok);
liczba_pokoi += akt_pok;
liczba_zajetych += akt_zaj;
pietra--;
aktualne_pietro++;
}
std::cout << "\nNAZWA HOTELU: " << nazwa << "\nILOSC POKOI: " << liczba_pokoi
<< "\nILOSC WOLNYCH POKOI: " << liczba_pokoi - liczba_zajetych
<< "\nILOSC ZAJETYCH POKOI: " << liczba_zajetych
<< "\nPROCENT ZAJETYCH: " << (double(liczba_zajetych) / double(liczba_pokoi)) * 100.0 << "%"
<< std::endl;
}
return 0;
}
// =========
// FUNKCJE
// =========
void wypisz_tabliczke(const unsigned int wielkosc)
{
// Nagłówek
std::cout << " |";
for (int i = 1; i <= wielkosc; ++i)
{
std::printf("%4i", i); // Używam printf zamiast cout z uwagi na łatwiejsze/bardziej czytelne formatowanie
// Formatowanie na 4 znaki jako że max wielkość to 10
}
std::cout << "\n----+";
for (int i = 1; i <= wielkosc; ++i)
{
std::cout << "----"; // 4 myślniki na liczbę dla zgodności z formatowaniem, może wyglądać niepoprawnie w
// przypadku używania czcionki o różnej szerokości znaków.
}
// Właściwa tabela
for (int i = 1; i <= wielkosc; ++i)
{
std::printf("\n%-4i|", i);
for (int j = 1; j <= wielkosc; ++j)
{
std::printf("%4i", i * j);
}
}
std::cout << std::endl;
}
double srednia(const int suma, const unsigned int ile)
{
if (!ile)
return 0;
else
return double(suma) / double(ile);
}
double suma(const int m)
{
double S = 0;
for (int j = 0; j <= m; ++j)
{
S += (1.0 + j) / (2 * (j * j * j) + 3);
}
return S;
}

12
README.org Normal file
View File

@ -0,0 +1,12 @@
#+TITLE: AHE - Ćwiczenia i inne
#+DESCRIPTION: Archiwum ćwiczeń i projektów
#+AUTHOR: Mateusz Słodkowicz
#+OPTIONS: \n:t
#+LANGUAGE: pl
Repozytorium na kod z ćwiczeń, projektów itd. z uczelni [[https://www.ahe.lodz.pl/][AHE]].
W [[./org][org]] znajdują się pliki .org z których generowane są pliki README.md
* Rok I
Algorytmy i struktury danych - [[./Algorytmy i struktury danych][Link]]
Podstawy programowania I - [[./Podstawy Programowania I][Link]]

1
org/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
ltximg/

53
org/AiSD.org Normal file
View File

@ -0,0 +1,53 @@
#+TITLE: Algorytmy i Struktury Danych
#+AUTHOR: Mateusz Słodkowicz
#+OPTIONS: \n:t
#+LANGUAGE: pl
#+EXPORT_FILE_NAME: ../Algorytmy i struktury danych/README.md
#+PANDOC_OPTIONS: lua-filter:fix.lua
Zadania/Ćwiczenia z przedmiotu Algorytmy i Struktury Danych.
* Ćwiczenie 2 - Zadanie 1
Program na rozwiązywanie równania kwadratowego.
*Wymagania na program*:
1. Aplikacja konsolowa (prosty program)
2. Na wejściu programu należy podać wartości a,b,c
3. Na wyjściu program wypisuje komunikaty, opisane algorytmem
[[./Pascal/AiSD5_C2 Ćwiczenie 2/zad1_rownanie_kwadratowe.pas][Pascal]] [[./Python/AiSD5_C2 Ćwiczenie 2/zad1_rownanie_kwadratowe.py][Python]]
* Ćwiczenie 2 - Zadanie 2
*Definicja*
Rok przestępny to taki, który spełnia następujące warunki:
- jest podzielny przez 4 i niepodzielny przez 100
lub
- jest podzielny przez 400
*Wymagania na program*:
1. Aplikacja konsolowa (prosty program)
2. Na wejściu programu należy podać liczbę określającą numer roku
3. Na wyjściu program wypisuje komunikat, czy podany rok jest przestępny.
4. Podziel program na cztery części:
1) Funkcja typu całkowitego czytająca numer roku podany przez użytkownika i zwracająca odczytaną liczbę
2) Funkcja typu logicznego, której argumentem jest liczba całkowita sprawdzająca, czy rok jest przestępny
3) Procedura, której argumentami są: numer roku i wartość logiczna, wypisująca na konsoli, czy rok jest przestępny
4) Procedura zawierająca w sobie wywołania pozostałych funkcji i procedur, która jest wywoływana z programu głównego.
[[./Pascal/AiSD5_C2 Ćwiczenie 2/zad2_rok_przestepny.pas][Pascal]] [[./Python/AiSD5_C2 Ćwiczenie 2/zad2_rok_przestepny.py][Python]]
* Ćwiczenie 2 - Zadanie 3
Obliczanie sumy cyfr
*Wymagania na algorytm*:
1. Algorytm iteracyjny (nie rekurencyjny)
*Wymagania na program*:
1. Aplikacja konsolowa (prosty program)
2. Na wejściu programu należy podać liczbę całkowitą.
3. Na wyjściu program wypisuje wynik obliczeń.
4. Podziel program na cztery części:
1) Funkcja typu całkowitego czytająca liczbę całkowitą
2) Funkcja typu całkowitego, której argumentem jest liczba całkowita, a wynikiem suma cyfr tej liczby
3) Procedura wypisująca wynik obliczeń, której argumentami są: liczba całkowita i suma cyfr tej liczby
4) Procedura zawierająca w sobie wywołania pozostałych funkcji i procedur, która jest wywoływana z programu głównego.
[[./Pascal/AiSD5_C2 Ćwiczenie 2/zad3_suma_cyfr.pas][Pascal]] [[./Python/AiSD5_C2 Ćwiczenie 2/zad3_suma_cyfr.py][Python]]

182
org/PP1.org Normal file
View File

@ -0,0 +1,182 @@
#+TITLE: Podstawy Programowania I
#+AUTHOR: Mateusz Słodkowicz
#+OPTIONS: \n:t
#+OPTIONS: tex:t
#+OPTIONS: toc:nil
#+LANGUAGE: pl
#+EXPORT_FILE_NAME: ../Podstawy Programowania I/README.md
#+PANDOC_OPTIONS: lua-filter:fix.lua
Zadania/Ćwiczenia z przedmiotu Podstawy Programowania I
* Zadania 1
** Zadanie 1
Napisz program, który zapyta użytkownika o liczbę chłopców i dziewcząt zapisanych do klasy.
Program powinien wyświetlać wartość procentową chłopców i dziewcząt w klasie.
[[file:Zadanie 1.1/zadanie1.cpp][C++]]
** Zadanie 2
Kino przechowuje tylko pewien procent przychodu ze sprzedaży biletów. Reszta trafia do
dystrybutora. Napisz program obliczający dochód kina i zysk kasy biletowej za dzień.
Załóż, że kino zatrzymuje 20% zysku kasy biletowej
Program powinien pytać ile zostało sprzedanych biletów dla dzieci i dorosłych. (Cena biletu dla
dorosłych wynosi 10 zł, a dla dziecka 6 zł). Wyświetlony powinien zostać komunikat podobny do
poniższego:
#+begin_example
Sprzedane bilety dla dorosłych:
Sprzedane bilety dla dzieci:
Zysk kasy brutto:
Zysk kasy netto:
Kwota zapłacona dystrybutorowi:
#+end_example
[[./Zadanie 1.1/zadanie2.cpp][C++]]
** Zadanie 3
Zadeklarować trzy zmienne typu całkowitego. Wczytać dane. Obliczyć sumę tych liczb, ich średnią
arytmetyczną i średnią harmoniczną. Wyświetlić wyniki.
[[./Zadanie 1.1/zadanie3.cpp][C++]]
** Zadanie 4
Rowerzysta pokonuje drogę o długości d w trzech etapach. Przez d oznaczono całą długość drogi
przebytej przez rowerzystę. Przebyta droga i średnia prędkość w kolejnych etapach:
#+begin_example
etap I 0,2 d 10 m/s
etap II 0,5 d 5 m/s
etap III 0,3 d 10 m/s
#+end_example
Należy napisać program obliczający całkowity czas jazdy rowerzysty. Wyniki przeliczyć na godziny,
minuty, sekundy.
Wczytać długość drogi d, wyświetlić wyniki.
[[./Zadanie 1.1/zadanie4.cpp][C++]]
* Zadania 2
Uwagi:
* Wszystkie zadania powinny być w jednym programie, kolejne zadania oddzielone liniami komentarza.
* Program powinien czytelne wczytywanie danych i czytelne wypisywanie wyników.
* W obliczeniach nie należy korzystać z funkcji pow()
* Stała pi M_PI należy dołączyć bibliotekę matematyczną #include <cmath>
[[./Zadanie 1.2/zadanie.cpp][C++]]
** Zadanie 1
Wczytać dwie liczby typu całkowitego (x, y) i wypisać, która liczba jest większa a może są takie same.
Sprawdzić czy x jest liczbą nieparzystą. Wypisać odpowiedni komunikat.
Nie wykonywać działań, kiedy pierwsza wczytana liczba będzie zerem.
** Zadanie 2
Obliczyć wartość funkcji określonej wzorem:
$$
\large y(x) = \begin{cases}
\frac{3}{4} \cdot x^{3} \cdot \frac{7}{8} x & \text{dla x ∈ <-10, 0>} \\\\
\frac{1}{sin(x) + 3} & \text{dla x ∈ (0, 4>} \\\\
-2x/3 & \text{dla pozostałych}
\end{cases}
$$
Dane: x typu rzeczywistego
** Zadanie 3
Napisać program pozwalający obliczyć
1. Objętość kuli (dane: R promień kuli)
2. Objętość walca (dane: promień podstawy walca, h wysokość walca)
3. Objętość stożka (dane: R promień podstawy stożka, h wysokość stożka)
W programie należy użyć struktury wielokrotnego wyboru switch.
Obliczoną wartość wypisać na ekranie.
** Zadanie 4
Firma kurierska pobiera opłaty zgodnie z poniższym cennikiem:
| Waga paczki | Opłata za każde 100 km (zł) |
|------------------------------------------+-----------------------------|
| 2 kg lub mniej | 5,30 |
| Powyżej 2 kg, lecz nie więcej niż 6 kg | 6,20 |
| Powyżej 6 kg, lecz nie więcej niż 10 kg | 7,70 |
| Powyżej 10 kg, lecz nie więcej niż 20 kg | 10,80 |
Napisz program, który prosi o wpisanie wagi paczki i odległości, jaką musi przebyć przesyłka, a następnie wyświetli cenę.
Weryfikacja poprawności wprowadzanych danych: program nie powinien przyjmować wagi paczki mniejszej lub równej 0 kg ani powyżej 20 kg (to największa waga paczki, jaką może przyjąć firma).
* Zadania 3
Uwagi:
* Wszystkie punkty powinny być realizowane w jednym programie.
* W programie należy użyć pętli for, while, do while. Nie powinno być w programie pętli nieskończonych. Nie
należy używać tablic. Nie używać funkcji pow
* Czytelność komunikatów. Komunikaty powinny być krótkie, ale tak sformułowane, żeby nie było
wątpliwości, które zadanie jest wykonywane.
[[./Zadanie 1.3/zadanie.cpp][C++]]
** Zadanie 1
Funkcja, który wyświetli tabliczkę mnożenia liczb od 1 do n w następującej postaci
| | 1 | 2 | 3 |
|---+---+---+---|
| 1 | 1 | 2 | 3 |
| 2 | 2 | 4 | 6 |
| 3 | 3 | 6 | 9 |
n należy wczytać, n <1, 10>.
W tym przypadku n = 3.
** Zadanie 2
Funkcja, która oblicza i zwraca średnią kilku liczb całkowitych przy założeniu, że ostatnia wczytana wartość
jest znacznikiem 0. Przykładowa seria wejściowa może być
#+BEGIN_EXAMPLE
10 8 11 7 9 0
#+END_EXAMPLE
wskazując, że ma być wyliczona średnia wartości poprzedzających 0.
** Zadanie 3
Funkcja, który oblicza i zwraca sumę S określoną wzorem:
$$
\large {S = \sum^{m}_{k=0}} \frac{1+j}{2j^3 + 3}
$$
Dane: m
** Zadanie 4
Ten punkt powinien działać w pętli, bez funkcji
Napisz program obliczający obłożenie hotelu. Program powinien wystartować, pytając użytkownika o
nazwę hotelu i liczbę pięter w hotelu. Pętla powinna iterować raz na każde piętro. W każdej iteracji pętla
powinna zapytać użytkownika o liczbę pokoi na piętrze i liczbę pokoi zajętych.
Po wszystkich iteracjach program powinien wyświetlić, ile pokoi ma hotel, ile z nich jest zajętych, a ile wolnych oraz procent, jaki
stanowią zajęte pokoje.
UWAGA. Zdarza się, że w część hoteli nie ma trzynastego piętra (może to być inny numer piętra).
Pętla w tym programie powinna pomijać iteracje na tym piętrze.
Weryfikacja poprawności wprowadzanych danych: Nie akceptuj liczby mniejszej niż 1 dla liczby pięter.
Nie akceptuj liczby mniejszej niż 5 dla liczby pokoi na piętrze.
* Projekt 1
Napisz program, który pozwala użytkownikowi zagrać z komputerem w grę kamień, papier, nożyce.
Użytkownik powinien mieć możliwość rozegrania kilku rund.
Program powinien działać następująco:
1. Kiedy program zostaje uruchomiony, generowana jest liczba losowa od 1 do 3. Jeśli tą liczbą
jest 1, to oznacza, że komputer wybrał kamień. Jeśli tą liczbą jest 2, to komputer wybrał
papier. Jeśli tą liczbą jest 3,to komputer wybrał nożyce (nie wyświetlaj jeszcze wyboru
komputera).
2. Użytkownik wprowadza swój wybór: „kamień”, „papier” albo „nożyce” na klawiaturze.
3. Wyświetlany jest wybór komputera.
4. Zwycięzca jest wybierany na podstawie następujących zasad:
* Jeśli jeden gracz wybierze kamień, a drugi nożyce, to wygrywa kamień
(kamień tępi nożyce).
* Jeśli jeden gracz wybierze nożyce, a drugi papier, to wygrywają nożyce
(nożyce przecinają papier).
* Jeśli jeden gracz wybierze papier, a drugi kamień, to wygrywa papier
(papier owija kamień).
* Jeśli obaj gracze wybiorą ten sam ruch, to rozgrywka musi zostać powtórzona, aby
wyłonić zwycięzcę.
Program powinien być napisany z wykorzystaniem poznanych instrukcji języka.
Program można rozbudować, dodając nowe opcje lub dokonać innych zmian. Należy wtedy dołączyć
krótki opis programu.
[[./Projekt1/main.cpp][C++]]

4
org/fix.lua Normal file
View File

@ -0,0 +1,4 @@
function Link(el)
el.target = el.target:gsub(" ", "%%20")
return el
end