Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторні роботи по програмуванні(14 лаб).doc
Скачиваний:
77
Добавлен:
16.05.2015
Размер:
1.43 Mб
Скачать

Приклад 3 виконання завдання №3

  1. Задача “Студент” (прізвище, вік).

Лістинг програми

#include "stdafx.h"

#include <iostream.h>

#include <vector>

#include <stdlib.h>

#include <stdio.h>

#include <algorithm>

using namespace std;

struct structura{ //ініціалізація структури згідно варіанту

char name[20];

int age;

}str,str1;

template <class T>

class S //клас для роботи з структурою

{

private:

vector<T>st; //динаміний масив для роботи з структурою

public:

S(int n); //конструктор

print(void); //функція для виводу масиву

insert(void); //функція для вставки структури в масив

sort(void); //функція для сортування масиву структур

float sum(void); //функція для знаходження суми по полю структури age

erase(int n); //функція для видалення структури з масиву

};

template <class T> //шаблон класу

S<T>::S(int n) //описання конструктора

{

for(int i=0; i<n; i++)

{

cout << "Enter name["<<i<<"]=";

cin >>str.name;

cout << "Enter age["<<i<<"] =";

cin >>str.age;

st.push_back(str);

}

};

template <class T>

S<T>::print() //описання функції для виводу масиву

{

for(int i=0; i<st.size(); i++)

{

cout <<"\nname["<<i<<"]="<<st[i].name;

cout <<"\nage["<<i<<"] ="<<st[i].age;

}

};

template <class T>

S<T>::insert() //описання функції для вставки структури в масив

{

cout<<"\n\nInsert\n";

cout << "Enter name=";

cin >>str.name;

cout << "Enter age=";

cin >>str.age;

st.push_back(str);

};

template <class T>

S<T>::sort() //описання функції для сортування масиву структур

{

for(int i=0;i<st.size()-1;i++)

for(int j=i+1;j<st.size();j++)

{

if(st[i].age<st[j].age)

{

str1=st[i];

st[i]=st[j];

st[j]=str1;

}

}

}

template <class T>

S<T>::erase(int n)//описання функції для видалення структури з масиву

{

if (n>=0 && n<=st.size())

{

st.erase(st.begin()+n,st.begin()+n+1);

}

else cout << "\nIncorrect position\n";

};

template <class T>

float S<T>::sum() // описання функції для знаходження суми по полю структури age

{

float s=0;

for(int i=0; i<st.size(); i++)

s=s+st[i].age;

return s;

};

int main(int argc, char* argv[]) //головна програма

{

int N=0,k;

cout << "\nEnter number of element =";

cin >> N;

S<structura> x(N); //ініціалізація динамічного масиву

x.print(); //виклик функції print()

x.insert(); //виклик функції insert()

x.print(); //виклик функції print()

cout<<"\nSortuvanie\n";

x.sort(); //виклик функції sort()

x.print(); //виклик функції print()

cout<<"\nsum="<<x.sum();

cout<<"\n\nEnter position when erase\n";

cin>>k;

x.erase(k); //виклик функції erase(k)

x.print(); //виклик функції print()

return 0;

}

Тестування:

Enter number of element =5

Enter name[0]=Popov

Enter age[0] =45

Enter name[1]=Sidorov

Enter age[1] =32

Enter name[2]=Bobrov

Enter age[2] =22

Enter name[3]=Novikov

Enter age[3] =51

Enter name[4]=Filatov

Enter age[4] =33

Insert

Enter name=Kotov

Enter age=24

name[0]=Popov

age[0] =45

name[1]=Sidorov

age[1] =32

name[2]=Bobrov

age[2] =22

name[3]=Novikov

age[3] =51

name[4]=Filatov

age[4] =33

name[5]=Kotov

age[5] =24

Sortuvanie

name[0]=Novikov

age[0] =51

name[1]=Popov

age[1] =45

name[2]=Filatov

age[2] =33

name[3]=Sidorov

age[3] =32

name[4]=Kotov

age[4] =24

name[5]=Bobrov

age[5] =22

sum=207

Enter position when erase

4

name[0]=Novikov

age[0] =51

name[1]=Popov

age[1] =45

name[2]=Filatov

age[2] =33

name[3]=Sidorov

age[3] =32

name[4]=Bobrov

age[4] =22