Update
This commit is contained in:
parent
72826f26b6
commit
aea0bdcc81
8
Podstawy Programowania II/.gitignore
vendored
Normal file
8
Podstawy Programowania II/.gitignore
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
*
|
||||||
|
|
||||||
|
!.gitignore
|
||||||
|
!**/
|
||||||
|
!*.cpp
|
||||||
|
!*.md
|
||||||
|
.#*.cpp
|
||||||
|
.#*.md
|
||||||
134
Podstawy Programowania II/Projekt 1/projekt.cpp
Normal file
134
Podstawy Programowania II/Projekt 1/projekt.cpp
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
/*
|
||||||
|
Autor: Mateusz Słodkowicz
|
||||||
|
Grupa: D3
|
||||||
|
Numer Indeksu: 167675
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <cstddef>
|
||||||
|
#include <cstdio>
|
||||||
|
#include <cstdlib>
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
void losujTablice(int[], size_t, size_t);
|
||||||
|
void wypiszTablice(int[], size_t);
|
||||||
|
double srednia(int[], size_t);
|
||||||
|
void bombel(int[], size_t);
|
||||||
|
double mediana(int[], size_t);
|
||||||
|
void policzOsoby(int[],int[],size_t,size_t);
|
||||||
|
std::string maxOcena(int[], size_t);
|
||||||
|
void histogram(int[], size_t);
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
const size_t N = 60;
|
||||||
|
const size_t OO = 20;
|
||||||
|
|
||||||
|
int oceny[N] = {0};
|
||||||
|
int ileOsob[OO] = {0};
|
||||||
|
|
||||||
|
srand(time(NULL));
|
||||||
|
|
||||||
|
losujTablice(oceny, N, OO);
|
||||||
|
std::cout << "Oceny: ";
|
||||||
|
wypiszTablice(oceny, N);
|
||||||
|
bombel(oceny, N);
|
||||||
|
std::cout << "Oceny posortowane: ";
|
||||||
|
wypiszTablice(oceny, N);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
std::cout << "Srednia: " << srednia(oceny, N) << "\n";
|
||||||
|
std::cout << "Mediana: " << mediana(oceny, N) << "\n";
|
||||||
|
policzOsoby(oceny, ileOsob, N, OO);
|
||||||
|
|
||||||
|
std::cout << "Najwiecej wystepuje ocena/y: " << maxOcena(ileOsob, OO) << "\n";
|
||||||
|
histogram(ileOsob, OO);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void losujTablice(int tab[], size_t roz, size_t max)
|
||||||
|
{
|
||||||
|
for (size_t i = 0; i < roz; ++i)
|
||||||
|
{
|
||||||
|
tab[i] = rand() % max;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void wypiszTablice(int tab[], size_t roz)
|
||||||
|
{
|
||||||
|
for (size_t i = 0; i < roz; ++i)
|
||||||
|
{
|
||||||
|
std::cout << tab[i] << ((i + 1 == roz) ? "\n" : " ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
double srednia(int tab[], size_t roz)
|
||||||
|
{
|
||||||
|
int suma = 0;
|
||||||
|
for (size_t i = 0; i < roz; ++i)
|
||||||
|
{
|
||||||
|
suma += tab[i];
|
||||||
|
}
|
||||||
|
return double(suma) / double(roz);
|
||||||
|
}
|
||||||
|
void bombel(int tab[], size_t roz)
|
||||||
|
{
|
||||||
|
int tmp;
|
||||||
|
for (size_t i = 0; i < roz; ++i)
|
||||||
|
{
|
||||||
|
for (size_t j = 0; j < roz; ++j)
|
||||||
|
{
|
||||||
|
if (tab[j] > tab[i])
|
||||||
|
{
|
||||||
|
tmp = tab[j];
|
||||||
|
tab[j] = tab[i];
|
||||||
|
tab[i] = tmp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
double mediana(int tab[], size_t roz)
|
||||||
|
{
|
||||||
|
return (roz % 2 == 0)
|
||||||
|
? ((double(tab[roz / 2]) + double(tab[(roz / 2) - 1])) / 2.0)
|
||||||
|
: double((tab[roz / 2]));
|
||||||
|
}
|
||||||
|
void policzOsoby(int oceny[], int osoby[], size_t roz, size_t maxOcena)
|
||||||
|
{
|
||||||
|
for (size_t i = 0; i < maxOcena; ++i)
|
||||||
|
{
|
||||||
|
osoby[i] = 0;
|
||||||
|
}
|
||||||
|
for (size_t i = 0; i < roz; ++i)
|
||||||
|
{
|
||||||
|
osoby[oceny[i]] += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string maxOcena(int ileOsob[], size_t maxOcena)
|
||||||
|
{
|
||||||
|
std::string ret = "";
|
||||||
|
int max = -1;
|
||||||
|
for (size_t i = 0; i < maxOcena; ++i)
|
||||||
|
{
|
||||||
|
if (ileOsob[i] > max){
|
||||||
|
max = ileOsob[i];
|
||||||
|
ret = std::to_string(i);
|
||||||
|
}
|
||||||
|
else if (ileOsob[i] == max)
|
||||||
|
ret += ", " + std::to_string(i);
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
void histogram(int ileOsob[], size_t maxOcena)
|
||||||
|
{
|
||||||
|
for(size_t i = 0; i<maxOcena;++i)
|
||||||
|
{
|
||||||
|
printf("Ocena %2zu: ",i);
|
||||||
|
for(size_t j = 0; j<ileOsob[i];++j)
|
||||||
|
{
|
||||||
|
std::cout << "*";
|
||||||
|
}
|
||||||
|
|
||||||
|
std::cout << "\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
442
Podstawy Programowania II/Projekt 2/projekt.cpp
Normal file
442
Podstawy Programowania II/Projekt 2/projekt.cpp
Normal file
@ -0,0 +1,442 @@
|
|||||||
|
/*
|
||||||
|
Autor: Mateusz Słodkowicz
|
||||||
|
Grupa: D3
|
||||||
|
Numer Indeksu: 167675
|
||||||
|
|
||||||
|
Uwagi: Kod źródłowy powinien być zapisany z kodowaniem UTF-8
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include <fstream>
|
||||||
|
#include <limits>
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
#include <iostream>
|
||||||
|
#include <iomanip>
|
||||||
|
|
||||||
|
struct STUDENT
|
||||||
|
{
|
||||||
|
std::string imie_nazwisko;
|
||||||
|
int oceny[6];
|
||||||
|
double srednia;
|
||||||
|
std::string ocena_koncowa;
|
||||||
|
};
|
||||||
|
|
||||||
|
void czysc();
|
||||||
|
void menu(std::vector<STUDENT> &studenci);
|
||||||
|
void wypisz_wszystkich(std::vector<STUDENT> &studenci);
|
||||||
|
void wypisz_najlepszych(std::vector<STUDENT> &studenci);
|
||||||
|
void wypisz_wyszukanych(std::vector<STUDENT> &studenci, std::string szukany);
|
||||||
|
|
||||||
|
double srednia_wszystkich(std::vector<STUDENT> &studenci);
|
||||||
|
double najwyzsza_wartosc(std::vector<STUDENT> &studenci);
|
||||||
|
int powyzej_sredniej(std::vector<STUDENT> &studenci);
|
||||||
|
|
||||||
|
STUDENT tworz_studenta();
|
||||||
|
std::vector<STUDENT> wczytaj_dane(std::string sciezka);
|
||||||
|
void zapisz_dane(std::vector<STUDENT> &studenci, std::string sciezka);
|
||||||
|
void modyfikuj(std::vector<STUDENT> &studenci);
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
#ifdef _WIN32
|
||||||
|
system("chcp 65001"); // Zmiana kodowaniu wiersza poleceń na windowsie dla obsługi polskich znaków
|
||||||
|
#endif
|
||||||
|
std::cout << std::setprecision(3);
|
||||||
|
czysc();
|
||||||
|
std::vector<STUDENT> studenci;
|
||||||
|
bool wyjdz = false;
|
||||||
|
std::string tekst = "";
|
||||||
|
while(!wyjdz)
|
||||||
|
{
|
||||||
|
menu(studenci);
|
||||||
|
std::cout << "Wybór: ";
|
||||||
|
char wybor = 0;
|
||||||
|
while (!(std::cin >> wybor) || wybor < '0' || wybor > '9')
|
||||||
|
{
|
||||||
|
std::cin.clear();
|
||||||
|
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
|
||||||
|
std::cout << "Wybór: ";
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (wybor)
|
||||||
|
{
|
||||||
|
case '0':
|
||||||
|
wyjdz = true;
|
||||||
|
break;
|
||||||
|
case '1':
|
||||||
|
wypisz_wszystkich(studenci);
|
||||||
|
break;
|
||||||
|
case '2':
|
||||||
|
czysc();
|
||||||
|
studenci = wczytaj_dane("dane.txt");
|
||||||
|
break;
|
||||||
|
case '3':
|
||||||
|
czysc();
|
||||||
|
zapisz_dane(studenci, "dane.txt");
|
||||||
|
break;
|
||||||
|
case '4':
|
||||||
|
czysc();
|
||||||
|
std::cout << "Średnia: " << srednia_wszystkich(studenci);
|
||||||
|
break;
|
||||||
|
case '5':
|
||||||
|
czysc();
|
||||||
|
std::cout << "Średnia: " << srednia_wszystkich(studenci) << "\nIlośc studentów powyżej średniej: " << powyzej_sredniej(studenci);
|
||||||
|
break;
|
||||||
|
case '6':
|
||||||
|
czysc();
|
||||||
|
wypisz_najlepszych(studenci);
|
||||||
|
break;
|
||||||
|
case '7':
|
||||||
|
czysc();
|
||||||
|
tekst = "";
|
||||||
|
std::cout << "Podaj szukany fragment: ";
|
||||||
|
std::cin >> tekst;
|
||||||
|
wypisz_wyszukanych(studenci, tekst);
|
||||||
|
break;
|
||||||
|
case '8':
|
||||||
|
czysc();
|
||||||
|
studenci.push_back(tworz_studenta());
|
||||||
|
break;
|
||||||
|
case '9':
|
||||||
|
czysc();
|
||||||
|
modyfikuj(studenci);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void czysc()
|
||||||
|
{
|
||||||
|
#ifdef _WIN32
|
||||||
|
system("cls");
|
||||||
|
#else
|
||||||
|
system("clear");
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void menu(std::vector<STUDENT> &studenci)
|
||||||
|
{
|
||||||
|
std::cout << "\n\nAktualna ilość studentów: " << studenci.size() << "\n"
|
||||||
|
<< "1. Wypisz studentów\n"
|
||||||
|
<< "2. Wczytaj studentów z pliku dane.txt\n"
|
||||||
|
<< "3. Zapisz studentów do pliku dane.txt\n"
|
||||||
|
<< "4. Wypisz średnią wszystkich studentów\n"
|
||||||
|
<< "5. Wypisz ilość studentów powyżej średniej\n"
|
||||||
|
<< "6. Wypisz studentów z najwyższą średnią\n"
|
||||||
|
<< "7. Wyszukaj i wypisz dane studentów których imię/nazwisko zawiera szukany tekst\n"
|
||||||
|
<< "8. Dodaj studenta\n"
|
||||||
|
<< "9. Modyfikuj lub usuń studenta\n"
|
||||||
|
<< "0. Wyjdź\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
double licz_srednia(STUDENT &student)
|
||||||
|
{
|
||||||
|
double srednia = 0;
|
||||||
|
|
||||||
|
for (int i = 0; i < 6; ++i)
|
||||||
|
{
|
||||||
|
srednia += student.oceny[i];
|
||||||
|
}
|
||||||
|
srednia = srednia / 6.0;
|
||||||
|
return srednia;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string ocena(STUDENT &student)
|
||||||
|
{
|
||||||
|
if (student.srednia >= 91)
|
||||||
|
return "bardzo dobry";
|
||||||
|
if (student.srednia >= 81)
|
||||||
|
return "dobry plus";
|
||||||
|
if (student.srednia >= 71)
|
||||||
|
return "dobry";
|
||||||
|
if (student.srednia >= 61)
|
||||||
|
return "dostateczny plus";
|
||||||
|
if (student.srednia >= 51)
|
||||||
|
return "dostateczny";
|
||||||
|
return "niedostateczny";
|
||||||
|
}
|
||||||
|
|
||||||
|
STUDENT tworz_studenta()
|
||||||
|
{
|
||||||
|
STUDENT s;
|
||||||
|
std::string tmp_txt;
|
||||||
|
std::cout << "Podaj imię: ";
|
||||||
|
std::cin >> tmp_txt;
|
||||||
|
s.imie_nazwisko = tmp_txt;
|
||||||
|
tmp_txt = "";
|
||||||
|
std::cout << "Podaj nazwisko: ";
|
||||||
|
std::cin >> tmp_txt;
|
||||||
|
s.imie_nazwisko += " ";
|
||||||
|
s.imie_nazwisko += tmp_txt;
|
||||||
|
int tmp = -1;
|
||||||
|
for(int i = 0;i<6;++i)
|
||||||
|
{
|
||||||
|
std::cout << "Podaj ocenę " << i+1 <<": ";
|
||||||
|
while (!(std::cin >> tmp) || (tmp <50 && tmp !=0 ) || tmp > 100)
|
||||||
|
{
|
||||||
|
std::cin.clear();
|
||||||
|
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
|
||||||
|
std::cout << "Błąd, ocena musi być 50 <= ocena <= 100 lub równa 0\n";
|
||||||
|
std::cout << "Podaj ocenę " << i+1 <<": ";
|
||||||
|
}
|
||||||
|
s.oceny[i] = tmp;
|
||||||
|
}
|
||||||
|
s.srednia = licz_srednia(s);
|
||||||
|
s.ocena_koncowa = ocena(s);
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
void modyfikuj(std::vector<STUDENT> &studenci)
|
||||||
|
{
|
||||||
|
czysc();
|
||||||
|
wypisz_wszystkich(studenci);
|
||||||
|
std::cout << "\nCo chcesz zrobić?\n1.Modyfikuj\n2.Usuń\n3.Anuluj\nWybór: ";
|
||||||
|
char wybor = 0;
|
||||||
|
while (!(std::cin >> wybor) || wybor < '1' || wybor > '3')
|
||||||
|
{
|
||||||
|
std::cin.clear();
|
||||||
|
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
|
||||||
|
std::cout << "Wybór: ";
|
||||||
|
}
|
||||||
|
int id = -1;
|
||||||
|
switch (wybor)
|
||||||
|
{
|
||||||
|
case '1':
|
||||||
|
std::cout << "\nPodaj id: ";
|
||||||
|
while (!(std::cin >> id))
|
||||||
|
{
|
||||||
|
std::cin.clear();
|
||||||
|
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
|
||||||
|
std::cout << "\nPodaj id: ";
|
||||||
|
}
|
||||||
|
if (id < 0 || id >= studenci.size())
|
||||||
|
{
|
||||||
|
std::cout << "Błędne id!\n";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
studenci[id] = tworz_studenta();
|
||||||
|
break;
|
||||||
|
case '2':
|
||||||
|
std::cout << "\nPodaj id: ";
|
||||||
|
while (!(std::cin >> id))
|
||||||
|
{
|
||||||
|
std::cin.clear();
|
||||||
|
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
|
||||||
|
std::cout << "\nPodaj id: ";
|
||||||
|
}
|
||||||
|
if(id<0 || id>=studenci.size())
|
||||||
|
{
|
||||||
|
std::cout << "Błędne id!\n";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
studenci.erase(studenci.begin()+id);
|
||||||
|
break;
|
||||||
|
case '3':
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void zapisz_dane(std::vector<STUDENT> &studenci, std::string sciezka)
|
||||||
|
{
|
||||||
|
std::ofstream plik(sciezka);
|
||||||
|
if (!plik.is_open())
|
||||||
|
{
|
||||||
|
std::cout << "Nie można otworzyć pliku: " << sciezka << std::endl;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for (auto &s : studenci)
|
||||||
|
{
|
||||||
|
plik << s.imie_nazwisko << std::endl;
|
||||||
|
for (int i = 0; i < 6; ++i)
|
||||||
|
{
|
||||||
|
plik << s.oceny[i] << " ";
|
||||||
|
}
|
||||||
|
plik << "\n";
|
||||||
|
}
|
||||||
|
plik.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<STUDENT> wczytaj_dane(std::string sciezka)
|
||||||
|
{
|
||||||
|
std::vector<STUDENT> studenci;
|
||||||
|
std::ifstream plik(sciezka);
|
||||||
|
if (!plik.is_open())
|
||||||
|
{
|
||||||
|
std::cout << "Nie można otworzyć pliku: " << sciezka << std::endl;
|
||||||
|
return studenci;
|
||||||
|
}
|
||||||
|
std::string line;
|
||||||
|
while (std::getline(plik, line))
|
||||||
|
{
|
||||||
|
if (!line.empty())
|
||||||
|
{
|
||||||
|
STUDENT s;
|
||||||
|
s.imie_nazwisko = line;
|
||||||
|
for (int i = 0; i < 6; ++i)
|
||||||
|
{
|
||||||
|
plik >> s.oceny[i];
|
||||||
|
}
|
||||||
|
plik.ignore();
|
||||||
|
s.srednia = licz_srednia(s);
|
||||||
|
s.ocena_koncowa = ocena(s);
|
||||||
|
studenci.push_back(s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
plik.close();
|
||||||
|
return studenci;
|
||||||
|
}
|
||||||
|
|
||||||
|
double srednia_wszystkich(std::vector<STUDENT> &studenci)
|
||||||
|
{
|
||||||
|
if (studenci.empty())
|
||||||
|
return 0;
|
||||||
|
double suma = 0;
|
||||||
|
for (auto &student : studenci)
|
||||||
|
{
|
||||||
|
suma += student.srednia;
|
||||||
|
}
|
||||||
|
return suma / studenci.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
int powyzej_sredniej(std::vector<STUDENT> &studenci)
|
||||||
|
{
|
||||||
|
int ret = 0;
|
||||||
|
double srednia = srednia_wszystkich(studenci);
|
||||||
|
for(auto &s :studenci)
|
||||||
|
{
|
||||||
|
if(s.srednia > srednia) ++ret;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
double najwyzsza_wartosc(std::vector<STUDENT> &studenci)
|
||||||
|
{
|
||||||
|
double max = 0;
|
||||||
|
for (auto s : studenci)
|
||||||
|
{
|
||||||
|
if(s.srednia>max) max = s.srednia;
|
||||||
|
}
|
||||||
|
return max;
|
||||||
|
}
|
||||||
|
|
||||||
|
void wypisz_wszystkich(std::vector<STUDENT> &studenci)
|
||||||
|
{
|
||||||
|
czysc();
|
||||||
|
if(studenci.size() == 0)
|
||||||
|
{
|
||||||
|
std::cout << "Brak studentów!\n";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::cout << "Lista studentów:\n";
|
||||||
|
printf("%2s | %31s | %30s | %10s | %19s\n","ID","Imię i nazwisko","Oceny","Średnia","Ocena Końcowa");
|
||||||
|
printf("---+--------------------------------+--------------------------------+-----------+-------------------\n");
|
||||||
|
for (int j = 0; j < studenci.size(); ++j)
|
||||||
|
{
|
||||||
|
std::string oceny = "";
|
||||||
|
STUDENT &s = studenci[j];
|
||||||
|
|
||||||
|
for (int i = 0; i < 6; ++i)
|
||||||
|
{
|
||||||
|
oceny += std::to_string(s.oceny[i]);
|
||||||
|
oceny += ((i == 5) ? " " : ", ");
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("%2i | %30s | %30s | %9.2f | %18s\n",j,s.imie_nazwisko.c_str(),oceny.c_str(),s.srednia,s.ocena_koncowa.c_str());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void wypisz_wyszukanych(std::vector<STUDENT> &studenci, std::string szukany)
|
||||||
|
{
|
||||||
|
czysc();
|
||||||
|
std::vector<STUDENT> znalezieni;
|
||||||
|
if (studenci.size() == 0)
|
||||||
|
{
|
||||||
|
std::cout << "Brak studentów!\n";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
std::cout << "Lista studentów zawierających \"" << szukany << "\":\n";
|
||||||
|
bool znaleziono = false;
|
||||||
|
printf("%-31s | %30s | %10s | %19s\n","Imię i nazwisko","Oceny","Średnia","Ocena Końcowa");
|
||||||
|
printf("-------------------------------+--------------------------------+-----------+-------------------\n");
|
||||||
|
for (auto &s : studenci)
|
||||||
|
{
|
||||||
|
if (s.imie_nazwisko.find(szukany) != std::string::npos)
|
||||||
|
{
|
||||||
|
znalezieni.push_back(s);
|
||||||
|
znaleziono = true;
|
||||||
|
std::string oceny = "";
|
||||||
|
|
||||||
|
for (int i = 0; i < 6; ++i)
|
||||||
|
{
|
||||||
|
oceny += std::to_string(s.oceny[i]);
|
||||||
|
oceny += ((i == 5) ? " " : ", ");
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("%-30s | %30s | %9.2f | %18s\n", s.imie_nazwisko.c_str(), oceny.c_str(), s.srednia,
|
||||||
|
s.ocena_koncowa.c_str());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(!znaleziono) std::cout << "Nie znaleziono\n";
|
||||||
|
else
|
||||||
|
{
|
||||||
|
std::cout << "\nZapisać do pliku \"wyszukani.txt\"?\n1.Tak\n2.Nie\n";
|
||||||
|
std::cout << "Wybór: ";
|
||||||
|
char wybor = 0;
|
||||||
|
while (!(std::cin >> wybor) || wybor < '1' || wybor > '2')
|
||||||
|
{
|
||||||
|
std::cin.clear();
|
||||||
|
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
|
||||||
|
std::cout << "Wybór: ";
|
||||||
|
}
|
||||||
|
if(wybor=='1') zapisz_dane(znalezieni, "wyszukani.txt");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void wypisz_najlepszych(std::vector<STUDENT> &studenci)
|
||||||
|
{
|
||||||
|
czysc();
|
||||||
|
if (studenci.size() == 0)
|
||||||
|
{
|
||||||
|
std::cout << "Brak studentów!\n";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
std::vector<STUDENT> najlepsi;
|
||||||
|
double max = najwyzsza_wartosc(studenci);
|
||||||
|
std::cout << "Studenci o najwyższej średniej " << max << ":\n";
|
||||||
|
printf("%-31s | %30s | %10s | %19s\n", "Imię i nazwisko", "Oceny", "Średnia", "Ocena Końcowa");
|
||||||
|
printf("-------------------------------+--------------------------------+-----------+-------------------\n");
|
||||||
|
for (auto &s : studenci)
|
||||||
|
{
|
||||||
|
if (s.srednia == max)
|
||||||
|
{
|
||||||
|
std::string oceny = "";
|
||||||
|
|
||||||
|
for (int i = 0; i < 6; ++i)
|
||||||
|
{
|
||||||
|
oceny += std::to_string(s.oceny[i]);
|
||||||
|
oceny += ((i == 5) ? " " : ", ");
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("%-30s | %30s | %9.2f | %18s\n", s.imie_nazwisko.c_str(), oceny.c_str(), s.srednia,
|
||||||
|
s.ocena_koncowa.c_str());
|
||||||
|
najlepsi.push_back(s);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
std::cout << "\nZapisać do pliku \"najlepsi.txt\"?\n1.Tak\n2.Nie\n";
|
||||||
|
std::cout << "Wybór: ";
|
||||||
|
char wybor = 0;
|
||||||
|
while (!(std::cin >> wybor) || wybor < '1' || wybor > '2')
|
||||||
|
{
|
||||||
|
std::cin.clear();
|
||||||
|
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
|
||||||
|
std::cout << "Wybór: ";
|
||||||
|
}
|
||||||
|
if (wybor == '1')
|
||||||
|
zapisz_dane(najlepsi, "najlepsi.txt");
|
||||||
|
}
|
||||||
58
Podstawy Programowania II/README.md
Normal file
58
Podstawy Programowania II/README.md
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
Zadania/Ćwiczenia/Projekty z przedmiotu Podstawy Programowania II
|
||||||
|
|
||||||
|
|
||||||
|
# Zadanie 2.1
|
||||||
|
|
||||||
|
Zadeklarować dwie tablice jednowymiarowe A i B o rozmiarze n zdefiniowanym przez stałą.
|
||||||
|
|
||||||
|
- Napisać funkcję, która wczytuje dane do tablicy. Wczytać dane do tablicy A i B.
|
||||||
|
- Napisać funkcję, która wypisuje elementy tablicy na ekran. Wypisać elementy tablicy A i B.
|
||||||
|
- Napisać funkcję, która oblicza i zwraca iloczyn elementów różnych od zera. Obliczenia wykonać dla tablicy A. Wyświetlić wynik.
|
||||||
|
- Napisać funkcję, która oblicza i zwraca średnią elementów w tablicy. Obliczenia wykonać dla tablicy B. Wyświetlić wynik.
|
||||||
|
- Napisać funkcję, która oblicza i zwraca maksymalny element w tablicy i indeks, na którym ten element wystąpił. Obliczenia wykonać dla tablicy A. Wyświetlić wyniki.
|
||||||
|
|
||||||
|
|
||||||
|
# Zadanie 2.1B
|
||||||
|
|
||||||
|
|
||||||
|
## 1
|
||||||
|
|
||||||
|
Dana jest tablica A 9 – elementową typu całkowitego.
|
||||||
|
a. wczytać z klawiatury elementy tej tablicy
|
||||||
|
b. napisać obliczyć element minimalny i podać ile razy on wystąpił w tablicy
|
||||||
|
|
||||||
|
|
||||||
|
## 2
|
||||||
|
|
||||||
|
Zadeklarować tablicę X 15 –to elementową liczb całkowitych.
|
||||||
|
Tablicę wypełnić liczbami losowymi z przedziału <5, 30>.
|
||||||
|
Obliczyć odchylenie standardowe od średniej arytmetycznej danych zapisanych w tablicy.
|
||||||
|
Odchyleniem standardowym nazywamy średnią kwadratową odchyleń od średniej arytmetycznej.
|
||||||
|
|
||||||
|
$$
|
||||||
|
\large {\sigma = \sqrt{\frac{1}{N}\sum^{N}_{i=0} (x[i] - sr)^2}}
|
||||||
|
$$
|
||||||
|
|
||||||
|
gdzie sr - średnia arytmetyczna
|
||||||
|
Wynik wypisać
|
||||||
|
|
||||||
|
|
||||||
|
## 3
|
||||||
|
|
||||||
|
Napisz dla producenta chipsów program do rejestrowania sprzedaży pięciu rodzajów sosów:
|
||||||
|
łagodnego, ostrego, kwaśnego, słodkiego i pikantnego.
|
||||||
|
W programie zastosuj dwie równoległe tablice złożone z pięciu elementów każda: jedną typu string
|
||||||
|
zawierającą nazwy sosów i drugą typu int zawierającą liczbę sprzedanych w ostatnim miesiącu
|
||||||
|
pojemników sosów każdego rodzaju.
|
||||||
|
Nazwy sosów niech będą zapisane w definicji tablicy w liście inicjującej. Program powinien prosić
|
||||||
|
użytkownika o podanie liczby sprzedanych pojemników sosów każdego rodzaju, a następnie
|
||||||
|
wyświetlać raport zawierający liczbę sprzedanych pojemników sosów każdego rodzaju, całkowitą
|
||||||
|
liczbę sprzedanych pojemników oraz nazwy sosów, których sprzedało się najwięcej i najmniej.
|
||||||
|
*Weryfikacja poprawności wprowadzanych danych: liczba pojemników nie może być ujemna.*
|
||||||
|
|
||||||
|
*Uwagi:*
|
||||||
|
|
||||||
|
1. *Wszystkie zadania, należy napisać w jednym programie, zadania realizowane kolejno.*
|
||||||
|
2. *Punkt 1 i 2 napisać z użyciem funkcji.*
|
||||||
|
3. *W programie proszę nie korzystać z klasy vector*
|
||||||
|
|
||||||
93
Podstawy Programowania II/Zadanie 2.1/zadanie.cpp
Normal file
93
Podstawy Programowania II/Zadanie 2.1/zadanie.cpp
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
/*
|
||||||
|
Autor: Mateusz Słodkowicz
|
||||||
|
Grupa: D3
|
||||||
|
Numer Indeksu: 167675
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <cstddef>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
void wczytajDane(int tab[], size_t roz);
|
||||||
|
void wypiszDane(int tab[], size_t roz);
|
||||||
|
int iloczyn(int tab[], size_t roz);
|
||||||
|
double srednia(int tab[], size_t roz);
|
||||||
|
int maksimum(int tab[], size_t roz, size_t &maxId);
|
||||||
|
|
||||||
|
// Rozmiar tablic
|
||||||
|
const size_t n = 4;
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
// W zadaniu nie widzę jakiego typu ma być tablica, używam więc int.
|
||||||
|
int A[n] = {0}, B[n] = {0};
|
||||||
|
|
||||||
|
std::cout << "Podaj dane dla tablicy A\n";
|
||||||
|
wczytajDane(A, n);
|
||||||
|
std::cout << "Podaj dane dla tablicy B\n";
|
||||||
|
wczytajDane(B, n);
|
||||||
|
|
||||||
|
std::cout << "\nDane tablicy A:\n";
|
||||||
|
wypiszDane(A, n);
|
||||||
|
std::cout << "Dane tablicy B:\n";
|
||||||
|
wypiszDane(B, n);
|
||||||
|
|
||||||
|
std::cout << "\nIloczyn elementow roznych od zera dla tablicy A: " << iloczyn(A, n) << std::endl;
|
||||||
|
std::cout << "\nSrednia elementow dla tablicy B: " << srednia(B, n) << std::endl;
|
||||||
|
|
||||||
|
size_t maxId;
|
||||||
|
std::cout << "\nNajwiekszy element dla tablicy A ma wartosc: " << maksimum(A, n, maxId)
|
||||||
|
<< "\nIndeks tej wartosci to: " << maxId << std::endl;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void wczytajDane(int tab[], size_t roz)
|
||||||
|
{
|
||||||
|
for (size_t i = 0; i < roz; ++i)
|
||||||
|
{
|
||||||
|
std::cout << "Podaj wartosc dla elementu " << i + 1 << ": ";
|
||||||
|
std::cin >> tab[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void wypiszDane(int tab[], size_t roz)
|
||||||
|
{
|
||||||
|
for (size_t i = 0; i < roz; ++i)
|
||||||
|
{
|
||||||
|
std::cout << tab[i] << ((i != roz - 1) ? " " : "\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int iloczyn(int tab[], size_t roz)
|
||||||
|
{
|
||||||
|
int wynik = 0;
|
||||||
|
for (size_t i = 0; i < roz; ++i)
|
||||||
|
{
|
||||||
|
if (wynik == 0 && tab[i] != 0)
|
||||||
|
wynik = tab[i];
|
||||||
|
else if (tab[i] != 0)
|
||||||
|
wynik *= tab[i];
|
||||||
|
}
|
||||||
|
return wynik;
|
||||||
|
}
|
||||||
|
double srednia(int tab[], size_t roz)
|
||||||
|
{
|
||||||
|
int suma = 0;
|
||||||
|
for (size_t i = 0; i < roz; ++i)
|
||||||
|
{
|
||||||
|
suma += tab[i];
|
||||||
|
}
|
||||||
|
return double(suma) / double(roz);
|
||||||
|
}
|
||||||
|
|
||||||
|
int maksimum(int tab[], size_t roz, size_t &maxId)
|
||||||
|
{
|
||||||
|
maxId = 0;
|
||||||
|
for (size_t i = 1; i < roz; ++i)
|
||||||
|
{
|
||||||
|
if (tab[maxId] < tab[i])
|
||||||
|
maxId = i;
|
||||||
|
}
|
||||||
|
return tab[maxId];
|
||||||
|
}
|
||||||
171
Podstawy Programowania II/Zadanie 2.1B/zadanie.cpp
Normal file
171
Podstawy Programowania II/Zadanie 2.1B/zadanie.cpp
Normal file
@ -0,0 +1,171 @@
|
|||||||
|
/*
|
||||||
|
Autor: Mateusz Słodkowicz
|
||||||
|
Grupa: D3
|
||||||
|
Numer Indeksu: 167675
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <cmath>
|
||||||
|
#include <cstddef>
|
||||||
|
#include <cstdlib>
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
using std::size_t;
|
||||||
|
using std::string;
|
||||||
|
|
||||||
|
void wczytajDane(int tab[], size_t roz);
|
||||||
|
void losujDane(int tab[], size_t roz);
|
||||||
|
void wypiszDane(int tab[], size_t roz);
|
||||||
|
int minimum(int tab[], size_t roz, unsigned int &ile);
|
||||||
|
double srednia(int tab[], size_t roz);
|
||||||
|
double odchylenie(int tab[], size_t roz);
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
// Zadanie 1
|
||||||
|
{
|
||||||
|
const size_t roz = 9;
|
||||||
|
int A[roz] = {0};
|
||||||
|
std::cout << "Zadanie 1\n";
|
||||||
|
wczytajDane(A, roz);
|
||||||
|
std::cout << "Elementy w tablicy: ";
|
||||||
|
wypiszDane(A, roz);
|
||||||
|
unsigned int ile;
|
||||||
|
int min = minimum(A, roz, ile);
|
||||||
|
std::cout << "Najmniejszy element to " << min << " i powtarza sie " << ile
|
||||||
|
<< ((ile == 1) ? " raz\n" : " razy\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Zadanie 2
|
||||||
|
{
|
||||||
|
srand(time(NULL));
|
||||||
|
const size_t roz = 15;
|
||||||
|
int X[roz] = {0};
|
||||||
|
losujDane(X, roz);
|
||||||
|
|
||||||
|
std::cout << "\nZadanie 2\n"
|
||||||
|
<< "Elementy w tablicy: ";
|
||||||
|
wypiszDane(X, roz);
|
||||||
|
std::cout << "Srednia elementow to: " << srednia(X, roz)
|
||||||
|
<< "\nOdchylenie standardowe od sredniej to: " << odchylenie(X, roz) << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Zadanie 3
|
||||||
|
{
|
||||||
|
const string nazwy[] = {"Lagodny", "Ostry", "Kwasny", "Slodki", "Pikantny"};
|
||||||
|
const size_t roz = sizeof(nazwy) / sizeof(string);
|
||||||
|
int sprzedane[roz] = {0};
|
||||||
|
std::cout << "\nZadanie 3\n";
|
||||||
|
for (size_t i = 0; i < roz; ++i)
|
||||||
|
{
|
||||||
|
do
|
||||||
|
{
|
||||||
|
std::cout << "Wprowadz ilosc sprzedanych pojemnikow dla \"Sos " << nazwy[i] << "\": ";
|
||||||
|
std::cin >> sprzedane[i];
|
||||||
|
if (sprzedane[i] < 0)
|
||||||
|
std::cout << "Blad! Wprowadz liczbe nieujemna\n";
|
||||||
|
} while (sprzedane[i] < 0);
|
||||||
|
}
|
||||||
|
std::cout << "\nSprzedane pojemniki\n";
|
||||||
|
int lacznie = 0;
|
||||||
|
for (size_t i = 0; i < roz; ++i)
|
||||||
|
{
|
||||||
|
lacznie += sprzedane[i];
|
||||||
|
std::cout << "\"Sos " << nazwy[i] << "\": " << sprzedane[i] << "\n";
|
||||||
|
}
|
||||||
|
std::cout << "Lacznie: " << lacznie;
|
||||||
|
int min = sprzedane[0];
|
||||||
|
int max = sprzedane[0];
|
||||||
|
for (size_t i = 1; i < roz; ++i)
|
||||||
|
{
|
||||||
|
if (sprzedane[i] > max)
|
||||||
|
{
|
||||||
|
max = sprzedane[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sprzedane[i] < min)
|
||||||
|
{
|
||||||
|
min = sprzedane[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
std::cout << "\nNajwiecej sprzedanych: ";
|
||||||
|
for (size_t i = 0; i < roz; ++i)
|
||||||
|
{
|
||||||
|
if (sprzedane[i] == max)
|
||||||
|
std::cout << "\"Sos " << nazwy[i] << "\" ";
|
||||||
|
}
|
||||||
|
|
||||||
|
std::cout << "w ilosci " << max << "\nNajmniej sprzedanych: ";
|
||||||
|
for (size_t i = 0; i < roz; ++i)
|
||||||
|
{
|
||||||
|
if (sprzedane[i] == min)
|
||||||
|
std::cout << "\"Sos " << nazwy[i] << "\" ";
|
||||||
|
}
|
||||||
|
std::cout << "w ilosci " << min << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void wczytajDane(int tab[], size_t roz)
|
||||||
|
{
|
||||||
|
for (size_t i = 0; i < roz; ++i)
|
||||||
|
{
|
||||||
|
std::cout << "Podaj element tablicy o indeksie " << i << ": ";
|
||||||
|
std::cin >> tab[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void losujDane(int tab[], size_t roz)
|
||||||
|
{
|
||||||
|
for (size_t i = 0; i < roz; ++i)
|
||||||
|
{
|
||||||
|
tab[i] = (rand() % 26) + 5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void wypiszDane(int tab[], size_t roz)
|
||||||
|
{
|
||||||
|
for (size_t i = 0; i < roz; ++i)
|
||||||
|
{
|
||||||
|
std::cout << tab[i] << ((i != roz - 1) ? ", " : "\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int minimum(int tab[], size_t roz, unsigned int &ile)
|
||||||
|
{
|
||||||
|
ile = 1;
|
||||||
|
int min = tab[0];
|
||||||
|
for (size_t i = 1; i < roz; ++i)
|
||||||
|
{
|
||||||
|
if (tab[i] < min)
|
||||||
|
{
|
||||||
|
ile = 1;
|
||||||
|
min = tab[i];
|
||||||
|
}
|
||||||
|
else if (tab[i] == min)
|
||||||
|
++ile;
|
||||||
|
}
|
||||||
|
return min;
|
||||||
|
}
|
||||||
|
double srednia(int tab[], size_t roz)
|
||||||
|
{
|
||||||
|
int suma = 0;
|
||||||
|
for (size_t i = 0; i < roz; ++i)
|
||||||
|
{
|
||||||
|
suma += tab[i];
|
||||||
|
}
|
||||||
|
return double(suma) / double(roz);
|
||||||
|
}
|
||||||
|
double odchylenie(int tab[], size_t roz)
|
||||||
|
{
|
||||||
|
double sr = srednia(tab, roz);
|
||||||
|
double sigma = 0, tmp = 0;
|
||||||
|
for (size_t i = 0; i < roz; ++i)
|
||||||
|
{
|
||||||
|
tmp = double(tab[i]) - sr;
|
||||||
|
sigma += tmp * tmp;
|
||||||
|
}
|
||||||
|
return std::sqrt(sigma / roz);
|
||||||
|
}
|
||||||
125
Podstawy Programowania II/Zadanie 2.2/main.cpp
Normal file
125
Podstawy Programowania II/Zadanie 2.2/main.cpp
Normal file
@ -0,0 +1,125 @@
|
|||||||
|
// Mateusz Słodkowicz D3
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <cctype>
|
||||||
|
#include <cstdlib>
|
||||||
|
#include <ctime>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#define X 3
|
||||||
|
#define Y 30
|
||||||
|
|
||||||
|
const char *mies[] = {"Czerwiec", "Lipiec","Sierpien"};
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
|
||||||
|
void losujTablice(char[][Y],size_t);
|
||||||
|
void wypiszTablice(char[][Y], size_t);
|
||||||
|
void wypiszStatystyki(char[][Y],size_t);
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
srand(time(NULL));
|
||||||
|
char temperatury[X][Y] = {0};
|
||||||
|
losujTablice(temperatury,X);
|
||||||
|
std::cout << "Wyniki Pogodowe dla Czerwca, Lipca i Sierpnia\n\n";
|
||||||
|
|
||||||
|
wypiszTablice(temperatury,X);
|
||||||
|
std::cout << "\n";
|
||||||
|
wypiszStatystyki(temperatury,X);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void wypiszStatystyki(char tab[][Y],size_t x_max)
|
||||||
|
{
|
||||||
|
unsigned int D[X] = {0},P[X] = {0},S[X] = {0};
|
||||||
|
unsigned int D_lacz=0,P_lacz=0,S_lacz=0;
|
||||||
|
for(size_t x = 0; x<x_max;++x)
|
||||||
|
{
|
||||||
|
for(size_t y = 0; y<Y; ++y)
|
||||||
|
{
|
||||||
|
switch(tab[x][y])
|
||||||
|
{
|
||||||
|
case 'D':
|
||||||
|
D[x] += 1;
|
||||||
|
++D_lacz;
|
||||||
|
break;
|
||||||
|
case 'P':
|
||||||
|
P[x] += 1;
|
||||||
|
++P_lacz;
|
||||||
|
break;
|
||||||
|
case 'S':
|
||||||
|
S[x] += 1;
|
||||||
|
++S_lacz;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
std::cout << "Statystyki dla miesiaca " << mies[x] << ":\n";
|
||||||
|
std::cout << "\tDni Deszczowe: " << D[x] << "\n";
|
||||||
|
std::cout << "\tDni Pochmurne: " << P[x] << "\n";
|
||||||
|
std::cout << "\tDni Sloneczne: " << S[x] << "\n";
|
||||||
|
}
|
||||||
|
std::cout << "Statystyki laczne:\n";
|
||||||
|
std::cout << "\tDni Deszczowe: " << D_lacz << "\n";
|
||||||
|
std::cout << "\tDni Pochmurne: " << P_lacz << "\n";
|
||||||
|
std::cout << "\tDni Sloneczne: " << S_lacz << "\n";
|
||||||
|
|
||||||
|
size_t id_max = 0;
|
||||||
|
for(size_t x = 1; x<x_max;++x)
|
||||||
|
{
|
||||||
|
if(D[id_max]<D[x]) id_max = x;
|
||||||
|
}
|
||||||
|
std::cout << "\nNajwiecej dni deszczowych w: " << mies[id_max];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
void wypiszTablice(char tab[][Y], size_t x_max)
|
||||||
|
{
|
||||||
|
printf("%10s", "Dni: ");
|
||||||
|
for(int y =0; y<Y;++y)
|
||||||
|
{
|
||||||
|
printf("%3i", y+1);
|
||||||
|
}
|
||||||
|
std::cout << "\n";
|
||||||
|
for(size_t x = 0; x<x_max; ++x)
|
||||||
|
{
|
||||||
|
printf("%10s: ",mies[x]);
|
||||||
|
for(size_t y = 0; y<Y;++y)
|
||||||
|
{
|
||||||
|
std::cout<<tab[x][y] << " ";
|
||||||
|
}
|
||||||
|
std::cout << "\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void losujTablice(char tab[][Y], size_t x_max)
|
||||||
|
{
|
||||||
|
short losulosu = 0;
|
||||||
|
for(size_t x = 0; x < x_max;++x)
|
||||||
|
{
|
||||||
|
for(size_t y = 0; y < Y;++y)
|
||||||
|
{
|
||||||
|
losulosu = rand() % 3;
|
||||||
|
switch(losulosu)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
tab[x][y] = 'D';
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
tab[x][y] = 'P';
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
tab[x][y] = 'S';
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
119
Podstawy Programowania II/Zadanie 2.20/zadanie.cpp
Normal file
119
Podstawy Programowania II/Zadanie 2.20/zadanie.cpp
Normal file
@ -0,0 +1,119 @@
|
|||||||
|
/*
|
||||||
|
Autor: Mateusz Słodkowicz
|
||||||
|
Grupa: D3
|
||||||
|
Numer Indeksu: 167675
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <cmath>
|
||||||
|
#include <cstddef>
|
||||||
|
#include <cstdio>
|
||||||
|
#include <cstdlib>
|
||||||
|
#include <ctime>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
struct Punkt
|
||||||
|
{
|
||||||
|
double x = 0, y = 0, odl = 0;
|
||||||
|
};
|
||||||
|
struct Cwiartki
|
||||||
|
{
|
||||||
|
unsigned int I = 0, II = 0, III = 0, IV = 0, OS = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
Punkt losujPunt();
|
||||||
|
Cwiartki liczCwiartki(Punkt[], size_t);
|
||||||
|
void losujPunkty(Punkt[], size_t);
|
||||||
|
double odlegosc(double x, double y);
|
||||||
|
void wypiszPromien(Punkt[], size_t, double);
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
srand(time(NULL));
|
||||||
|
size_t N = 0;
|
||||||
|
double R = 0; // Zakładam że okręg ma mieć środek w punkcie 0,0
|
||||||
|
std::cout << "Wprowadz ile punktow wylosowac.\n";
|
||||||
|
std::cout << "Ile puntkow: ";
|
||||||
|
while (!(std::cin >> N) || N == 0)
|
||||||
|
{
|
||||||
|
std::cin.clear();
|
||||||
|
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
|
||||||
|
std::cout << "Ile puntkow: ";
|
||||||
|
}
|
||||||
|
|
||||||
|
Punkt *punkty = new Punkt[N];
|
||||||
|
|
||||||
|
losujPunkty(punkty, N);
|
||||||
|
Cwiartki cw = liczCwiartki(punkty, N);
|
||||||
|
|
||||||
|
std::cout << "Ilosc punktow w cwiartkach ukladu:\n";
|
||||||
|
printf("Cwiartka %4s: %i\n", "I", cw.I);
|
||||||
|
printf("Cwiartka %4s: %i\n", "II", cw.II);
|
||||||
|
printf("Cwiartka %4s: %i\n", "III", cw.III);
|
||||||
|
printf("Cwiartka %4s: %i\n", "IV", cw.IV);
|
||||||
|
printf("%12s: %i\n", "Punkty na osi", cw.OS);
|
||||||
|
|
||||||
|
std::cout << "\nWprowadz promien okregu.\n";
|
||||||
|
std::cout << "Promien: ";
|
||||||
|
while (!(std::cin >> R) || R == 0)
|
||||||
|
{
|
||||||
|
std::cin.clear();
|
||||||
|
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
|
||||||
|
std::cout << "Promien: ";
|
||||||
|
}
|
||||||
|
|
||||||
|
wypiszPromien(punkty,N,R);
|
||||||
|
|
||||||
|
|
||||||
|
delete[] punkty;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void wypiszPromien(Punkt punkty[], size_t roz, double r)
|
||||||
|
{
|
||||||
|
printf("\nPunkty w okregu o promieniu R=%.2f\n", r);
|
||||||
|
for (size_t i = 0; i < roz; ++i)
|
||||||
|
{
|
||||||
|
if (punkty[i].odl < r)
|
||||||
|
printf("X: %-6.2f | Y: %-6.2f | Odl: %-6.2f\n", punkty[i].x, punkty[i].y, punkty[i].odl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
double odlegosc(double x, double y)
|
||||||
|
{
|
||||||
|
return sqrt((x * x) + (y * y));
|
||||||
|
}
|
||||||
|
void losujPunkty(Punkt punkty[], size_t roz)
|
||||||
|
{
|
||||||
|
for (size_t i = 0; i < roz; ++i)
|
||||||
|
{
|
||||||
|
punkty[i] = losujPunt();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Cwiartki liczCwiartki(Punkt punkty[], size_t roz)
|
||||||
|
{
|
||||||
|
Cwiartki cw;
|
||||||
|
for (size_t i = 0; i < roz; ++i)
|
||||||
|
{
|
||||||
|
if (punkty[i].x > 0 && punkty[i].y > 0)
|
||||||
|
++cw.I;
|
||||||
|
else if (punkty[i].x < 0 && punkty[i].y > 0)
|
||||||
|
++cw.II;
|
||||||
|
else if (punkty[i].x < 0 && punkty[i].y < 0)
|
||||||
|
++cw.III;
|
||||||
|
else if (punkty[i].x > 0 && punkty[i].y < 0)
|
||||||
|
++cw.IV;
|
||||||
|
else
|
||||||
|
++cw.OS;
|
||||||
|
}
|
||||||
|
return cw;
|
||||||
|
}
|
||||||
|
|
||||||
|
Punkt losujPunt()
|
||||||
|
{
|
||||||
|
Punkt p = {
|
||||||
|
.x = double((rand() % 201) - 100) / 10.0,
|
||||||
|
.y = double((rand() % 201) - 100) / 10.0
|
||||||
|
};
|
||||||
|
p.odl = odlegosc(p.x, p.y);
|
||||||
|
return p;
|
||||||
|
}
|
||||||
100
org/PP2.org
Normal file
100
org/PP2.org
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
#+TITLE: Podstawy Programowania II
|
||||||
|
#+AUTHOR: Mateusz Słodkowicz
|
||||||
|
#+OPTIONS: \n:t
|
||||||
|
#+OPTIONS: tex:t
|
||||||
|
#+OPTIONS: toc:nil
|
||||||
|
#+LANGUAGE: pl
|
||||||
|
#+EXPORT_FILE_NAME: ../Podstawy Programowania II/README.md
|
||||||
|
#+PANDOC_OPTIONS: lua-filter:fix.lua
|
||||||
|
|
||||||
|
Zadania/Ćwiczenia/Projekty z przedmiotu Podstawy Programowania II
|
||||||
|
|
||||||
|
* Zadanie 2.1
|
||||||
|
Zadeklarować dwie tablice jednowymiarowe A i B o rozmiarze n zdefiniowanym przez stałą.
|
||||||
|
- Napisać funkcję, która wczytuje dane do tablicy. Wczytać dane do tablicy A i B.
|
||||||
|
- Napisać funkcję, która wypisuje elementy tablicy na ekran. Wypisać elementy tablicy A i B.
|
||||||
|
- Napisać funkcję, która oblicza i zwraca iloczyn elementów różnych od zera. Obliczenia wykonać dla tablicy A. Wyświetlić wynik.
|
||||||
|
- Napisać funkcję, która oblicza i zwraca średnią elementów w tablicy. Obliczenia wykonać dla tablicy B. Wyświetlić wynik.
|
||||||
|
- Napisać funkcję, która oblicza i zwraca maksymalny element w tablicy i indeks, na którym ten element wystąpił. Obliczenia wykonać dla tablicy A. Wyświetlić wyniki.
|
||||||
|
|
||||||
|
* Zadanie 2.1B
|
||||||
|
** 1
|
||||||
|
Dana jest tablica A 9 – elementową typu całkowitego.
|
||||||
|
a. wczytać z klawiatury elementy tej tablicy
|
||||||
|
b. napisać obliczyć element minimalny i podać ile razy on wystąpił w tablicy
|
||||||
|
** 2
|
||||||
|
Zadeklarować tablicę X 15 –to elementową liczb całkowitych.
|
||||||
|
Tablicę wypełnić liczbami losowymi z przedziału <5, 30>.
|
||||||
|
Obliczyć odchylenie standardowe od średniej arytmetycznej danych zapisanych w tablicy.
|
||||||
|
Odchyleniem standardowym nazywamy średnią kwadratową odchyleń od średniej arytmetycznej.
|
||||||
|
|
||||||
|
$$
|
||||||
|
\large {\sigma = \sqrt{\frac{1}{N}\sum^{N}_{i=0} (x[i] - sr)^2}}
|
||||||
|
$$
|
||||||
|
|
||||||
|
gdzie sr - średnia arytmetyczna
|
||||||
|
Wynik wypisać
|
||||||
|
|
||||||
|
** 3
|
||||||
|
Napisz dla producenta chipsów program do rejestrowania sprzedaży pięciu rodzajów sosów:
|
||||||
|
łagodnego, ostrego, kwaśnego, słodkiego i pikantnego.
|
||||||
|
W programie zastosuj dwie równoległe tablice złożone z pięciu elementów każda: jedną typu string
|
||||||
|
zawierającą nazwy sosów i drugą typu int zawierającą liczbę sprzedanych w ostatnim miesiącu
|
||||||
|
pojemników sosów każdego rodzaju.
|
||||||
|
Nazwy sosów niech będą zapisane w definicji tablicy w liście inicjującej. Program powinien prosić
|
||||||
|
użytkownika o podanie liczby sprzedanych pojemników sosów każdego rodzaju, a następnie
|
||||||
|
wyświetlać raport zawierający liczbę sprzedanych pojemników sosów każdego rodzaju, całkowitą
|
||||||
|
liczbę sprzedanych pojemników oraz nazwy sosów, których sprzedało się najwięcej i najmniej.
|
||||||
|
/Weryfikacja poprawności wprowadzanych danych: liczba pojemników nie może być ujemna./
|
||||||
|
|
||||||
|
/Uwagi:/
|
||||||
|
1. /Wszystkie zadania, należy napisać w jednym programie, zadania realizowane kolejno./
|
||||||
|
2. /Punkt 1 i 2 napisać z użyciem funkcji./
|
||||||
|
3. /W programie proszę nie korzystać z klasy vector/
|
||||||
|
* Zadanie 2.2
|
||||||
|
Potrzebny jest programu przetwarzającego informacje o pogodzie za trzy letnie miesiące
|
||||||
|
minionego roku. Każdy dzień powinien być oznaczony jako deszczowy ('D'), pochmurny ('P')
|
||||||
|
lub słoneczny ('S'). Napisz program zapisujący te informacje w tablicy typu char o wymiarach
|
||||||
|
3×30 elementów, w której wiersze reprezentują kolejne miesiące (0 – czerwiec, 1 – lipiec, 2 –
|
||||||
|
sierpień), a kolumny — dni miesiąca. Pomijany jest 31 dzień miesiąca.
|
||||||
|
Program powinien losowo wypełnić tablicę, a następnie wyświetlać raport zawierający liczbę
|
||||||
|
dni deszczowych, pochmurnych i słonecznych w poszczególnych miesiącach i w całym
|
||||||
|
trzymiesięcznym okresie.
|
||||||
|
Raport powinien zawierać również nazwę miesiąca, w którym było najwięcej dni deszczowych.
|
||||||
|
* Zadanie 2.20
|
||||||
|
- Zadeklarować strukturę Punkt mającą pola: x, y typu double, odl (odległość od początku
|
||||||
|
układu współrzędnych) typu double.
|
||||||
|
Wczytać N i zadeklarować dynamicznie N elementową tablicę typu Punkt.
|
||||||
|
- Napisać funkcję, która wypełnia tablicę punktów danymi w następujący sposób: x, y są
|
||||||
|
liczbami losowymi ze zbioru {-10, -9.9,…,-0.1, 0, 0.1, 0.2, 0.3, …,9.9, 10}, odległość (odległość
|
||||||
|
punktu od środka układu współrzędnych) jest obliczana za pomocą funkcji.
|
||||||
|
- Napisać funkcję, która policzy ile punktów jest w każdej ćwiartce.
|
||||||
|
Wypisać wyniki (można dodatkowo przedstawić w postaci histogramu).
|
||||||
|
- Wczytać promień okręgu R. Napisać funkcję, która obliczy i zwróci ile punktów znajduje się
|
||||||
|
wewnątrz okręgu o podanym promieniu. Wypisać obliczoną wartość.
|
||||||
|
- Napisać funkcję, która wypisuje na ekran punkty spełniające powyższy warunek. Danego
|
||||||
|
jednego punktu powinny być zapisywane w jednej linii, z dokładnością 2 miejsc po kropce.
|
||||||
|
*Uwagi*:
|
||||||
|
- Odległość punkt od środka układu współrzędnych obliczana ze wzoru $odl = \sqrt{x^2 + y^2}$
|
||||||
|
- Interakcję z użytkownikiem (wyświetlanie, pobieranie danych) należy umieścić wyłącznie w funkcji main().
|
||||||
|
Oczywiście wyjątek stanowi funkcja specjalnie przeznaczona do wyświetlania danych.
|
||||||
|
- Program powinien wyświetlać czytelne i jasne komunikaty.
|
||||||
|
- Nie należy używać zmiennych globalnych.
|
||||||
|
|
||||||
|
* Projekt 1
|
||||||
|
Grupę 60 osób poproszono o ocenę gry komputerowej. Każda osoba mogła przyznać ocenę od 0 do 10.
|
||||||
|
Zadeklarować N –elementową np. 60-elementową tablicę typu int.
|
||||||
|
1. Wylosować elementy tej tablicy z przedziału <0, 10>.
|
||||||
|
2. Wypisać wylosowaną tablicę.
|
||||||
|
3. Obliczyć średnią ocenę.
|
||||||
|
4. Obliczyć medianę (środkowa wartość w posortowanej tablicy, w przypadku parzystej liczby elementów
|
||||||
|
tablicy jest to średnia dwóch środkowych wartości).
|
||||||
|
5. Obliczyć ile osób przyznało każdą z ocen. W tym celu zadeklarować 11 -to elementową tablicę ocena, i-ty
|
||||||
|
element tej tablicy zawiera liczbę osób, które przyznały taką ocenę.
|
||||||
|
6. Obliczyć która ocena była przyznana największą ilość razy. Jeżeli było kilka takich ocen wypisać wszystkie.
|
||||||
|
7. Narysować histogram złożony z '*' (Histogram pokazuje liczebności poszczególnych grup).
|
||||||
|
|
||||||
|
*Uwagi*:
|
||||||
|
- Program podzielić na funkcje.
|
||||||
|
- Program powinny wyświetlać czytelne i jednoznaczne komunikaty zarówno na etapie wprowadzania danych,
|
||||||
|
jak i wyświetlania ich na ekranie
|
||||||
Loading…
x
Reference in New Issue
Block a user