Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти та науки України
Національний університет “ Львівська політехніка”
Кафедра інформаційних систем та мереж
Звіт
про виконання лабораторної роботи №2
«Інтегровані структури даних»
з дисципліни: “Теорія алгоритмів”
Варіант 17
Мета роботи: Придбання та закріплення навиків в роботі із записами, в інтеграції даних, в модульному програмуванні.
Індивідуальне завдання:
Сільське господарство
Найменування с/г підприємства, вид власності, основний вид продукції, к-сть тих що працюють, прибуток
Графічна схема алгоритму розв’язування задачі
Блок-схема:
Пояснення
Програма призначена для побудови структури сільськогосподарського підприємства. Користувачу дається вибір: ввести дані про підприємство з клавіатури чи зчитати з файлу. Далі програма дає змогу вибрати вид сортування (за іменем або площею) за зростанням чи спаданням. Наприкінці це все виводиться на екран. Програмою передбачено, що кількість працівник має бути лише натуральним числом. В протилежному випадку, програма видає повідомлення про помилку.
Текст програми на мові С/С++:
#include<iostream>
#include<conio.h>
#include<stdlib.h>
#include <fstream>
#include <stdio.h>
#include <string>
using namespace std;
#define FOREST 7
#define _CRT_SECURE_NO_WARNINGS
void inputKey(struct Forest[]);
void inputFile(struct Forest[]);
void output(struct Forest[]);
void operation(struct Forest[]);
void procent(struct Forest[]);
void sortAlph(struct Forest[]);
void sortNum(struct Forest[]);
//Оголошую структуру
struct Forest{
string name;
int area;
string species;
int age;
string density;
};
//Головна програма
int main(){
Forest forest[FOREST];
int n, k;
cout<<"Input from keyboard - 1, file 2: "; cin>>n;
if (n==1) inputKey(forest);
else if (n==2) inputFile(forest);
else {cout<<"Error! Wrong data.";
exit (0);}
cout<<"Choose: sort by name - 1, profit - 2: "; cin>>k;
if (k==1){sortAlph(forest);}
else if(k==2){sortNum(forest);}
else {cout<<"Error! Wrong data.";exit(0);}
getch();
return 0;
}
//Підпрограма для вводу з клавіатури
void inputKey(Forest forest[]){
for(int i = 0; i<FOREST; i++){
cout<<"Name of factory : ";
cin.sync();
cin>>forest[i].name;
cout<<"Profit : "; cin>>forest[i].area;
if (forest[i].area<=0) {cout<<"Error! Wrong data."; system("pause");
exit (0);}
cout<<"Main species: "; cin>>forest[i].species;
cout<<"Count : "; cin>>forest[i].age;
if (forest[i].age<=0){cout<<"Error! Wrong data."; system("pause");
exit (0);}
cout<<"Type of owning : "; cin>>forest[i].density;
}
}
//Підпрограма для читання з файлу
void inputFile(Forest forest[])
{
ifstream file("file.txt");
for (int i = 0; i<FOREST; i++)
{
file>>(*(forest+i)).name;
file>>(*(forest+i)).area;
file>>(*(forest+i)).species;
file>>(*(forest+i)).age;
file>>(*(forest+i)).density;
}
file.close();
}
//Підпрограма виведення
void output(Forest forest[]){
cout<<"Name of factory"<<"\t"<<"Profit"<<"\t"<<"Main species"<<"\t"<<"Count"<<"\t"
<<"Type of owning"<<endl;
for(int i = 0; i<FOREST; i++){
cout<<forest[i].name<<"\t"<<"\t"
<<forest[i].area<<"\t"
<<forest[i].species<<"\t"<<"\t"
<<forest[i].age<<"\t"<<"\t"
<<forest[i].density<<endl;
}
}
//Підпрограма сортування за алфавітом
void sortAlph(Forest forest[])
{
bool wasSwapped = true;
int k;
cout<<"Sort by ascending - 1, Sort by descending - 2: "; cin>>k;
if(k==1){
for (int i = 1; (i <= FOREST) && wasSwapped; ++i)
{
wasSwapped = false;
for (int j = 0; j < (FOREST - i); ++j)
{
if (forest[j].name > forest[j + 1].name)
{
swap(forest[j], forest[j + 1]);
wasSwapped = true;
}
}
}
}
if(k==2){
for (int i = 1; (i <= FOREST) && wasSwapped; ++i)
{
wasSwapped = false;
for (int j = 0; j < (FOREST - i); ++j)
{
if (forest[j].name < forest[j + 1].name)
{
swap(forest[j], forest[j + 1]);
wasSwapped = true;
}
}
}
}
cout<<"Sorted by name: "<<"\n";
output(forest);
}
//Сортування за прибутком
void sortNum(Forest forest[])
{
bool wasSwapped = true;
int k;
cout<<"Sort by ascending - 1, Sort by descending - 2: "; cin>>k;
if (k==2){
for (int i = 1; (i <= FOREST) && wasSwapped; ++i)
{
wasSwapped = false;
for (int j = 0; j < (FOREST - i); ++j)
{
if (forest[j].area < forest[j + 1].area)
{
swap(forest[j], forest[j + 1]);
wasSwapped = true;
}
}
}
}
else if (k==1){
for (int i = 1; (i <= FOREST) && wasSwapped; ++i)
{
wasSwapped = false;
for (int j = 0; j < (FOREST - i); ++j)
{
if (forest[j].area > forest[j + 1].area)
{
swap(forest[j], forest[j + 1]);
wasSwapped = true;
}
}
}
}
cout<<"Sorted by area: "<<"\n";
output(forest);
}
Результати комп'ютерної реалізації програми
Користувач заповнює структуру типу struct вручну з клавіатури або з файлу. Далі програма
сортує структуру forest за іменем с/г підприємства або прибутком(за зростанням чи спаданням). Далі це все виводиться на екран. В цій програмі я оперую форматами даних – string та int, float.
Скріншоти виконання програми:
/
Рис.1 Приклад роботи програми за коректно введених даних. Відсортовано за числовим параметром, а саме за прибутком за зростанням
/
Рис.2 Приклад роботи програми за коректно введених даних. Відсортовано за числовим параметром, а саме за прибутком за спаданням
/
Рис.3 Сортування по назві за зростанням
/
Рис.4 Результат роботи програми за некоректного введення даних з консолі
/
Рис.5 Файл із даними
Висновок. На даній лабораторній роботі я написав програму на мові C++, у середовищі програмування Visual Studio 2010. Програма працює із структурами даних, а конкретніше із структурами сільськогосподарських підприємств. Також вона сортує дані за назвою по алфавіту і за чисельними значеннями по зростанню і спаданню. Врахував помилки виконання програми при сортуванні. Програма повинна сортувати структуру. Обмежень в застосуванні програми немає. Покращити дану програму можливо, добавивши деякі функції.
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!