Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
ІКТА
Факультет:
КН
Кафедра:
Не вказано

Інформація про роботу

Рік:
2011
Тип роботи:
Розрахунково - графічна робота
Предмет:
Об’єктно-орієнтоване програмування
Група:
КІ
Варіант:
11

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки, молоді та спорту України Національний університет «Львівська політехніка»  РОЗРАХУНКОВО-ГРАФІЧНА РОБОТА з дисципліни «Об’єктно-орієнтоване програмування, частина 2» Керівник лабораторних занять: ст. викладач Кузьо М.М. Варіант 11 Завдання 1.Згідно вибраного номеру задачі, вказаного нижче, написати програму реалізації перевантажених функцій, вибравши відповідну їх групу: a) int func(int* arr, int length1); double func(double* arr, int length1); Функція func(....) : перевіряє чи елементи масиву розташовані по спаданню. Головна програма повинна містити також тестову перевірку програми виконання поставленої задачі а також ввід значень індексів розмірності двовимірного масиву, режим багаторазового вводу вхідної послідовності, вводу всіх можливих комбінації вхідної послідовності, за якої забезпечується як виконання, так і не виконання відповідної умови задачі. Результати виконання кожної тестової перевірки програми повинні відображатись на екрані монітора, а також записані в текстовий файл, тобто програма повинна забезпечувати: - запис даних у текстовий файл ; - читання даних з текстового файлу. Запис даних у файл здійснюється у вигляді структурованої таблиці, з використанням засобів форматування. Послідуючі записи додаються у файл.Не менше двох записів у файл повинно бути здійснено. Слід передбачати незалежний багаторазовий вибір користувачем режиму роботи: запис чи читання даних при роботі з текстовим файлом. Структура даних, що записується у файл наступна: перше поле – поле запису прізвища; друге поле – поле запису імені; третє поле – поле запису номера групи та номера завдання; четверте поле – поле запису результату тестової перевірки, що включає задану вхідну послідовність даних та вихідну, за необхідності, або, відповідний до умови задачі, результат обчислення. Слід також передбачити обробку виключних ситуацій Порядок виконання: 1.Реалізовано програму main.cpp #include<iostream> #include<fstream> #include<conio.h> using namespace std; int func(int**arr,int lenght1,int lenght2) { int b; for(int k=0;k+1<lenght1;k++) for(int j=0;j+1<lenght2;j++) { if(arr[k][j]<=arr[k+1][j+1]){ b=1; } else{ b=0; } } return b; } double func(double**arr,int lenght1,int lenght2) { double t; for(int k=0;k+1<lenght1;k++) for(int j=0;j+1<lenght2;j++) { if(arr[k][j]<=arr[k+1][j+1]){ t=1; } else{ t=0; } } return t; } void main() { int choice, i, j=0; int lenght1,lenght2,change; int** arr_l; double** arr_f; char *name; char *prizvuwche; char *grupa; char *res; char *res1; name= new char[100]; prizvuwche=new char[100]; grupa=new char[100]; res=new char[100]; res1=new char[100]; while(j==0) { cout<<"\nIf you want to add the information to the File\t\tPRESS \"1\"\n\nIf you want to show the information at the screen\tPRESS \"2\"\n\nIf you want to out \t\t\t\t\tPRESS \"0\"\n\n"; change=getch(); if(change=='1'){ ofstream fout("File.txt",ios::app); cout<<"Enter your name, please!\n\n"; cin>>name; cout<<"Enter your prizvuwche, please!\n\n"; cin>>prizvuwche; cout<<"Enter your grupu, please!\n\n"; cin>>grupa; cout<<"Enter size of array, please!\t"; cin>>lenght1>>lenght2; arr_l=new int* [lenght1]; for (int i=0;i<lenght1;i++) arr_l[i]=new int [lenght2]; arr_f=new double* [lenght1]; for (int i=0;i<lenght1;i++) arr_f[i]=new double [lenght2]; cout<<"\nEnter int array, please!\n"; for(i=0; i<lenght1; i++) for(int j=0;j<lenght2;j++) { cout<<"arr_l["<<i<<"]["<<j<<"] "; cin>>arr_l[i][j]; } for(i=0; i<lenght1; i++){ for(int j=0;j<lenght2;j++){ cout<<arr_l[i][j]<<" "; } cout<<endl; } int q = func(arr_l,lenght1,lenght2); if(q == 1){ cout<<"Danuy masuv ne spadae"; res=" -----> Masuv Ne Spadae"; } else{ cout<<"Masuv Spadae"; res=" ----> Masuv spadae"; } cout<<"\nEnter double array, please!\n"; for(i=0; i<lenght1; i++) for(int j=0;j<lenght2;j++) { cout<<"arr_f["<<i<<"]["<<j<<"] "; cin>>arr_f[i][j]; } for(i=0; i<lenght1; i++){ for(int j=0;j<lenght2;j++){ cout<<arr_f[i][j]<<" "; } cout<<endl; } int z = func(arr_l,lenght1,lenght2); if(z == 0){ cout<<"Danuy Masuv Ne Spadae"; res1=" -----> Masuv Ne Spadae"; } else{ cout<<"Danuy masuv spadae"; res1=" ----> Masuv spadae"; } fstream outfile("File.txt",ios::app); if( !outfile){ cout << "Файл не відкритий. \n"; } fout.width(25); fout <<name<<"\t"; fout.width(25); fout<<prizvuwche<<"\t"; fout.width(30); fout<<grupa<<"\t"; fout.width(50); for(i=0; i<lenght1; i++) for(int j=0;j<lenght2;j++) fout<<arr_l[i][j]; fout.width(50); fout<<res<<"\t"; fout.width(50); for(i=0; i<lenght1; i++) for(int j=0;j<lenght2;j++) fout<<arr_f[i][j]; fout.width(50); fout<<res1<<"\t\n"; fout.close(); cout<<"\nThe information was added to the File\n\n"; } if(change=='2') { ofstream fout("File.txt",ios::app); system ("cls"); ifstream fin("File.txt"); cout<<"Content\n\n"<<"File.txt"<<"\t\n\n\n"; char ch; while(fin.get(ch)) cout<<ch; fin.close(); } if(change=='0') { j=1; } } } 2.Вихідні дані:  Масив типу double  Дані записалися у файл File.txt  Завдання 2. Створити оголошення класів згідно варіанту. Розробити програму-драйвер, яка продемонструє роботу похідних класів. 5 Базовий клас: class Resource { protected: int id; bool isUsed; char* title; char* author; public: Resource(int number) ; virtual ~ Resource() ; virtual bool TakeResource (); virtual bool GiveBackResource(); virtual void PrintInfo(); virtual bool Status() {return isUsed;} }; Resource() – конструктор базового класу. Ініціалізує змінну id та isUsed. Виділяє пам’ять під title та author. ~ Resource() – деструктор базового класу. TakeResource() – встановлює змінну isUsed=1 (виводить на екран повідомлення). GiveBackResource() – встановлює змінну isUsed=0 (виводить на екран повідомлення). PrintInfo () – виводить інформацію про ресурс. Status() – повертає стан ресурсу. Похідний клас Book. Атрибути: int pages; int year; Похідний клас CD. Атрибути: int cdType; Визначити конструктор та деструктор (!вивільняти всі ресурси!) класу. В основній програмі створити декілька ресурсів та продемонструвати процес їхнього використання.   Порядок виконання: 1.Реалізовано програму 6.cpp #include "Resource.h" void main() { int a; CD NFS(1,"Ukrainian songs","Pikardiska tertsia",4); NFS.PrintInfo(); NFS.TakeResource(); NFS.Status(); NFS.GiveBackResource(); NFS.Status(); cout << "\n\n"; Book Stys(2,"Vasyl Stus","A-BA-BA-GA-LA-MA-GA",756,2001); Stys.PrintInfo(); Stys.TakeResource(); Stys.Status(); Stys.GiveBackResource(); NFS.Status(); cin >> a; } Resource.h #include <iostream> using namespace std; class Resource { protected: int id; bool isUsed; char* title; char* author; public: Resource(int num,char* t, char* a) { id = num; isUsed = 0; title = new char; author = new char; title = t; author = a; } virtual bool TakeResource(); virtual bool GiveBackResource(); virtual void PrintInfo(); virtual bool Status() { if (isUsed) cout << "\nUsed"; else cout << "\nNot Used"; return isUsed; } }; class Book:public Resource { protected: int pages; int year; public: Book(int num,char* t, char* a, int p, int y):Resource(num, t, a) { pages = p; year = y; } void PrintInfo(); }; class CD: public Resource { protected: int cdType; public: CD(int num,char* t, char* a, int type):Resource(num,t,a) { cdType = type; } void PrintInfo(); }; Resource.cpp #include "Resource.h" /*Methods of Resource class */ bool Resource::TakeResource() { isUsed = 1; cout << "Take Resource"; return 1; } bool Resource::GiveBackResource() { isUsed = 0; cout << "\nGive Back Resource"; return 1; } void Resource::PrintInfo() { cout << "\nID: " << id << endl; cout << "Title: " << title << endl; cout << "Author: " << author << endl; } /*End methods of resource class*/ /*Method of books class */ void Book::PrintInfo() { cout << "\nID: " << id << endl; cout << "Title: " << title << endl; cout << "Author: " << author << endl; cout << "Pages: " << pages << endl; cout << "Year: " << year << endl; } /*End methods of books class*/ /*Method of CD class*/ void CD::PrintInfo() { cout << "\nID: " << id << endl; cout << "Title: " << title << endl; cout << "Author: " << author << endl; cout << "cdType: " << cdType << endl; } /*End method of CD class*/ 2.Вихідні дані:  Завдання 3. Побудувати програму розв’язання задачі, що вказане нижче, з використанням власного класу контейнера масиву та дружнього класу ітератора. Контейнерний клас повинен містити дані масиву та необхідні методи контейнерних класів. Слід використати основні методи контейнерних класів: begin()- повернення ітератора до початкового елементу масиву контейнера, end()- повернення ітератора на позицію останнього елементу контейнера, size()-повернення кількості елементів масиву контейнера Клас ітераторів повинен містити основні методи(функції) роботи ітераторів, такі як: pd++, ++pd - інкременти, переміщення ітератора по всім елементам контейнера, *pd- розіменування ітератора,тобто повернення або присвоєння значення елемента контейнера,а також інші функії, такі як присвоєння одного ітератора іншому (pd1= pd2) або порівняння двох ітераторів(pd1== pd2). Перевірити чи елементи двовимірного масиву розташовані по спаданню. Порядок виконання: 1.Реалізовано програму main.cpp #include <iostream> #include <vector> #include <algorithm> #include <time.h> using namespace std; void main() { int n,m,N,t; cout<<"Vvedit' rozmir matruci:\n"; cin>>n>>m; N=m*n; vector<char> v(N); //створення обєкту типу vector vector<char>::iterator vv;//оголошення ітератора for(int i = 0; i < v.size(); i++) { cout<<"Vvedit' v["<<i+1<<"]= "; cin>>v[i]; } for(int i=0; i<N; i++) { cout<<v[i]<<"\t"; if((i+1)%n==0) { cout<<endl; } } for(int k=0;k<N-1;k++) if(v[k]<=v[k+1]) t=1; else t=0; if(t == 1) cout<<"Elementu matruci roztawovani Ne po-spadann`u\n\a\n\n\n"; else cout<<"Elementu matruci roztawovani po-spadann`u\n\a\n\n\n"; } 2.Вихідні дані:  Реалізовано програму main2.cpp #include <iostream> #include <string> #include <fstream> #include <vector> using namespace std; class Stack{ char items[40]; int sp; public: friend class StackIter; Stack() { sp = 0; } void push() { int n,m,N; cout<<"Vvedit' rozmir matruci:\n"; cin>>n>>m; N=m*n; for(; sp < N; sp++) { cout<<"Vvedit' v["<<sp+1<<"]= "; cin>>items[sp]; } for(int i=0; i<N; i++) { cout<<items[i]<<"\t"; if((i+1)%n==0) { cout<<endl; } } } int pop() { return items[sp--]; } bool isEmpty() { return (sp == - 1); } }; class StackIter{ const Stack &stk; int index; public: StackIter(const Stack &s): stk(s) { index = 0; } void operator++() { index++; } bool operator()() { return index != stk.sp + 1; } int operator *() { return stk.items[index]; } }; bool operator == (const Stack &l, const Stack &r) { StackIter itl(l), itr(r); for (; itl(); ++itl, ++itr) if (*itl != *itr) break; return !itl() && !itr(); } void main() { Stack s; s.push(); int z=0; int r=-1; StackIter sp(s); z=*sp; //for(;sp();++sp) while(sp()) { ++sp; if(z<*sp){ z=*sp; r=1; } else r=-1; break; } if(r==1) cout<<"\n Elementu masuvu Ne po-spadannu\n\n\n\a"; else cout<<"\n Elementu masuvu po-spadannu\n\n\n\n\a"; } Вихідні дані: 
Антиботан аватар за замовчуванням

23.01.2013 19:01-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!