Professional Documents
Culture Documents
ООП ЛР№3 Кудринских Елизавета Руслановна
ООП ЛР№3 Кудринских Елизавета Руслановна
Хід роботи
Завдання №1.
Додати до класу з попередньої лабораторної роботи №2 пошукову дружню
функцію.
Визначити декілька перевантажених дружніх функцій ( з одим іменем та з
різними списками параметрів) – для одного екземпляра класа і для масива
екземплярів класу (дві дружні функції) .
Для тестування дружніх функцій в головній функції оголосити масив
об’єктів та виконати явну ініціалізацію масиву за допомогою вже визначеного
конструктору з параметрами.
Лістинг програми:
#include <iostream>
#include <string>
#include <iomanip>
class Lake {
private:
string lake_name;
string lake_country;
float lake_deep;
float lake_salt_perc;
public:
Lake();
Lake(const Lake& cop);
Lake(string, string, float, float);
~Lake() { }
friend void searchLake(const Lake* lakes, int count, const string& name, const string&
country);
};
void Lake::scan() {
cout << "Enter Lake Name: ";
cin >> lake_name;
Арк.
void searchLake(const Lake* lakes, int count, const string& name, const string& country) {
bool found = false;
for (int i = 0; i < count; ++i) {
if (lakes[i].lake_name == name && lakes[i].lake_country == country) {
found = true;
cout << "Lake found:\n";
lakes[i].print();
cout << endl;
}
}
if (!found) {
cout << "Lake not found with name: " << name << " and country: " << country << endl;
}
}
int main() {
system("color e5");
system("chcp 1251");
system("cls");
Lake lakes[3] = {
Lake("Dead Sea", "Israel and Jordan", 304.0, 33.7),
Lake("Lake Tahoe", "USA", 501.0, 0.1),
Lake("Caspian Sea", "Multiple Countries", 1025.0, 1.2)
};
displayLakeInfo(lakes, 3);
searchLake(lakes, 3, "Dead Sea", "Israel and Jordan");
searchLake(lakes, 3, "Lake Tahoe", "USA");
searchLake(lakes, 3, "Unknown Lake", "Unknown Country");
return 0;
}
Результати тестування програми:
Арк.
class Time {
private:
int h;
int m;
public:
void RandTime() {
h = rand() % 24;
m = rand() % 60;
}
Time() {
RandTime();
}
Арк.
class Lake {
private:
string lake_name;
string lake_country;
float lake_deep;
float lake_salt_perc;
Time time;
public:
Lake() : lake_deep(0.0), lake_salt_perc(0.0) {
time.RandTime();
}
Lake(const Lake&);
Lake(string, string, float, float, Time);
~Lake() {}
void Lake::scan() {
cout << "Enter lake name: ";
getline(cin, lake_name);
cout << "Enter lake country: ";
getline(cin, lake_country);
cout << "Enter lake depth in m: ";
cin >> lake_deep;
cout << "Enter percentage of salt in water: ";
Арк.
cout << " No | Lake Name | Country | Depth | Salt % | Time |\n";
cout << "--------------------------------------------------------------------\n";
Time newTime;
arr[i].getTime() = newTime;
cout << "Time: " << arr[i].getTime().getHours() << ":" << setw(2) << setfill('0')
<< arr[i].getTime().getMinutes() << setfill(' ') << endl;
cout << "----------------------------------------------------" << endl;
}
Арк.
int main() {
int ch = 9;
const int n = 4;
Lake lake_arr[n];
system("color e5");
do {
system("cls");
cout << "\twelcome \
n________________________________________________________________________________\n";
cout << "\nmenu:\n\n1 - Output info \n2 - Search\n3 - Individual task\n0 - Exit\n";
cin.ignore();
switch (ch) {
case 1:
system("cls");
displayLakes(lake_arr, n);
cin.ignore();
break;
case 2:
system("cls");
find(lake_arr, n);
cin.ignore();
break;
case 3:
system("cls");
filterAndPrintLakes(lake_arr, n);
cin.ignore();
break;
case 0:
exit(0);
break;
default:
break;
}
} while (ch != 0);
return 0;
}
Результати тестування програми:
Арк.
Арк.
Арк.
Арк.