МИНИСТЕРСТВО РАЗВИТИЯ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ И ТЕЛЕКОММУНИКАЦИЙ
ТАШКЕНТСКИЙ УНИВЕРСИТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ ИМЕНИ МУХАММАДА АЛЬ-ХОРЕЗМИ
Кафедра: Телекоммуникационные технологии
Предмет: Структура данных и алгоритмы
Группа: 420-20
Лабораторная работа №3
Выполнил: Абдурасулов Зохиржон
Ташкент - 2021
Вариант №4
Задание 1: Дана структура. Считать данные структур с файлов. Сортировать данные методом прямого включения. Вывести на экран показатели эффективности (количество сравнений и замен).
// ТРАВЫ (название, род, цвет, высота)
#include
#include
using namespace std;
struct grass { char Name[32]; char Genus[32]; char Colour[32]; int Heigh; };
int main()
{
setlocale(LC_ALL, "russian");
grass S[4], temp;
int k_s = 0, k_z = 0;
for (int i = 0; i < 4; i++)
{
cout << "----------------------------------\n";
cout << "Название: ";
cin >> S[i].Name;
cout << "Род: ";
cin >> S[i].Genus;
cout << "Цвет: ";
cin >> S[i].Colour;
cout << "Высота: ";
cin >> S[i].Heigh;
}
cout << "\n\nДанные сортируются...\n";
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
k_s++;
if (S[i].Heigh < S[j].Heigh)
{
k_z++;
temp = S[i];
S[i] = S[j];
S[j] = temp;
}
}
}
cout << "\n\n\nДанные отсортированы!\n\n\n" << endl;
cout << "Количество сравнений: " << k_s << endl;
cout << "\nКоличество замен: " << k_z << endl;
cout << "\n\nДля вывода данных нажмите Enter!\n\n";
_getch();
for (int i = 0; i < 4; i++)
{
cout << "\n----------------------------------\n";
cout << "\nНазвание: " << S[i].Name;
cout << "\nРод: " << S[i].Genus;
cout << "\nЦвет: " << S[i].Colour;
cout << "\nВысота: " << S[i].Heigh;
}
return 0;
}
Результат:
Задание 2: Дана структура. Считать данные структур с файлов. Сортировать данные методом прямого выбора. Вывести на экран показатели эффективности (количество сравнений и замен).
#include
#include
#include
using namespace std;
struct MyStruct {
string imya;
string rod;
string svet;
int visota;
};
void sort(MyStruct *p, int n) {
int min = 0;
int minInt = 0;
for (int startIndex = 0; startIndex < n-1; ++startIndex)
{
int smallestIndex = startIndex;
for (int currentIndex = startIndex +1; currentIndex < n; ++currentIndex) {
if (p[currentIndex].visota < p[smallestIndex].visota) {
smallestIndex = currentIndex;
}
}
swap(p[startIndex], p[smallestIndex]);
}
};
int main() {
setlocale(LC_ALL, "russian");
MyStruct m[100];
int n = 0;
fstream fc;
fc.open("MyFile.txt", fstream::in | fstream::out | fstream::app);
if (!fc.is_open()) {
cout << "îøèáêà !";
}
else {
string s;
while (!fc.eof()) {
getline(fc, s);
m[n].imya = s;
getline(fc, s);
m[n].rod = s;
getline(fc, s);
m[n].svet = s;
getline(fc, s);
m[n].visota = stoi(s);
n++;
}
sort(m, n);
for (int i = 0; i < n; i++) {
cout << i + 1 << ".\n";
cout << " imya: " << m[i].imya << "\n rod: " << m[i].rod << "\n svet: " << m[i].svet << "\n visota: " << m[i].visota << "\n------------------------------------\n";
}
}
fc.close();
return 0;
}
Задание 3: Дана структура. Считать данные структур с файлов. Сортировать данные методом прямого обмена (пузырьковая). Вывести на экран показатели эффективности (количество сравнений и замен).
Вариант: Студент (имя, группа, возраст, область)
#include
#include
#include
#include
#include
using namespace std;
struct MyStruct {
string imya;
string gruppa;
string vozrast;
string oblast;
};
void sort(MyStruct *p, int n) {
for(int i=0; i
for(int j=0; j
if(p[j].imya>p[j+1].imya)
swap(p[j], p[j+1]);
}
}
};
int main() {
setlocale(LC_ALL, "russian");
MyStruct m[100];
int n=0, l;
fstream fc;
fc.open("MyFile.txt", fstream::in | fstream::out | fstream::app);
if(!fc.is_open()) {
cout << "îøèáêà !";
}
else {
string s;
while(!fc.eof()) {
getline(fc, s);
m[n].imya = s;
getline(fc, s);
m[n].staj = s ;
getline(fc, s);
m[n].oblast = s;
getline(fc, s);
m[n].gruppa = s;
n++;
}
sort(m,n);
for(int i=0; i
cout << i+1 << ".\n";
cout << " Imya: " << m[i].imya << "\n vozrast: " << m[i].vozrast<< "\n oblast: " << m[i].oblast<< "\n gruppa: " << m[i].gruppa<< "\n------------------------------------\n";
}
}
fc.close();
return 0;
}
Do'stlaringiz bilan baham: |