close

Вход

Забыли?

вход по аккаунту

?

Шатковський М. Лаб.№8

код для вставкиСкачать
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ
"КИЇВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ"
ФІЗИКО-ТЕХНІЧНИЙ ІНСТИТУТ
ЛАБОРАТОРНА РОБОТА №8
з предмету
"Технологія програмування 1"
Виконав студент групи ФБ-11
Шатковський Михайло
(Залікова книжка №17)
Київ - 2011
Оглавление
Умова задачі2
Варіант 172
Блок-схема алгоритму3
Таблиця з переліком змінних та їх типів, користувацьких типів даних5
Змінні та їх типи5
Опис структури5
Проектні рішення6
Програмний код7
head.h7
func.cpp7
main.cpp9
Скріншоти10
Умова задачі
Варіант 17
Використовувати (лінійні) односпрямовані списки без заголовної ланки (мал. а) або з заголовною ланкою (мал. б) при наступному їхньому описі
Параметр L позначає список, а параметри Е, Е1 - дані типу ТЕ, до яких можна застосовувати операції присвоювання і перевірки на рівність. {ТЕ = double}
Визначити функції, що поєднують два упорядкованих за зростанням списки L1 і L2 (ТЕ = double) в одному упорядкованому за зростанням списку;
а) побудувавши новий список L;
б) змінюючи відповідним чином посилання в L1 і L2 і привласнивши отриманий список параметрові L1.
в) результат записується в окремий файл.
Блок-схема алгоритму
Таблиця з переліком змінних та їх типів, користувацьких типів даних
Змінні та їх типи
ЗміннаТипПризначенняL1TEСтворення першого списку. Використовується для занесення елементів у список.L2TEСтворення другого списку. Використовується для занесення елементів у список.xdoubleЗміння для зберігання значення елемента списку при виконанні функції заповнення списку з клавіатуриedoubleВхідний параметр функції для зберігання значення елемента спискуlTEВхідний параметр функції. Вказівник на елемент спискуaTEВхідний та вихідний параметр функції. Вказівник на елемент спискуbTEВхідний параметр функції. Вказівник на елемент списку сTEЛокальний вказівник на елемент списку для виконання дій методу "бульбашки"tTEТимчасовий локальний вказівник на елемент списку pintЛокальна змінна для тимчасового зберігання значення параметру циклуscharВхідний параметр функції для зберігання назви вихідного файлу
Опис структури
struct TE {
TE* n; //елемент списку
double v; //вказівник на наступний елемент
};
Проектні рішення
1. Використання методу роздільної компіляції та модульного принципу програмування для зручності написання програми, внесення коректив і змін у програмний код, а також простішого пошуку частин та елементів коду.
2. Створення користувацьких функцій для всіх дій програми для зручності написання програми, внесення коректив і змін у програмний код, а також простішого пошуку частин та елементів коду
a) Користувацька функція для створення списку
b) Користувацька функція для занесення елементів у список зі стандартного потоку введення
c) Користувацька функція для виведення елементів списку на екран
d) Користувацька функція для об'єднання елементів двох списків в один список
e) Користувацька функція для сортування елементів списку в порядку зростання
f) Користувацька функція для виведення елементів списку у файл
Програмний код
head.h
using namespace std;
struct TE {
TE* n; //елемент списку
double v; //вказівник на наступний елемент
};
//Прототипи користувацьких функцій
TE* create(); //Створення списку
bool addelement(TE* l, double e); //Додавання елементів у список
void listout(TE* l); //Виведення на екран
TE* merge(TE* a, TE* b); //Об'єднання списків
TE* sort(TE* a); //Сортування списків
void listinfile(TE*, char* s); //Запис у файл
func.cpp #include "stdafx.h"
#include <iostream>
#include <fstream>
#include "head.h"
using namespace std;
TE* create() {
TE* n = new TE;
n->v=0;
n->n=0;
return n;
}
bool addelement (TE* l, double e) {
TE* a=l;
while (a->n!=0) { if(a->n->v==e) return false; a=a->n;}
TE* n = new TE;
a->n=n;
n->v=e;
n->n=0;
return true;
}
void listout (TE* l)
{
TE* a=l;
while (a->n!=0) { cout<<(a->n->v)<<' '; a=a->n;
}
} TE* merge (TE* a, TE* b) {
TE* c=create();
TE* t=a;
while (t->n!=0) {
addelement(c,t->n->v); t=t->n;
}
t=b;
while (t->n!=0) {
addelement(c,t->n->v); t=t->n;
}
return c;
}
void listinfile (TE* l, char* s) { ofstream out(s);
if(!out) {cerr<<"Could not open the file!";}
TE* t=l;
while (t->n!=0) {
out<<(t->n->v)<<' ';
t=t->n;
}
out.close();
cout<<endl;
cout<<"Sending List to File Done!"<<endl;
cout<<"Successfully Ending of the Program!"<<endl;
}
TE* sort (TE* a) {
TE*t=a;
TE*b=0; TE*c=0;
if (a==NULL) return a;
int p=1;
c = new TE;
while (p) {
p=0;
b=a;
t=b->n; while (t!=0) {
if (double(b->v)>double(t->v))
{
c->v = b->v;
b->v = t->v;
t->v = c->v;
p++;
}
b=t;
t=t->n;
}
}
return a;
}
main.cpp
#include "stdafx.h"
#include <iostream>
#include "head.h"
using namespace std;
int main()
{
TE* L1=create();
TE* L2=create();
double x=1;
while (x!=0) {
cout<<"L1: input element "<<"(input 0 to end the list):";
cin>>x;
addelement(L1,x);
}
cout<<endl;
x=1;
while (x!=0) {
cout<<"L2: input element "<<"(input 0 to end the list):";
cin>>x;
addelement(L2,x);
} cout<<endl;
cout<<"L1:"<<endl;
L1=sort(L1);
listout(L1);
cout<<endl<<endl;
cout<<"L2:"<<endl;
L2=sort(L2);
listout(L2);
cout<<endl<<endl;
cout<<"L1 and L2 in one list:"<<endl;
L1=merge(L1,L2);
listout(L1);
cout<<endl<<endl;
cout<<"Sorted:"<<endl;
L1=sort(L1);
listout(L1);
listinfile(L1, "outlist.out");
cin.get();
cin.get();
return 0;
}
Скріншоти
Документ
Категория
Рефераты
Просмотров
51
Размер файла
262 Кб
Теги
лаб, шатковський
1/--страниц
Пожаловаться на содержимое документа