Untitled
Never
#include <iostream> #include <ctime> #include <vector> #include <string> #include <fstream> using namespace std; class Virus { private: string name; int spreadingWay, mortality, infect, incubationPeriod, duration, panDur, sNum, survived = 0; int infected = 1; Virus* next = nullptr; vector<string> arr = { "воздушно-капельный", "пищевой", "трансмиссивный", "половой", "через кожу" }; vector<string> surnames = { "fulica", "tristis", "coqui", "niloticus", "salmoides", "cuniculus", "cafer", "trutta", "scrofa", "auropunctata", "vulgaris", "benghalensis", "europaeus" }; public: static int count; static unsigned long long int population; bool isMarked = false; void setName() { vector<string> arr; string temp; ifstream file; file.open("names.txt", ios::in); while (!file.eof()) { file >> temp; arr.push_back(temp); } file.close(); name = arr[rand() % arr.size()] + " " + surnames[rand() % surnames.size()]; } void setSpreadingWay(int s) { s ? spreadingWay = s : spreadingWay = rand() % arr.size(); } void setInfect(int i) { i ? infect = i : infect = (50 + rand() % 51); } void setMortRate(int m) { int setMortality = rand() % 101; if (setMortality <= 65 && rand() % 6) { setMortality = (65 + rand() % 36); } m ? mortality = m : mortality = setMortality; } void setIncubPeriod(int in) { in ? incubationPeriod = in : incubationPeriod = (1 + rand() % 9); } void setDuration(int d) { d ? duration = d : duration = (8 + rand() % 38); } void setPanDur() { int d = 0; int* inf = new int[duration]; while (infected > 0 && population > 0) { switch (spreadingWay) { case 0: infected += infected * 100 * infect; break; case 1: infected += infected * 10 * infect; break; case 2: infected += infected * 2 * infect; break; case 3: infected += infected * 5 * infect; break; case 4: infected += infected * 50 * infect; break; } for (int i = d; i < d + 1; i++) { if (i == 0) { inf[i] = infected; } else { inf[i] = infected - inf[i - 1]; } } if (d == duration) { d = 0; for (int i = 0; i < duration; i++) { if (rand() % 101 > mortality) { survived += inf[i]; inf[i] = 0; } else { infected += inf[i] - (inf[i] * mortality / 100); } } } d++; panDur++; population -= infected; } delete[] inf; } void setCount() { count++; sNum = count; } void setNext(Virus* next_v) { next = next_v; } void removeCount() { count--; } Virus* getNext() { return next; } int getSerNum() { return sNum; } string getName() { return name; } string getSpreadingWay() { return arr[spreadingWay]; } int getSpreadingInt() { return spreadingWay; } int getsurvived() { return survived; } int getInfect() { return infect; } int getMortRate() { return mortality; } int getIncubPeriod() { return incubationPeriod; } int getDuration() { return duration; } int getPanDur() { return panDur; } void Print() { cout << "Порядковый номер: " << sNum << endl; cout << "Имя: " << name << endl; cout << "Способ распостранения: " << getSpreadingWay() << endl; cout << "Процент заразности: " << infect << "%" << endl; cout << "Процент смертности: " << mortality << "%" << endl; cout << "Инкубационный период (дни): " << incubationPeriod << "d." << endl; cout << "Продолжительность болезни (дни): " << duration << "d." << endl; cout << "Продожительность пандемии (дни): " << panDur << "d." << endl; cout << "Население: " << population << endl; cout << "Выжившие: " << survived << endl; cout << endl; } Virus() { setName(); setSpreadingWay(0); setInfect(0); setMortRate(0); setIncubPeriod(0); setDuration(0); setPanDur(); setCount(); } ~ Virus() { removeCount(); } }; int Virus::count = 0; unsigned long long int Virus::population = 0; class List { private: Virus* start; int size = 0; Virus* end; public: void push(Virus* virus) { if (size == 0) { start = virus; end = virus; virus->setNext(virus); size++; } else { end->setNext(virus); virus->setNext(start); end = virus; size++; } } void print() { Virus* now = start; for (int i = 0; i < size; i++) { now->Print(); now = now->getNext(); } } void printFeature(int num) { Virus* now = start; switch (num) { case 1: case 2: int percent; cout << "Введите процент. Отобразятся все экземпляры, которые имеют такой же процент, или ниже: "; do { cin >> percent; if (percent > 100 || percent < 0) { cout << "Введено неверное число!" << endl; cout << "Введите процент: "; } } while (percent > 100 || percent < 0); system("cls"); for (int i = 0; i < size; i++) { if (percent >= now->getInfect() && num == 1) { now->Print(); } else if (percent >= now->getMortRate() && num == 2) { now->Print(); } now = now->getNext(); } break; case 3: case 4: case 5: int days; cout << "Введите кол-во дней. Отобразятся все экземпляры, которые имеют такую продолжительность какого либо параметра или ниже: "; do { cin >> days; if (days > 45 || days < 1) { // PANDUR СДЕЛАЕШЬ -> ПЕРЕСМОТРИ TODO TODO TODO cout << "Введено неверное число" << endl; cout << "Введите кол-во дней: "; } } while (days > 45 || days < 1); // PANDUR СДЕЛАЕШЬ -> ПЕРЕСМОТРИ TODO TODO TODO system("cls"); for (int i = 0; i < size; i++) { if (days >= now->getDuration() && num == 3) { now->Print(); } else if (days >= now->getIncubPeriod() && num == 5) { now->Print(); } else if (days >= now->getPanDur() && num == 4) { now->Print(); } now = now->getNext(); } break; case 6: int sWay; system("cls"); cout << "Виды распостранения:" << endl; cout << "1. воздушно-капельный\n2. пищевой\n3. трансмиссивный\n4. половой\n5. через кожу" << endl; cout << "Введите способ распостранения. Отобразятся все экземпляры с таким способом: "; do { cin >> sWay; sWay--; if (sWay > 5 || sWay < 0) { cout << "Введен неверный номер" << endl; cout << "Введите номер: " << endl; } } while (sWay > 5 || sWay < 0); system("cls"); for (int i = 0; i < size; i++) { if (sWay == now->getSpreadingInt()) { now->Print(); } now = now->getNext(); } break; } } void del(int num) { num--; Virus* del; if (num == 0) { del = start; start = start->getNext(); end->setNext(start); del->removeCount(); delete del; } else { Virus* now = start; for (int i = 0; i < num - 1; i++) { now = now->getNext(); } del = now->getNext(); now->setNext(del->getNext()); del->removeCount(); delete del; if (num == size - 1) { end = now; } } size--; } void sort() { Virus* now = start; int sortNum = 0; bool isSorted = false; int small = now->getsurvived(); while (!isSorted) { now = start; for (int i = 0; i < size; i++) { if (!(now->isMarked) && small < now->getsurvived()) { small = now->getsurvived(); } now = now->getNext(); } now = start; for (int i = 0; i < size; i++) { if (!(now->isMarked) && small > now->getsurvived()) { small = now->getsurvived(); } now = now->getNext(); } now = start; for (int i = 0; i < size; i++) { if (!(now->isMarked) && small == now->getsurvived()) { now->Print(); now->isMarked = true; } now = now->getNext(); } now = start; sortNum = 0; for (int i = 0; i < size; i++) { if (now->isMarked) { sortNum++; } now = now->getNext(); } if (sortNum == size) { isSorted = true; } } now = start; for (int i = 0; i < size; i++) { now->isMarked = false; now = now->getNext(); } } void clist(int num) { num--; Virus* now = start; for (int i = 0; i <= num - 1; i++) { now = now->getNext(); } for (int i = 0; i < size; i++) { now->Print(); now = now->getNext(); } } Virus* getEnd() { return end; } void getSerNum(int sNum) { Virus* now = start; for (int i = 0; i < size; i++) { if (sNum == now->getSerNum()) { now->Print(); break; } else { now = now->getNext(); } } } int getsize() { return size; } }; void startGate(int choose, int p, List* viruses); int main() { setlocale(LC_ALL, "Russian"); srand(time(0)); int set; static unsigned long long int p = 0; List* viruses = new List(); do { if (!p) { do { cout << "Введите кол-во людей: "; cin >> p; if (p <= 0) { cout << "Число не может быть отрицательным/быть равным нулю." << endl; } } while (p <= 0); Virus::population = p; system("cls"); } cout << "1. Создать экземпляры класса" << endl; cout << "2. Вывод всех экземпляров по порядку" << endl; cout << "3. Вывод экземпляра с заданным порядковым номером" << endl; cout << "4. Вывод всех экземпляров, отсортированных по пережившим" << endl; cout << "5. Вывод всех экземпляров по кругу, начиная с указанного" << endl; cout << "6. Вывод экземпляров по различным признакам" << endl; cout << "7. Добавление/yдаление экземпляров" << endl; cout << "8. О программе" << endl; cout << "0. Выйти\n" << endl; cout << "Введите номер действия: "; do { cin >> set; if (set > 9 || set < 0) { cout << "Введено неверное число" << endl; cout << "Введите номер действия: "; } } while (set > 9); startGate(set, p, viruses); } while (set != 0); return 0; } void startGate(int t, int p, List* viruses) { int choose, amount = 0; switch (t) { case 1: do { cout << "Введите количество экземпляров (не больше 20): "; cin >> amount; if (amount > 20) { cout << "Число должно быть не больше 20" << endl; } else if (amount < 0) { cout << "Число не должно быть меньше нуля" << endl; } } while (amount > 20 || amount < 0); for (int i = 0; i < amount; i++) { viruses->push(new Virus); } cout << "Created!" << endl; getchar(); cin.get(); system("cls"); break; case 2: if (viruses->getsize() > 0) { system("cls"); viruses->print(); } else { cout << "Тут пусто..." << endl; } getchar(); cin.get(); system("cls"); break; case 3: int sNum; if (viruses->getsize() > 0) { system("cls"); do { cout << "Введите номер экземпляра: "; cin >> sNum; if (sNum > viruses->getsize() || sNum <= 0) { cout << "Экземпляра с таким порядковым номером не существует" << endl; } else { viruses->getSerNum(sNum); } } while (sNum > viruses->getsize() || sNum <= 0); getchar(); cin.get(); system("cls"); break; } else { cout << "Тут пусто..." << endl; getchar(); cin.get(); system("cls"); break; } case 4: if (viruses->getsize() > 0) { system("cls"); viruses->sort(); } else { cout << "Тут пусто..." << endl; } getchar(); cin.get(); system("cls"); break; case 5: if (viruses->getsize() > 0) { system("cls"); do { cout << "Введите номер экземпляра, с которого хотите начать отображение массива: "; cin >> choose; if (choose > viruses->getsize()) { cout << "Экземпляр за пределами массива" << endl; } else if (choose <= 0) { cout << "Экземпляр не может быть отрицательным или равным нулю" << endl; } else { viruses->clist(choose); } } while (choose > viruses->getsize() || choose <= 0); } else { cout << "Тут пусто..." << endl; } getchar(); cin.get(); system("cls"); break; case 6: if (viruses->getsize() > 0) { system("cls"); cout << "1. Вывод процента заразности" << endl; cout << "2. Вывод процента смертности" << endl; cout << "3. Вывод продолжительности болезни" << endl; cout << "4. Вывод продолжительности панадемии" << endl; cout << "5. Вывод продолжительности инкубационного периода" << endl; cout << "6. Вывод способа распостранения" << endl; do { cout << "Введите номер действия: "; cin >> choose; if (choose > 6 || choose <= 0) { cout << "Введено неверное число" << endl; } } while (choose > 6 || choose <= 0); viruses->printFeature(choose); } else { cout << "Тут пусто..." << endl; } getchar(); cin.get(); system("cls"); break; case 7: system("cls"); do { cout << "1. Добавить экземпляр\n2. Удалить экземпляр\nВведите номер действия: "; cin >> choose; if (choose < 1 || choose > 2) { cout << "\nВыберите из предложенных вариантов!\n" << endl; } else if (choose == 2 && viruses->getsize() == 0) { cout << "Удалять нечего :(" << endl; getchar(); cin.get(); system("cls"); } else { switch (choose) { case 1: int ch; viruses->push(new Virus); if (p) { viruses->getEnd()->Print(); } else { do { cout << "Введите кол-во людей: "; cin >> p; if (p <= 0) { cout << "Число не может быть отрицательным/быть равным нулю." << endl; } } while (p <= 0); Virus::population = p; viruses->getEnd()->Print(); } cout << "Хотите изменить какие-то поля программы?\n0. Нет\n1. Да\n"; cout << "Введите номер действия: "; cin >> ch; if (ch == 1) { system("cls"); int f; cout << "1. Изменить процент заразности" << endl; cout << "2. Изменить процент смертности" << endl; cout << "3. Изменить длительность инкубационного периода" << endl; cout << "4. Изменить длительность болезни" << endl; cout << "5. Изменить способо распостранения" << endl; cout << "0. Выйти в основное меню" << endl; do { cout << "Введите номер действия: "; cin >> f; if (f < 0 || f > 5) { cout << "Введено неверное число" << endl; } else { switch (f) { case 1: int i; cout << "Процент заразности: "; cin >> i; viruses->getEnd()->setInfect(i); break; case 2: int m; cout << "Процент смертности: "; cin >> m; viruses->getEnd()->setMortRate(m); break; case 3: int in; cout << "Инкубационный период (дни): "; cin >> in; viruses->getEnd()->setIncubPeriod(in); break; case 4: int d; cout << "Продолжительность болезни (дни): "; cin >> d; viruses->getEnd()->setDuration(d); break; case 5: int s; cout << "Виды распостранения:" << endl; cout << "1. воздушно-капельный\n2. пищевой\n3. трансмиссивный\n4. половой\n5. через кожу" << endl; do { cout << "Введите номер: "; cin >> s; if (s < 0 || s > 5) cout << "Вы ввели неверный номер" << endl; } while (s < 0 || s > 5); viruses->getEnd()->setSpreadingWay(s - 1); viruses->getEnd()->setPanDur(); break; } } } while (f != 0); } system("cls"); break; case 2: int number; do { cout << "Введите номер экземпляра: "; cin >> number; if (number > viruses->getsize() || number < 0) { cout << "Введен неверный номер экземпляра" << endl; } } while (number > viruses->getsize() || number < 0); viruses->del(number); cout << "Данные удалены!" << endl; getchar(); cin.get(); system("cls"); break; } } } while (choose < 1 || choose > 2); break; case 8: system("cls"); cout << "Создатель:\nТарас Букша\nГруппа:\nОПК-227" << endl; getchar(); cin.get(); system("cls"); break; } }
Raw Text
-
Threesome sex, blowjob, mouthfuck, doggy, pussy licking, huge cumshot, cum kissing (Short)
2 min ago
-
asdfbn dasdfvb dasdf
3 min ago
-
Adult Telegram Channels
20 min ago
-
No Deposit Bonus
21 min ago
-
Abby and Bryana Lesbian Strap-On Fucking
32 min ago
-
xcghhgtfyh
39 min ago
-
Ch!ld p06n telegram channel linkT
1 hour ago
-
SMA BERHIJAB CANTIK BGT
1 hour ago
-
Japanese honey Haru Sakuraba got fucked uncensored
1 hour ago
-
2play best collectionsT
1 hour ago