Skip to content

Commit 6560a87

Browse files
authored
AHE - Podstawy Programowania - Projekt
1 parent 1bb0f5c commit 6560a87

3 files changed

+351
-0
lines changed
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
/*
2+
========================================================
3+
Krzysztof Matuszewski
4+
informatyka spec. sieci teleinformatyczne, rok I sem. II
5+
Podstawy programowania - Projekt - Zadanie 2
6+
========================================================
7+
*/
8+
9+
#include <iostream>
10+
#include <cstdlib>
11+
#include <ctime>
12+
13+
using namespace std;
14+
15+
void wygrana() {
16+
cout << "WYGRANA! :)" << endl;
17+
}
18+
19+
void przegrana() {
20+
cout << "PRZEGRANA :(" << endl;
21+
}
22+
23+
int main() {
24+
25+
// przygotowanie
26+
srand(time(0));
27+
int rzut1, rzut2, suma, punkty;
28+
punkty = 0;
29+
bool walka_o_punkty = 0;
30+
31+
cout << "GRA W KOSCI" << endl;
32+
cout << "---------------------" << endl << endl;
33+
34+
do {
35+
// czy wykonac kolejny rzut?
36+
cout << endl << "Wykonaj rzut - Enter" << endl;
37+
cin.ignore();
38+
39+
// rzut koscmi
40+
rzut1 = (rand() % 6 + 1);
41+
rzut2 = (rand() % 6 + 1);
42+
43+
44+
45+
// policzenie sumy punktow
46+
suma = rzut1 + rzut2;
47+
48+
// wypisanie wynikow i sumy
49+
cout << "Wyrzuciles liczby {" << rzut1 << "," << rzut2 << "} a suma punktow to " << suma << endl;
50+
51+
if (walka_o_punkty) {
52+
if (suma == punkty) { // jezeli suma bedzie rowna punktom - gracz moze kontynuowac
53+
walka_o_punkty = 0;
54+
cout << "Wyszedles z walki o punkty! :)" << endl;
55+
}
56+
else if (suma == 7) { // jezeli suma bedzie rowna 7 podczas walki o punkty - gracz przegrywa
57+
cout << "Trafiles 7 podczas walki o punkty!" << endl;
58+
przegrana();
59+
break;
60+
}
61+
}
62+
else {
63+
// jezeli suma przy pierwszym rzucie wynosi 7 lub 11 - gracz wygyrwa
64+
if (suma == 7 || suma == 11) {
65+
wygrana();
66+
break;
67+
// jezeli suma przy pierwszym rzucie wynosi 2, 3 lub 12 - gracz przegrywa
68+
}
69+
else if (suma == 2 || suma == 3 || suma == 12) {
70+
przegrana();
71+
break;
72+
// w kazdym innym przypadku - suma staje sie punktami gracza
73+
}
74+
else {
75+
punkty = suma;
76+
cout << endl;
77+
cout << "Walka o punkty, wymagana suma: [" << punkty << ']' << endl;
78+
cout << "Chcesz kontynuowac?\n[1] Tak\n[0] Nie" << endl;
79+
cin >> walka_o_punkty;
80+
cout << endl << endl;
81+
if (!walka_o_punkty) {
82+
break;
83+
}
84+
}
85+
}
86+
87+
88+
} while (true); // wychodzenie z tej petli odbbywa sie tylko i wylacznie slowem kluczowym break
89+
90+
return 0;
91+
}
Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
/*
2+
========================================================
3+
Krzysztof Matuszewski
4+
informatyka spec. sieci teleinformatyczne, rok I sem. II
5+
Podstawy programowania - Projekt - Zadanie 1
6+
========================================================
7+
*/
8+
9+
#include <iostream>
10+
11+
using namespace std;
12+
13+
float wyniki[12] = { -128, 48.5, 72.3, 150.5, -10, 332, 134, 12, 185.9, -54, 100, 332 };
14+
string miesiace[12] = { "styczen", "luty", "marzec", "kwiecien", "maj", "czerwiec", "lipiec", "sierpien", "wrzesien", "pazdziernik", "listopad", "grudzien" };
15+
16+
int max(float tab[], int rozmiar);
17+
int min(float tab[], int rozmiar);
18+
float srednia(float tab[], int rozmiar);
19+
int straty(float tab[], int rozmiar);
20+
21+
int main() {
22+
bool powtorz = false;
23+
24+
do {
25+
// p. 1 - w ktorym miesiacu wynik firmy byl maksymalny, a w ktorym minimalny
26+
cout << "Najlepszy miesiac to: " << miesiace[max(wyniki, 12) - 1] << endl;
27+
cout << "Najgorszy miesiac to: " << miesiace[min(wyniki, 12) - 1] << endl;
28+
29+
// p. 2 - jaki byl wynik sredni
30+
cout << "Sredni zysk w skali roku wyniosl: " << srednia(wyniki, 12) << endl;
31+
32+
// p. 3 - ile razy firma zanotowala straty i w jakich miesiacach
33+
cout << "\nSTRATY:" << endl;
34+
cout << "Firma zanotowala straty " << straty(wyniki, 12) << " razy" << endl;
35+
36+
37+
38+
// p. 4 - mozliwa poprawa danych w programie i ponowne jego wykonywanie
39+
cout << "-----------------------------------------------------" << endl;
40+
cout << "Czy chcesz poprawic dane z koregos miesiaca? Wybierz:" << endl;
41+
cout << "[0] Nie\n[1] Tak" << endl;
42+
int wybor;
43+
cin >> wybor;
44+
45+
switch (wybor) {
46+
default:
47+
break;
48+
case 0:
49+
return 0;
50+
break;
51+
case 1:
52+
powtorz = true; // sprawiamy zeby program wszedl w tryb dzilania powtornego
53+
system("cls"); // czyscimy konsole
54+
55+
bool nieprawidlowy_miesiac = false;
56+
do {
57+
// wpisywanie miesiaca
58+
cout << "Wybierz miesiac do poprawy (od 1 do 12): " << endl;
59+
int numer_miesiaca;
60+
cin >> numer_miesiaca;
61+
62+
// sprawdzamy czy podano numer miesiaca od 1 do 12
63+
if (numer_miesiaca < 1 || numer_miesiaca > 12) {
64+
cout << "Wpisz poprawny numer miesiaca od 1 do 12!" << endl;
65+
nieprawidlowy_miesiac = true;
66+
}
67+
else {
68+
cout << "Popraw wartosc: " << wyniki[numer_miesiaca - 1] << ": " << endl;
69+
float nowa_wartosc;
70+
cin >> nowa_wartosc;
71+
wyniki[numer_miesiaca - 1] = nowa_wartosc;
72+
break; // jesli wszystko przebiegnie zgodnie z planem, przerwij petle
73+
}
74+
75+
} while (nieprawidlowy_miesiac);
76+
77+
break;
78+
}
79+
} while (powtorz);
80+
return 0;
81+
}
82+
83+
/*
84+
Program jest modulowy, rozpisany na funkcje,
85+
mozna dodawac z latwoscia do niego kolejne funkcje jak liczenie mediany bądź sume zyskow, sume strat itp.
86+
Ponizej funkcje sprawdzajace kolejno:
87+
- miesiac z najlepszym zyskiem
88+
- miesiac z nawieksza strata
89+
- sredni miesieczny wynik finansowy firmy z ostatniego roku
90+
- liczba strat i w jakich miesiacach
91+
*/
92+
93+
int max(float tab[], int rozmiar) {
94+
float najlepszy_wynik = 0;
95+
int najlepszy_miesiac = 1;
96+
97+
for (int i = 0; i < rozmiar; i++) {
98+
if (tab[i] > najlepszy_wynik) {
99+
najlepszy_wynik = tab[i];
100+
najlepszy_miesiac = i+1;
101+
}
102+
}
103+
104+
return najlepszy_miesiac;
105+
}
106+
107+
int min(float tab[], int rozmiar) {
108+
float najgorszy_wynik = tab[0];
109+
int najgorszy_miesiac = 1;
110+
111+
for (int i = 0; i < rozmiar; i++) {
112+
if (tab[i] < najgorszy_wynik) {
113+
najgorszy_wynik = tab[i];
114+
najgorszy_miesiac = i + 1;
115+
}
116+
}
117+
118+
return najgorszy_miesiac;
119+
}
120+
121+
float srednia(float tab[], int rozmiar) {
122+
float srednia = 0;
123+
float suma = 0;
124+
for (int i = 0; i < rozmiar; i++) {
125+
suma += tab[i];
126+
}
127+
128+
srednia = suma / rozmiar;
129+
130+
return srednia;
131+
}
132+
133+
int straty(float tab[], int rozmiar) {
134+
int ile_razy_strata = 0;
135+
136+
for (int i = 0; i < rozmiar; i++) {
137+
if (tab[i] < 0) {
138+
ile_razy_strata++;
139+
cout << miesiace[i + 1] << " " << tab[i] << endl;
140+
}
141+
}
142+
return ile_razy_strata;
143+
}
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
/*
2+
========================================================
3+
Krzysztof Matuszewski
4+
informatyka spec. sieci teleinformatyczne, rok I sem. II
5+
Podstawy programowania - Projekt - Zadanie 2
6+
========================================================
7+
*/
8+
9+
#include <iostream>
10+
#include <cstdlib>
11+
#include <ctime>
12+
13+
using namespace std;
14+
15+
// stan konta z jakim zaczynamy
16+
int pieniadze = 100;
17+
18+
void wygrana() {
19+
cout << "WYGRANA! :)" << endl;
20+
pieniadze += 10;
21+
cout << "[+] Dodano 10PLN, stan konta to " << pieniadze << "PLN" << endl;
22+
}
23+
24+
void przegrana() {
25+
cout << "PRZEGRANA :(" << endl;
26+
pieniadze -= 10;
27+
cout << "[-] Odejeto 10PLN, stan konta to " << pieniadze << "PLN" << endl;
28+
}
29+
30+
31+
int main() {
32+
33+
// przygotowanie
34+
srand(time(0)); // w celu losowania
35+
int rzut1, rzut2, suma, punkty;
36+
punkty = 0;
37+
bool walka_o_punkty = 0; // tryb walki o punkty (wtedy gdy gracz musi trafic liczbe punktow, ktora wczesniej wylosowal)
38+
39+
cout << "=============\nGRA W KOSCI\n=============" << endl << endl;
40+
cout << "Poczatkowy stan konta " << pieniadze << "PLN" << endl;
41+
42+
do {
43+
// czy wykonac rzut/kolejny rzut?
44+
cout << endl << "[1] Wykonaj rzut\n[0] Wyjdz z gry" << endl;
45+
int dalej;
46+
cin >> dalej;
47+
if (dalej != 1) { break; } // jezeli gracz wybierze cokolwiek innego niz 1 - zakoncz gre
48+
49+
// rzut koscmi czyli dwa losowania od 1 do 6
50+
rzut1 = (rand() % 6 + 1);
51+
rzut2 = (rand() % 6 + 1);
52+
53+
// policzenie sumy punktow
54+
suma = rzut1 + rzut2;
55+
56+
// wypisanie wynikow i sumy
57+
cout << "Wyrzuciles liczby {" << rzut1 << "," << rzut2 << "} a suma punktow to " << suma << endl;
58+
59+
// TRYB WALKI ===================================================================================
60+
if (walka_o_punkty) {
61+
if (suma == punkty) { // jezeli suma bedzie rowna punktom - gracz moze kontynuowac
62+
walka_o_punkty = 0;
63+
cout << "Wyszedles z walki o punkty! :)" << endl;
64+
}
65+
else if (suma == 7) { // jezeli suma bedzie rowna 7 podczas walki o punkty - gracz przegrywa
66+
67+
cout << "Trafiles 7 podczas walki o punkty!" << endl;
68+
przegrana();
69+
70+
if (pieniadze <= 0) {
71+
cout << "KONIEC GRY" << endl;
72+
cout << "Stan konta " << pieniadze << "PLN" << endl;
73+
return 0;
74+
}
75+
}
76+
// TRYB ZWYKLY =================================================================================
77+
} else {
78+
// jezeli suma przy pierwszym rzucie wynosi 7 lub 11 - gracz wygyrwa
79+
if (suma == 7 || suma == 11) {
80+
wygrana();
81+
// jezeli suma przy pierwszym rzucie wynosi 2, 3 lub 12 - gracz przegrywa
82+
}
83+
else if (suma == 2 || suma == 3 || suma == 12) {
84+
przegrana();
85+
if (pieniadze <= 0) {
86+
cout << "KONIEC GRY" << endl;
87+
cout << "Stan konta " << pieniadze << "PLN" << endl;
88+
return 0;
89+
}
90+
}
91+
else { // w kazdym innym przypadku - suma staje sie punktami gracza
92+
punkty = suma;
93+
94+
cout << "\nWalka o punkty, wymagana suma: [" << punkty << "]\nChcesz kontynuowac?\n[1] Tak\n[0] Nie\n";
95+
int walka;
96+
cin >> walka;
97+
98+
cout << endl << endl;
99+
100+
if (walka != 1) {
101+
walka_o_punkty = false; // przy nastepnej iteracji petli ma sie wykonac tryb zwykly
102+
cout << "KONIEC GRY" << endl;
103+
cout << "Stan konta " << pieniadze << "PLN" << endl;
104+
return 0;
105+
}
106+
else {
107+
walka_o_punkty = true; // przy nastepnej iteracji petli ma sie wykonac tryb walki
108+
}
109+
}
110+
}
111+
} while (true); // wychodzenie z tej petli odbbywa sie tylko i wylacznie slowem kluczowym break
112+
113+
cout << "KONIEC GRY" << endl;
114+
cout << "Stan konta " << pieniadze << "PLN" << endl;
115+
116+
return 0;
117+
}

0 commit comments

Comments
 (0)