Professional Documents
Culture Documents
Poo Lab1
Poo Lab1
Молдова
Технический университет Молдовы
Кафедра «Микроэлектроника и
биомедицинская инженерия»
Отчёт
Лабораторная работа № 1
проверил: Митителу В.
Кишинёв 2021
Содержание
Содержание ............................................................................................................ 2
Цель работы ..........................................................................................................................3
Задание.....................................................................................................................................3
Реализация...............................................................................................................................4
Вывод........................................................................................................................................5
.
Реализация
#include <bits/stdc++.h>
ifstream fin;
fin.open("D:\LAB\POO\\dog.txt");
if (!fin.is_open())
{
cout << "Error" << endl;
}
else if (fin.is_open())
{
for (int i = 0; i < k; i++)
{
fin >> d[i].breed;
fin >> d[i].nicknume;
fin >> d[i].year;
}
}
fin.close();
}
static void fileout(dog*& d, int k)
{
ofstream fout;
fout.open("D:\LAB\POO\\dog.txt");
if (!fout.is_open())
{
cout << "Error" << endl;
}
else if (fout.is_open())
{
fout << "--------------------------------------------------------------------------------------------------------" << endl;
fout << "| # | Breed | Nickname | Year |" << endl;
fout << "--------------------------------------------------------------------------------------------------------" << endl;
for (int i = 0; i < k; i++)
{
fout << "|" << setw(3) << i + 1 << setw(2);
fout << "|" << setw(20) << d[i].breed << setw(20);
fout << " | " << setw(20) << d[i].nicknume << setw(20);
fout << " | " << setw(6) << d[i].year << setw(7) << " |" << endl;
fout << "--------------------------------------------------------------------------------------------------- " << endl;
}
}
}
case 3:
cout << "Enter the search object" << endl;
cin >> s1;
for (int i = 0; i < k; i++) {
if (s1 == d[i].year) {
f = 1;
}
}
if (f == 0) {
cout << "Nothing found" << endl;
}
else {
cout << "--------------------------------------------------------------------------------------------------- " << endl;
cout << "| # | Breed | Nickname | Year |" << endl;
cout << "--------------------------------------------------------------------------------------------------- " << endl;
}
}
}
}
};
int main()
{
int s;
int k;
class dog* d = NULL;
dog::start(d, k);
do {
cout << endl << "Select an item from the menu" << endl;
cout << "1.Enter dog data" << endl;
cout << "2.Output the created string" << endl;
cout << "3.Take data from a file" << endl;
cout << "4.Write data to a file" << endl;
cout << "5.Compare structure elements" << endl;
cout << "6.Find a dog" << endl;
cout << "7.Change the data about the dog" << endl;
cout << "8.Sorting Dog Data" << endl;
cout << "9.Exiting and freeing memory" << endl;
cin >> s;
switch (s) {
case 1:
dog::datain(d, k);
break;
case 2:
dog::print(d, k);
break;
case 3:
dog::filein(d, k);
break;
case 4:
dog::fileout(d, k);
break;
case 9:
delete[] d;
exit(1488);
break;
case 5:
dog::compare(d, k);
break;
case 6:
dog::search(d, k);
break;
case 7:
int b;
do {
cout << "Select the type of changes to be made" << endl;
cout << "1.Adding a new dog" << endl;
cout << "2.Change the data about the dog" << endl;
cout << "3.Deleting Dog Data" << endl;
cout << "0.Finish the change" << endl;
cin >> b;
switch (b) {
case 1:
dog::adddog(d, k);
k = k + 1;
break;
case 2:
dog::changedog(d, k);
break;
case 3:
dog::deletedog(d, k);
k = k - 1;
break;
}
} while (b == 1 || b == 2 || b == 3);
break;
case 8:
dog::sortdog(d, k);
break;
default:
cout << "Error!";
break;
}
} while (s != 1488);
return 0;
}
Вывод на экран
Сортировка
Изменения
#include <iostream>
struct Vec {
float* v = NULL;
int n = 0;
void init(float* v_, int n_) {
if (n > 0)
throw string("Can't init. Vector alredy exist");
else if (n_ < 0)
throw string("Can't init. Wrong quantity");
v = new float[n_];
for (int i = 0; i < n_; i++) {
v[i] = v_[i];
}
n = n_;
}
void clear() {
if (n == 0)
throw string("Can't clear vector. Vector don't exist");
n = 0;
delete v;
}
void setVec(float* v_, int n_) {
if (n == 0)
throw string("Can't clear vector. Vector don't exist");
else if (n_ < 0)
throw string("Can't init. Wrong quantity");
clear();
init(v_, n_);
}
float& operator[] (const int& index) {
if (index < 0 || index >= n)
throw string("Can't init. Wrong quantity");
return v[index];
}
float& getValue(int i) {
return v[i];
}
float getSum() {
float sum = 0;
for (int i = 0; i < n; i++) {
sum += v[i];
}
return sum;
}
};
int main()
{
const int N = 4;
Vec a, b;
float a_array[N] = { 1.5f, 2.0f, 2.99f, 100.6f };
float b_array[N] = { 10.5f, 14.8f, 9.99f, 108.2f };
a.init(a_array, N);
b.init(b_array, N);
cout << a.getSum() << ' ' << b.getSum() << endl;
float j = a.getValue(0);
a.getValue(0) = 1;
for (int i = 0; i < N; i++) {
cout << a[i] * b[i] << ' ';
}
return 0;
}
Вывод
В данной работе мы изучили основы абстракции, правила определения и
использования структур данных. Также мы научились создавать переменные
типа структур, обращается к полям. И в ходе мы ознакомились с основными
принципами программирования на работе со структурами.