Форум программистов, компьютерный форум CyberForum.ru

"Классы и объекты - динамические структуры" - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ поиск исключения http://www.cyberforum.ru/cpp-beginners/thread579724.html
Нужно дописать программу, чтобы находилось исключение когда вводятся буквы Найти исключения для функции C=A/B // #include "stdafx.h" #include <conio.h> #include <locale.h> #include <ctype.h> int _tmain(int argc, _TCHAR* argv)
C++ Δ2 – процесс Эйткена и метод Вегстейна Всем здравствуйте.Делаю программу на С++, очень давно очень не юзал. Делаю прогу по Δ2 – процесс Эйткена и метод Вегстейна,но конечные результаты совсем разные.Делаю по книге Вержбицкий,Численные методы Линейная алгебра 2002г. (с.189 и с.194) Даны следующие алгоритмы: Функцию φ(x ввел заранее Δ2 – алгоритм Эйткена Шаг 0. Ввод x0 (начального приближения), φ(x) (исходной функции), q... http://www.cyberforum.ru/cpp-beginners/thread579722.html
Компонент Chart C++
Я вообще не знаком с этим компонентом, как сделать чтобы по нажатию на кнопку генерировался новый график в окне Chart ? Заранее спасибо :)
Удобная функция или класс для получения MD5 C++
Привет! Не подскажите удобную протестированную функцию или класс для получения md5 строки? Искал в boost, но что-то пока не обнаружил. Спасибо.
C++ Исправить поиск выхода из лабиринта http://www.cyberforum.ru/cpp-beginners/thread579663.html
Есть программа поиска выхода из лабиринта: #include <stdio.h> #include <io.h> #include <iostream> using namespace std; #define MEN 2 #define LF 10 #define SPACE 32
C++ память затраченная на работу алгоритма Здравствуите, подскажите пожалуйста код, с помощью которого в Windows можно узнать, сколько оперативной памяти затрачено на выполнение программы, в моем случае алгоритма. #include <iostream> #include<stdio.h> #include<time.h> #include<stdlib.h> using namespace std; подробнее

Показать сообщение отдельно
stepan123
0 / 0 / 0
Регистрация: 03.05.2012
Сообщений: 9

"Классы и объекты - динамические структуры" - C++

20.05.2012, 06:14. Просмотров 1074. Ответов 0
Метки (Все метки)

Цель: Разработка простейших классов на примере разработки моделей динамических информационных структур (одно и двунаправленных списков).


Постановка задачи
Написать программу, в которой создаются динамические структуры, и выполнить их обработку в соответствии со своим вариантом.

Для каждого вариант разработать следующие методы:
1. Конструктор пустого списка.
2. Добавление элемента в список (в соответствии со своим вариантом).
3. Удаление элемента из списка (в соответствии со своим вариантом).
4. Печать списка.
5. Запись списка в файл.
6. Восстановление списка из файла.
7. Деструктор списка (уничтожение).


Порядок выполнения работы

1. Разработать описание класса, выделить публичные и приватные поля данных. Разработать интерфейс класса – прототипы методов.
2. Написать функцию для создания списка. Функция может создавать пустой список, а затем добавлять в него элементы.
3. Написать функцию для печати списка. Функция должна предусматривать вывод сообщения, если список пустой.
4. Написать функции для удаления и добавления элементов списка в соответствии со своим вариантом.
5. Выполнить изменения в списке и печать списка после каждого изменения.
6. Написать функцию для записи списка в файл.
7. Написать функцию для уничтожения списка.
8. Записать список в файл, уничтожить его и выполнить печать (при печати должно быть выдано сообщение "Список пустой").
9. Написать функцию для восстановления списка из файла.
10. Восстановить список и распечатать его.
11. Уничтожить список.

Задание:
Записи в линейном списке содержат ключевое поле типа int. Сформировать однонаправленный список. Удалить из него элемент с заданным номером, добавить К элементов, начиная с заданного номера;

вот моя лаба готовая её нужно переделать в виде класса
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
include <string.h>
#include<iostream>
#include <conio.h>
using namespace std;
 // Элемент данных 
 struct Element 
 { 
  // Данные 
  int data;  
  // Адрес следующего элемента списка 
  Element * Next; 
 }; 
 // Односвязный список 
 class List 
 { // Адрес головного элемента списка 
  Element * Head; 
  Element * Prev;     // указатель на последний элемент списка
  // Количество элементов списка 
  int Count; 
  public: 
  // Конструктор 
  List(); 
  // Добавление элемента в список 
  void Add(char data); 
  void PasteElement(int data, int position);
  
  void DelElement(int position);
  // Распечатка содержимого списка 
  void Print(); 
 }; 
 List::List() 
 { 
  Head = NULL;
  Prev = NULL; 
  Count = 0; 
 } 
 
 void List::Add(char data) 
 { 
  // создание нового элемента 
  Element * temp = new Element; 
  // заполнение данными 
  if(Head == NULL)              //если это первый элемент, то
    {
        temp->Next = NULL;          
        Head = temp;                //"голова" указывает на созданный элемент
    }
    else                            //если не первый, то
        Prev->Next = temp;          //предыдущий указывает на него
 
    temp->data = data;              //копируем данные
    temp->Next = NULL;          //указываем на хвост, так как этот элемент последний
    Prev = temp;
  Count++; 
 } 
 void List::Print() 
 { 
  // запоминаем адрес головного элемента 
  Element * temp = Head; 
  // Пока еще есть элементы 
  while(temp != 0) 
  { 
  // Выводим данные 
  cout << temp->data<< " "; 
  // Переходим на следующий элемент 
  temp = temp->Next; 
  } 
  cout << endl; 
 } 
 
 void List::PasteElement(int data, int position)
{
   Element *Temp = Head;
    Element *nextEl;
    Element *nElem = new Element;       //создаем временный элемент
    if ((position>Count) || (position<1))       //если указанный элемент не существует, то
        cout << "Takogo elementa net" << endl;  //выводим предупреждение на экран
    else
    {
        for(int i=1; i!=position; i++)  //иначе, переходим до этого элемента
        {    
            Temp = Temp->Next;
        }
        nElem->data=data;
        if (Temp == Head) //если добавляем после первого элемента
        {
            if (Count == 1) //если этот элемент единственный
            {
                Temp->Next=nElem;
                nElem->Next=NULL;
                Prev = nElem;
            }
            else //если он первый, но не единственный
            {
                nextEl = Temp->Next;
                Temp->Next = nElem;
                nElem->Next = nextEl; 
            }
            Count++;
            cout << "Element " << position << " dobavlen" << endl;
            return;
        }
 
        if (Temp->Next == NULL)         //если добавляем после последнего элемента
        {   
            Temp->Next=nElem;
            nElem->Next=NULL;
            Prev=nElem;
            Count++;
            cout << "Element " << position << " dobavlen" << endl;
            return;
        }   
        if (Temp->Next != NULL)     //если добавляем в центр списка
        {   
            nextEl = Temp->Next;
            Temp->Next = nElem;
            nElem->Next = nextEl;
            Count++;
            cout << "Element " << position << " dobavlen" << endl;
            return;
        }           
    }
};
 
void List::DelElement(int position)
{
    Element *Temp=Head;
    Element *pred;      //создаем временный элемент
    if ((position>Count) || (position<1))       //если указанный элемент не существует, то
        cout << "Takogo elementa net" << endl;  //выводим предупреждение на экран
    else
    {
        for(int i=1; i!=position; i++)  //иначе, переходим до этого элемента
        {
            pred=Temp;    
            Temp = Temp->Next;
        }
        
        if (Temp == Head) //если удаляем первый элемент
        {
            if (Count == 1) //если этот элемент единственный
            {
                Head = NULL;
                Prev = NULL;
            }
            else //если он первый, но не единственный
            {
                Head = Temp->Next; 
            }
 
            delete Temp;
            Count--;
 
            cout << "Element " << position << " udalen" << endl;
            return;
        }
 
        if (Temp->Next == NULL)     //если удаляем последний элемент
        {   
            pred->Next=NULL;   
            Prev=pred;
            delete Temp;
            Count--;
            cout << "Element " << position << " udalen" << endl;
            return;
        }       
        
        if (Temp->Next != NULL) //если элемент находится в центре списка
        {   pred->Next=Temp->Next;
            delete Temp;
            Count--;
            cout << "Element " << position << " udalen" << endl;
            return;
        }
    }
};
     
 // Тестовый пример 
 int main() 
 { 
  setlocale (LC_CTYPE,"Russian");
  int k,n,x,y,q;
  // Создаем объект класса List 
  List lst; 
  cout<<"\nВведите количество элементов:\n";
  cin>>n;  
  for(int i=0; i <n; i++)
  { 
    cout<<"\nВведите элемент:\n";
    cin>>k;
    lst.Add(k); 
  }
  cout << "Заполненный список:" <<endl; 
  lst.Print();
  cout<<"\nВведите позицию с коротой добавлять:\n";
  cin>>y;
  cout<<"\nВведите елемент:\n";
  cin>>x;
  lst.PasteElement(x,y);
  lst.Print();
  cout<<"\nВведите номер элемента для удаления:\n";
  cin>>q; 
  lst.DelElement(q);
  lst.Print(); 
  system("PAUSE");
 }
Добавлено через 1 час 33 минуты
123123

Добавлено через 38 минут
Хнык1

Добавлено через 9 часов 9 минут
)))))))))))
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 14:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru