75663

Інтегровані структури даних запису

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

Информатика, кибернетика и программирование

Використовуючи процедури і описи модуля типу даних, розробити програму, що забезпечує введення початкових даних з першого файлу даних в память і зберігання їх в масиві, сортування масиву по алфавітному і по числовому параметру.

Украинкский

2015-01-24

562.11 KB

5 чел.

Міністерство  освіти  і  науки України

Вінницький національний технічний університет

Інститут інформаційних технологій та комп’ютерної інженерії

Кафедра ПЗ

Лабораторна робота №3 варіант №9

з дисципліни Алгоритми та структури даних

Виконала: ст. гр. 1 ПІ-13б                            Лілик Л. С.

Перевірив:                                                       Власюк В. Х.

Вінниця, 2013

Тема:  Інтегровані структури даних, запису.

Мета: придбання і закріплення навиків в роботі із записами, в інтеграції даних, в модульному програмуванні.

Завдання:

Для заданої прикладної області розробити опис об'єктів цієї області. Розробити процедури, що реалізують базові операції над цими об'єктами, зокрема:

  1.  текстове введення-виведення (консольний і файловий);
  2.  присвоювання;
  3.  задання константних значень;
  4.  порівняння (не менше 2-х типів).

Підготувати файл початкових даних, що містять не менше 10 значень конкретних об'єктів.

Використовуючи процедури і описи модуля типу даних, розробити програму, що забезпечує введення початкових даних з першого файлу даних в пам'ять і зберігання їх в масиві, сортування масиву по алфавітному і по числовому параметру.

Варіант № 9.

Nз/п

Прикладна область

Атрибути інформації

9

Телефонна станція

номер абонента, прізвище, адреса, наявність того, що блокує, заборгованість

Хід роботи

 

Користувачеві пропонується вивести початкові дані з файлу, або записати свої дані і працювати з ними.  Після завантаження даних (з консолі або файлу) їх можна відсортувати за числовим параметром (в даному випадку – сума заборгованості) або за алфавітом (прізвище абонента).

Складність алгоритму

Складність алгоритму дорівнює O( 5N + 10 ) від Т, де Т - час виконання.


Блок-схема алгоритму




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

// ------ Allh.h ---------------------------------------------------------------------------------------

#ifndef ALLH_H_INCLUDED

#define ALLH_H_INCLUDED

#include "TelephoneEx.h"

#include <iostream>

#include <cstring>

#include "fstream"

using namespace std;

#endif // ALLH_H_INCLUDED

// ------ TelephoneEx.h ---------------------------------------------------------------------------------------

#ifndef TELEPHONEEX_H_INCLUDED

#define TELEPHONEEX_H_INCLUDED

#include "Allh.h"

class TelephoneEx

{

   public:

       long int subNumber;

       char surname[50];

       char adds[100];

       bool blocked;

       int debt;

       TelephoneEx();

       TelephoneEx(long int _subNumber, char *surname, char *adds, bool _blocked, int _debt);

       ~TelephoneEx();

       void Show();

       void Fill();

       bool operator<(TelephoneEx &a)

       {

           return(this->debt<a.debt);

       }

   protected:

   private:

};

#endif // TELEPHONEEX_H_INCLUDED

// ------ TelephoneEx.cpp --------------------------------------------------------------------------------------

#include "Allh.h"

TelephoneEx::TelephoneEx()

{

   //ctor

}

TelephoneEx::TelephoneEx(long int _subNumber, char *surname, char *adds, bool _blocked, int _debt): subNumber(_subNumber), blocked(_blocked), debt(_debt)

{

   //ctor

  strcpy(this->surname, surname);

  strcpy(this->adds, adds);

}

TelephoneEx::~TelephoneEx()

{

   //dtor

}

void TelephoneEx::Show()

{

   cout<<endl;

   cout<<surname<<" - "<<subNumber<<" - "<<adds<<" blocked: "<<blocked<<" debt: "<<debt;

}

void TelephoneEx::Fill()

{

   cout<<"\nPhone number: ";

       cin>>subNumber;

char str[3];

cin.getline(str, 50); // \n

   cout<<"Surname: ";

       cin.getline(surname, 50);

   cout<<"Address: ";

       cin.getline(adds, 100);

   cout<<"Blocked?: ";

       cin>>blocked;

   cout<<"Debt: ";

       cin>>debt;

}

// ------ main.cpp-----------------------------------------------------------------------------------------------

#include "Allh.h"

int MAX_ARRAY=10;

TelephoneEx *Data= new TelephoneEx[MAX_ARRAY];

char _TRUE[] = "true";

char _FALSE[] = "false";

int command=0;

void SortAlph(TelephoneEx *a)

{

   char str[50];

   long int st=0;

   bool bo=false;

   int de=0;

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

     for (int j=0; j<MAX_ARRAY-1; ++j)

      if (strcmp(a[j].surname, a[j+1].surname)>=0)

           {

           strcpy (str, a[j].surname);

           strcpy (a[j].surname, a[j+1].surname);

           strcpy (a[j+1].surname, str);

           strcpy (str, a[j].adds);

           strcpy (a[j].adds, a[j+1].adds);

           strcpy (a[j+1].adds, str);

           st=a[j].subNumber;

           a[j].subNumber=a[j+1].subNumber;

           a[j+1].subNumber=st;

           bo=a[j].blocked;

           a[j].blocked=a[j+1].blocked;

           a[j+1].blocked=bo;

           de=a[j].debt;

           a[j].debt=a[j+1].debt;

           a[j+1].debt=de;

           }

}

void SortDebt(TelephoneEx * &arr) // sorting of the array (improved bubble sort)

{

   bool flag=false;

TelephoneEx *temp  = new TelephoneEx;

while(flag==false)

{

 flag=true;

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

 {

  if(arr[i]<arr[i-1])

  {

   temp[i]=arr[i];

   arr[i]=arr[i-1];

   arr[i-1]=temp[i];

   flag=false;

  }

 }

}

}

int ComList ()  //  the list of commands

{

cout<<"\n\n\t~~~ MAIN MENU ~~~\n";

cout<<"\n - To output existing list of data from file press 1. ";

cout<<"\n - To input list into the file press 2. ";

cout<<"\n - To sort current list by alphabet press 3. ";

cout<<"\n - To sort current list by debt press 4. ";

cout<<"\n - To exit the menu 123.\n ";

   cin>>command;

cout<<"\nYour command is "<<command<<endl;

return command;

}

void MenuExit()

{

cout<<"\n\nBack to the MAIN MENU. Press any key...\n";

 //  getchar();

}

//void OutputFromFile(TelephoneEx *Data, int MAX_ARRAY);

void InputInFile(TelephoneEx *Data, int MAX_ARRAY)

{

   cout<<"Input number of records: ";

   cin>>MAX_ARRAY;

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

       Data[i].Fill();

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

   Data[i].Show();

   FILE *fp;

   fp=fopen("DataBaseInput.txt", "w");

   for (int i=0; i<MAX_ARRAY; ++i)    //  filling file

   {

       char str[6];

       if(Data[i].blocked) strcpy(str, "true");

       else strcpy(str, "false");

       fprintf (fp, "%s\n%ld\n%s\n%s\n%i\n\n", Data[i].surname, Data[i].subNumber, Data[i].adds, str, Data[i].debt);

   }

   cout<<"\n\n\tIn file: ";

fclose(fp);

ifstream inp("DataBaseInput.txt");

TelephoneEx *D= Data;

int k=0;

while(!inp.eof()&&k<MAX_ARRAY)

{

 char buf[7];

 inp.getline(D[k].surname,50);

 inp>>D[k].subNumber;

 inp.getline(buf,7);

 inp.getline(D[k].adds,100);

 inp.getline(buf,7);

 if(strcmp(buf, _TRUE)==0) D[k].blocked=true;

       else  if(strcmp(buf, _FALSE)==0)D[k].blocked=false;

 inp>>D[k].debt;

 inp.getline(buf,7);

 inp.getline(buf,7);

 ++k;

}

inp.close();

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

       D[i].Show();

}

void OutputFromFile(TelephoneEx *Data, int MAX_ARRAY)

{

ifstream inp("DataBaseOutput.txt");

TelephoneEx *D= Data;

int k=0;

while(!inp.eof()&&k<MAX_ARRAY)

{

 char buf[7];

 inp.getline(D[k].surname,50);

 inp>>D[k].subNumber;

 inp.getline(buf,7);

 inp.getline(D[k].adds,100);

 inp.getline(buf,7);

 if(strcmp(buf, _TRUE)==0) D[k].blocked=true;

       else  if(strcmp(buf, _FALSE)==0)D[k].blocked=false;

 inp>>D[k].debt;

 inp.getline(buf,7);

 inp.getline(buf,7);

 ++k;

}

inp.close();

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

       D[i].Show();

}

int main()

{

   ComList();

while (command != 123)  // while (command != (exit condition) )

{

switch(command)

{

case 1:

 {

 cout<<"\n\t Output existing list of data from file\n";

                    OutputFromFile(Data, MAX_ARRAY);

    MenuExit(); break;    }

case 2:

 {

          cout<<"\n\t Input list into the file\n";

                    InputInFile(Data, MAX_ARRAY);

    MenuExit(); break;

 }

case 3:

 {

 cout<<"\n\t Sorted current list by alphabet:\n";

                    SortAlph(Data);

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

                         Data[i].Show();

    MenuExit(); break;

 }

 case 4:

 {

 cout<<"\n\t Sorted current list by debt:\n";

                    SortDebt(Data);

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

                        Data[i].Show();

    MenuExit(); break;

 }

default: cout<<"\nERROR! Your command is wrong. Please try again. \nPress any key: ";

               // getchar();

}

ComList();

   }

   return 0;

}


Результат виконання

Висновки

Придбали і закріпили навики в роботі із записами, в інтеграції даних, в модульному програмуванні. В результаті виконання лабораторної роботи отримано програму, що дозволяє працювати з конкретними даними з певної області, сортувати їх, виконувати серіалізацію та десеріалізацію даних.


 

А также другие работы, которые могут Вас заинтересовать

42898. The United States of America 52.88 KB
  The United States of America (also called the United States, the U.S., the USA, America, and the States) is a federal constitutional republic comprising fifty states and a federal district. The country is situated mostly in central North America, where its forty-eight contiguous states and Washington, D.C., the capital district, lie between the Pacific and Atlantic Oceans, bordered by Canada to the north and Mexico to the south. The state of Alaska is in the northwest of the continent, with Canada to the east and Russia to the west, across the Bering Strait.
42899. УПРАВЛЕНИЕ ПЕРСОНАЛОМ 46.06 KB
  Курсовая работа является самостоятельной научной работой студента и должна отражать приобретенные им знания и результаты исследования по общим и специальным разделам управления персоналом в рамках выбранной темы. Тематика курсового проектирования определяется программой дисциплины «Управление персоналом».
42900. Графіки в економічному моделюванні 140.48 KB
  В умовах ринкової системи управління виробничою і збутовою діяльністю підприємств і фірм в основі прийняття господарських рішень лежить ринкова інформація, а обгрунтованість рішень перевіряється ринком у ході реалізації товарів і послуг. При такому підході початковим пунктом усього циклу підприємницької діяльності стає вивчення споживчого попиту. Розглянемо деякі питання моделювання попиту і споживання.
42901. Бухгалтерский учет расчетов с бюджетом и внебюджетными фондами в ООО «Золотой Флок» 12.09 MB
  Еще Ф. Аквинский, известный церковный деятель и философ XIII в. высказывался о проблемах установления и сбора налогов следующим образом: он определял налоги, как «дозволенную форму грабежа». Речь идет о том, что взимание налогов всегда ущемляет чьи-то интересы и в определенной степени отягощает социальное положение.
42902. Комплексный анализ проблем оплаты труда на предприятии питания и предложение направлений совершенствования оплаты труда на предприятии 67.08 KB
  Формы и системы оплаты труда. Фонд оплаты труда и его структура. Направления совершенствования системы оплаты труда на предприятии. Администрация предприятий питания самостоятельно выбирает и применяет различные системы оплаты труда работников.
42903. Розробка блоку зв’язку з електроавтоматикою верстата 16Б16. Пристрій управління шпінделем 875.86 KB
  Числове програмне керування (ЧПК) (англ. Computer numerical control) - комп'ютеризована система керування, яка зчитує командні інструкції спеціалізованої мови програмування (наприклад, G-код) і керує приводами метало-, дерево- чи пластмасообробних верстатів та верстатним оснащенням.
42904. Предпримемательство: эволюционный подход 33.65 MB
  Предпринимательство есть способ хозяйствования, который в результате многовековой эволюции утвердился в экономике всех развитых стран. Первоначально предпринимателями называли предприимчивых людей, действующих на рынке, или просто людей энергичных, азартных, склонных к рискованным операциям. В дальнейшем к предпринимательству стали относить любую деятельность, направленную на увеличение прибыли и не запрещённую законом. Однако возникновение предпринимательства как оформившегося устойчивого явления относят к XVII веку.
42905. Сестринский процесс при ожирении 186.5 KB
  Эта проблема касается всех слоев населения независимо от социальной и профессиональной принадлежности, возраста, места проживания и пола. Так, в странах Западной Европы избыточную массу тела имеет от 10 до 20% мужчин и от 20 до 25% женщин. В некоторых регионах Восточной Европы доля людей, страдающих ожирением, достигла 35%. В России в среднем 30% трудоспособного населения имеют ожирение и 25% - избыточную массу тела.
42906. Разработка программы для реализации модели боя типа «Б» с учетом корректировки огня 66.8 KB
  Исходные данные В качестве исходных данных задачи принимаются следующие величины: N1 – численность наших войск на момент начала бояN2 – численность войск противника на момент начала бояn1 – численность при которой наши подразделения выходят из бояn2 – численность при которой подразделения противника выходят из бояλ1 – скорострельность наших подразделенийλ2 – скорострельность подразделений противникаP1 – вероятность поражения БЕ противника при попаданииP2 – вероятность поражения нашей БЕ при попаданииK1 – коэффициент корректировки огня наших...