Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OTP_labs-NEW2.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
787.97 Кб
Скачать

7.2 Порядок виконання роботи

При виконанні лабораторної роботи дотримуйтесь рекомендованого порядку.

    1. Ознайомтесь з прикладом (листінг 7.1), наведеним у підрозділі 7.3.

    2. Отримайте від викладача варіант завдання.

    3. Розробіть схему алгоритму роботи програми.

    4. Запишіть програму на мові програмування С++.

    5. Створіть новий проект Visual Studio .NET” та введіть початковий код програми.

    6. Проведіть її компіляцію з використанням середовища “Visual Studio .NET”.

    7. Виправить синтаксичні та логічні помилки. Та повторіть компіляцію.

    8. Запустить на виконання отриманий код.

    9. Проведіть тестування для різних початкових даних.

    10. Запишіть результати роботи програми та проконтролюйте їх коректність.

7.3 Приклад

Завдання. Реалізувати двохзв’язний кільцевий список для цілих чисел: функції вставки, видалення, пошуку необхідного числа у списку.

#include <stdio.h> //бібліотека функцій стандартного вводу/виводу

#include <conio.h> //бібліотека функцій консольного вводу/виводу

using namespace System;

struct list{

int data;

list* prev;

list* next;

}

typedef plist list*;

void init(plist spisok);

void insert(plist spisok,int pos,int data);

void remove(plist spisok,int pos);

void find(plist spisok,int data);

void print(plist spisok);

void destroy(plist spisok);

int _tmain(void)

{

plist spisok;

init(spisok);

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

insert(spisok,0,i);

print(spisok);

remove(spisok,2);

print(spisok);

int pos=find(spisok,1);

printf("Position: %i",pos);

pos=find(spisok,2);

printf("Position: %i",pos);

pos=find(spisok,3);

printf("Position: %i",pos);

getch();

}

void init(plist spisok){

spisok=new list;

spisok->data=0;

spisok->prev=spisok;

spisok->next=spisok;

}

void insert(plist spisok,int pos,int data){

if(spisok->data>pos){

plist Prev=spisok;

for(int i=0;i<pos;i++) Prev=Prev->next;

plist Next=Prev->next;

plist New=new list;

New->data=data;

New->prev=Prev;

New->next=Next;

Prev->next=New;

Next->prev=New;

spisok->data=spisok->data+1;

}

if(spisok->data==0){

plist New=new list;

New->data=0;

New->prev=New;

New->next=New;

spisok->next=New;

spisok->data=1;

}

}

void remove(plist spisok,int pos){

if(spisok->data>pos){

plist Prev=spisok;

for(int i=0;i<pos;i++) Prev=Prev->next;

plist Old=Prev->next;

plist Next=Old->next;

Prev->next=Next;

Next->prev=Prev;

delete Old;

}}

void find(plist spisok,int data){

if(spisok->data>0){

plist Prev=spisok->next;

int i=0;

while((i<spisok->data)&&(Prev->data!=data)) i++;

return i;

}

void destroy(plist spisok){

if(spisok->data>0){

plist Prev=spisok->next;

plist Next;

int i=0;

while(i<spisok->data) {

Next=Prev->next;

delete Prev;

Prev=Next;

}

}

delete spisok;

}

void print(plist spisok){

if(spisok->data>0){

plist Prev=spisok->next;

int i=0;

while(i<spisok->data) {

printf("Pos: &i, Data: %i",i,Prev->data);

Prev=Prev->next;}}}

Листінг 7.1 – Приклад виконання індивідуального завдання

7.4 Зміст звіту

Звіт з лабораторної роботи повинен містити:

    • мету роботи;

    • завдання на виконання роботи;

    • схему алгоритму роботи програми;

    • текст програми;

    • результати роботи програми для різних початкових даних;

    • висновки.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]