Программирование с использованием структур и динамических массивов

Автор работы: Пользователь скрыл имя, 22 Марта 2013 в 20:23, лабораторная работа

Краткое описание

1. Создать структуру, указанную в варианте, создать функцию ввода и вывода. Создать функции для реализации запроса на вывод на основе сложного критерия и сложного критерия с использованием функций. Создать динамический массив структурного типа и реализовать ввод массива и вывод на основе заданных критериев.
2. Создать структуру из четырех полей, создать функцию ввода и вывода. Создать функции для реализации запроса с использованием функций и группировки. Создать динамический массив структурного типа и реализовать ввод массива и выполнение запросов на основе заданных критериев.

Содержимое работы - 1 файл

3.0.docx

— 1.89 Мб (Скачать файл)

Лабораторная работа  №3

 

«Программирование с использованием структур и динамических массивов»

 

Цель:  Получить навыки программирования с использованием структур и динамических массивов.

I. Постановка задачи

 

1. Создать структуру, указанную в варианте, создать функцию ввода и вывода. Создать функции для реализации запроса на вывод на основе сложного критерия и сложного критерия с использованием функций. Создать динамический массив структурного типа и реализовать ввод массива и вывод на основе заданных критериев.

2. Создать структуру из четырех полей, создать функцию ввода и вывода. Создать функции для реализации запроса с использованием функций и группировки. Создать динамический массив структурного типа и реализовать ввод массива и выполнение запросов на основе заданных критериев.

 

Вариант № 2

 

1 задание

2 задание

Учеба

Учеба

АБИТУРИЕНТ (имя, дата, балл, средний  балл)

ИНСТИТУТ


 

Структура — конструкция большинства языков программирования, позволяющая содержать в себе набор переменных различных типов. В языках семейства Pascal структуры традиционно называют записями (англ. record).

С внедрением концепции объектно-ориентированного программирования понятие структуры было расширено, в частности была добавлена возможность включения в структуру функций-методов, появились ключевые слова для ограничения доступа к элементам структуры. В результате структура стала очень похожа на классы и интерфейсы, однако в большинстве языков сохранила некоторые отличия от них.

 

C++

struct str_name

{

        private:

                int         member_1;

                float       member_2;

        public:

                std::string member_3;

        // ...

};

// примеры инициализации структуры.

str_name struct0;

str_name struct1 = {1, 3.1416, "doit" /* ... */};

str_name struct2 = {member_1:2, member_2:3.1416, member_3:"doit" /* ... */};

str_name struct2 = {.member_1=2, .member_2=3.1416, .member_3="doit" /* ... */};

 

Функции использованные в 1 задание:

// Функция  для поиска студента с максимальным  баллом

int max(Abiturient dArr[], int size)

{

   int max = dArr[0].ball;

   for(int i = 1; i < size; i++)

    if(max < dArr[i].ball)

      max = dArr[i].ball;

  

   return max; 

}

 

// Функция для ввода абитуриентов

void setFunction(Abiturient dArr[], int size)

{

   int count = 1;

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

   {

      std::system("cls");

      std::cout << "Entrant: " << count;

      std::cout << "\nEnter name: "; std::cin >> dArr[i].name;

      std::cout << "\nEnter surname: "; std::cin >> dArr[i].surname;

      std::cout << "\nEnter date of month: "; std::cin >> dArr[i].date;

      std::cout << "\nEnter month: "; std::cin >> dArr[i].month;

      std::cout << "\nEnter year: "; std::cin >> dArr[i].year;

      std::cout << "\nEnter ball: "; std::cin >> dArr[i].ball;

      std::cout << "\nEnter average ball: "; std::cin >> dArr[i].averageBall;

      count++;            

   } 

}

 

// Функция  для вывода всех абитуриентов

void getFunction(Abiturient dArr[], int size)

{

   std::system("cls");

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

   {

      std::cout << "\n\nName: " << dArr[i].name;

      std::cout << "  Surname: " << dArr[i].surname;

      std::cout << "\nDate: " << dArr[i].date;

      std::cout << "  " << dArr[i].month;

      std::cout << "  " << dArr[i].year;

      std::cout << "\nBall: " << dArr[i].ball;

      std::cout << "\nAverage ball: " << dArr[i].averageBall;              

   }    

}

 

// Функция  для вывода абитуриентов с  запросом со сложным критерием

void getHardCall(Abiturient dArr[], int size)

{

   bool flag;

   int count = 1;

   Abiturient *myNewDArr = new Abiturient[size];

   // очистка экрана от предыдущих записей

   std::system("cls");  

   char myEntrant[25];

   int baL;

   std::cout << "Enter name of university entrant: ";

   std::cin  >> myEntrant; // ввод имени и...

   std::cout << "\nEnter Ball: ";

   std:: cin >> baL; // ...балла для запроса со сложным критерием

 

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

   {        

     if(stricmp(dArr[i].name,myEntrant)==0 && dArr[i].ball < baL)

     {

      myNewDArr = dArr;

      count++;

      flag = true;                                       

     }                 

   }

   if(!flag)

      std::cout << "\nEntrants with such name are not present \n"

                << "And a point there is less than set!\n"; 

   else

      getFunction(myNewDArr,count);        

}

 

// Функция  для вывода абитуриентов с  запросом со сложным критерием

// и функцией

void getHardCallAndFunction(Abiturient dArr[], int size)

{

   int maxBall = max(dArr,size);

   std::system("cls");

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

   {

      if(dArr[i].ball == maxBall)

       {

          std::cout << "This entrant has max ball =>";

          std::cout << "\nName: " << dArr[i].name;

          std::cout << "  Surname: " << dArr[i].surname;

          std::cout << "\nDate: " << dArr[i].date;

          std::cout << "  " << dArr[i].month;

          std::cout << "  " << dArr[i].year;

          std::cout << "\nBall: " << dArr[i].ball;

          std::cout << "\nAverage ball: " << dArr[i].averageBall; 

       }           

   }        

}

 

 

Функции использованные во 2 задание:

// Функция  для вычисления среднего возраста  студентов 

// всех иститутов

int meanAge(Institute myArr[], int sz)

{

   int mean = 0;

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

    mean += myArr[i].ageOfStudent;

  

   mean = mean / sz; 

   return mean; 

}

 

 

// Функция  для ввода институтов

void setFunction(Institute myArr[], int sz)

{

   int count = 1;

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

   {

      std::system("cls");

      std::cout << "Institute: " << count;

      std::cout << "\nEnter name of Institute: ";

      std::cin >> myArr[i].nameOfInstitute;

     

      for(int j = 0; j < 3; j++)

      {

        std::cout << "\nEnter name of facultet: ";

        std::cin >> myArr[i].facultet[j];

        std::cout << "\nEnter number of student: ";

        std::cin >> myArr[i].countOfStudentinF[j];     

      }

          

      std::cout << "\nEnter age of students for this year: ";

      std::cin >> myArr[i].ageOfStudent;

      count++;            

   } 

}

 

// Функция  для вывода всех институтов

void getFunction(Institute myArr[], int sz)

{

   std::system("cls");

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

   {

      std::cout << "Name of Institute: "

                << myArr[i].nameOfInstitute;

     

      for(int j = 0; j < 3; j++)

      {

        std::cout << "\nFacultet: "

                  << myArr[i].facultet[j];

        std::cout << "   Students: "

                  << myArr[i].countOfStudentinF[j];     

      }

          

      std::cout << "\nAge of students for this year: "

                << myArr[i].ageOfStudent << "\n\n";                       

   }    

}

 

// Запроса с функцией и группировкой

void getCallWithFunctionAndGr(Institute myArr[], int sz)

{

   bool flag;

   std::system("cls");

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

   {

       std::cout << "\nName of Institute: "

                << myArr[i].nameOfInstitute;

   }

   std::string check;

   std::cout <<"\n\nEnter name of Institute: ";

   std::cin  >> check;

  

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

   {

       if(check == myArr[i].nameOfInstitute)

       {

           for(int j = 0; j < 3; j++)

              {

                std::cout << "\nCount of students in facultet: "

                          << myArr[i].facultet[j];

                std::cout << "   = >  "

                          << myArr[i].countOfStudentinF[j];

                flag = true;    

              }       

       }     

   }

   if(!flag)

      std::cout << "\nWe have not this insitute!\n";

     

   std::cout << "\nMean age of students of institutes: "

             << meanAge(myArr,sz) << "\n";

}

 

 

Задание 1.

//***********************************************

//                                                                                          *

// Вариант  №2                                                                     *

// АБИТУРИЕНТ (имя, дата, балл, средний балл)          *

//                                                                                          *

// 07.03.2013                                                                        *

//***********************************************

#include <iostream>

 

struct Abiturient{

  

   char name[25];

   char surname[25];

   int date;

   char month[10];

   int year;

   int ball;

   double averageBall;

  

};

 

// Функция  для поиска студента с максимальным  баллом

int max(Abiturient dArr[], int size)

{

   int max = dArr[0].ball;

   for(int i = 1; i < size; i++)

    if(max < dArr[i].ball)

      max = dArr[i].ball;

  

   return max; 

}

 

// Функция для ввода абитуриентов

void setFunction(Abiturient dArr[], int size)

{

   int count = 1;

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

   {

      std::system("cls");

      std::cout << "Entrant: " << count;

      std::cout << "\nEnter name: "; std::cin >> dArr[i].name;

      std::cout << "\nEnter surname: "; std::cin >> dArr[i].surname;

      std::cout << "\nEnter date of month: "; std::cin >> dArr[i].date;

      std::cout << "\nEnter month: "; std::cin >> dArr[i].month;

      std::cout << "\nEnter year: "; std::cin >> dArr[i].year;

      std::cout << "\nEnter ball: "; std::cin >> dArr[i].ball;

      std::cout << "\nEnter average ball: "; std::cin >> dArr[i].averageBall;

      count++;            

   } 

}

 

// Функция  для вывода всех абитуриентов

void getFunction(Abiturient dArr[], int size)

{

   std::system("cls");

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

   {

      std::cout << "\n\nName: " << dArr[i].name;

      std::cout << "  Surname: " << dArr[i].surname;

      std::cout << "\nDate: " << dArr[i].date;

      std::cout << "  " << dArr[i].month;

      std::cout << "  " << dArr[i].year;

      std::cout << "\nBall: " << dArr[i].ball;

      std::cout << "\nAverage ball: " << dArr[i].averageBall;              

   }    

}

 

// Функция  для вывода абитуриентов с  запросом со сложным критерием

void getHardCall(Abiturient dArr[], int size)

{

   bool flag;

   int count = 1;

   Abiturient *myNewDArr = new Abiturient[size];

   // очистка экрана от предыдущих записей

   std::system("cls");  

   char myEntrant[25];

   int baL;

   std::cout << "Enter name of university entrant: ";

   std::cin  >> myEntrant; // ввод имени и...

   std::cout << "\nEnter Ball: ";

   std:: cin >> baL; // ...балла для запроса со сложным критерием

 

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

   {        

     if(stricmp(dArr[i].name,myEntrant)==0 && dArr[i].ball < baL)

     {

      myNewDArr = dArr;

      count++;

      flag = true;                                       

     }                 

   }

   if(!flag)

      std::cout << "\nEntrants with such name are not present \n"

                << "And a point there is less than set!\n"; 

   else

      getFunction(myNewDArr,count);        

}

 

// Функция  для вывода абитуриентов с  запросом со сложным критерием

// и функцией

void getHardCallAndFunction(Abiturient dArr[], int size)

{

   int maxBall = max(dArr,size);

   std::system("cls");

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

   {

      if(dArr[i].ball == maxBall)

       {

          std::cout << "This entrant has max ball =>";

          std::cout << "\nName: " << dArr[i].name;

          std::cout << "  Surname: " << dArr[i].surname;

          std::cout << "\nDate: " << dArr[i].date;

          std::cout << "  " << dArr[i].month;

          std::cout << "  " << dArr[i].year;

          std::cout << "\nBall: " << dArr[i].ball;

          std::cout << "\nAverage ball: " << dArr[i].averageBall; 

       }           

   }        

}

 

int main()

{

   int size = 3; // количество абитуриентов

   int check; 

   Abiturient* dArr = new Abiturient[size];

   setFunction(dArr,size);

  

   std::system("cls");

   std::cout << "Enter 1 for Inquiry with difficult criterion\n"

             << "Enter 2 for Inquiry with difficult criterion and function\n"

             << "Enter 3 to see all entrants\nSo,enter: ";

   std::cin  >> check;

  

   switch(check)

   {

     case 1:  getHardCall(dArr,size);break;

     case 2:  getHardCallAndFunction(dArr,size);break;

     case 3:  getFunction(dArr,size);break;

     default: std::cout << "\nYou have entered unknown symbol!\n";          

   }

 

   std::cout << std::endl;

   std::system("pause");

   return 0;     

}

 

 

 

 

 

 

Скриншот  с примером выполнения программы:


 

 

 

 

 

 

 

 

 

 


 

 

 

 

 


 

 

 

 

 

 

 


 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

 

 

Задание 2.

//***********************************************

//                                                                                           *

// Вариант №2                                                                     *

// Институт                                                                          *

//                                                                                           *

// 10.03.2013                                                                        *

//***********************************************

#include <iostream>

#include <cstring>

 

struct Institute{

        

   int countOfStudentinF[3];

   std::string facultet[3];

   int ageOfStudent;

   std::string nameOfInstitute;

     

};

 

// Функция для вычисления среднего  возраста студентов 

// всех иститутов

int meanAge(Institute myArr[], int sz)

{

   int mean = 0;

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

    mean += myArr[i].ageOfStudent;

  

   mean = mean / sz; 

   return mean; 

}

 

 

// Функция для ввода институтов

void setFunction(Institute myArr[], int sz)

{

   int count = 1;

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

   {

      std::system("cls");

      std::cout << "Institute: " << count;

      std::cout << "\nEnter name of Institute: ";

      std::cin >> myArr[i].nameOfInstitute;

     

      for(int j = 0; j < 3; j++)

Информация о работе Программирование с использованием структур и динамических массивов