![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 03.04.2011
Сообщений: 36
|
![]()
Задача следующая:Реализовать класс список для хранения целых чисел типа unsigned. Для класса
реализовать конструктор по умолчанию, конструктор копирования, деструктор, а также метод помещения значения в конец списка, навигация по списку, получение значения текущего элемента, удаления текущего элемента, определение длины списка. На базе разработанного класса создать новый класс – упорядоченный список. Для класса необходимо реализовать конструктор с параметром (направление сортировки), метод помещения значения в список, метод удаления из списка серии одинаковых значений максимальной длины (если таких последовательностей несколько, то первую из них). Используя разработанные классы необходимо реализовать следующую программу: пользователь с клавиатуры вводит целочисленные значения. Ввод осуществляется до ввода слова «stop». Четные значения заносятся в один список, а нечетные значения – в другой. Удалить из списков по две последовательности одинаковых значений максимальной длины. Полученные списки вывести на экран. |
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 03.04.2011
Сообщений: 36
|
![]()
Щас всё что сделал скину
spisok.h #pragma once class spisok{ protected: unsigned *list, size, ind; public: int Ins(unsigned val); int Poluczna4(unsigned &val); int Razmer(); int Dobavkonec(unsigned); int Udalelement(); int Na4(); int Next(); int Prev(); int Kon(); spisok(void); spisok(const spisok &); ~spisok(void); }; |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 03.04.2011
Сообщений: 36
|
![]()
spisok.cpp
#include "spisok.h" #include <iostream> #include <stdlib.h> using namespace std; spisok::spisok(void) { list = NULL; size = 0; } spisok::~spisok(void) { if(list) delete(list); } int spisok::Poluczna4(unsigned &val) { if((ind<0)||(ind>=size)) return 0; val = list[ind]; return 1; } int spisok::Razmer() { return size; } int spisok::Next() { if(ind == size-1) return 1; ind++; return 0; } int spisok::Prev() { if(ind == 0) return 1; ind--; return 0; } int spisok::Na4() { return ind = 0; } int spisok::Kon() { return ind = size-1; } int spisok::Dobavkonec(unsigned value){ unsigned *tmp = new unsigned[size+1]; if(!tmp) return 1; for(int i=0; i< size; i++){ tmp[i] = list[i]; } tmp[size] = value; delete [] list; list = tmp; ind = size; size++; return 0; } int spisok::Udalelement(){ if((ind<0)||(ind>=size)) return 1; unsigned *tmp = new unsigned[size-1]; int j =0; for(int i=0;i<size;i++){ if(i!=ind){ tmp[j] = list[i]; j++; } } delete [] list; list = tmp; size--; return 0; } |
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 03.04.2011
Сообщений: 36
|
![]()
rezervspisok.h
#pragma once #include "spisok.h" class rezervspisok : protected spisok { protected: int napravlenie; public: int Ins(unsigned val); void Udalser(); int Poluczna4(int,int&); rezervspisok(int); ~rezervspisok(void); }; |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 03.04.2011
Сообщений: 36
|
![]()
rezervspisok.cpp
#include "rezervspisok.h" #include "spisok.h" #include <iostream> #include <stdlib.h> using namespace std; int rezervspisok::Ins(unsigned val) { unsigned *tmp = new unsigned [size+1]; if(!tmp) return 0; if(*tmp != size) list = tmp; int ind = 0; if(napravlenie == 0){ for(int i=0;i<size;i++) if(val>list[i]) ind++; } else if(napravlenie == 1 ) { for(int i=0;i<size;i++) if(val<list[i]) ind++; } for(int i=size;i>ind;i--) list[i] = list[i-1]; list[ind] = val; size++; return 1; } void rezervspisok::Udalser(){ int maxpos = 0,pos = 0; int maxlen = 1,len = 1; for(int i=1;i<=size;i++){ if((i==size)||(i!=i-1)){ if(len>maxlen){ maxlen = len; maxpos = pos; } pos = i; //len = 1; }else len++; } unsigned *tmp = new unsigned[size - len]; int j = 0; for(int i=0; i<size; i++){ if((i <= maxpos-maxlen) || (i>maxpos)){ tmp[j] = list[i]; j++; } } delete [] list; list = tmp; } |
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 03.04.2011
Сообщений: 36
|
![]()
main
#include <string.h> #include <stdlib.h> #include "spisok.h" #include "rezervspisok.h" #include <iostream> using namespace std; int main(int argc, char* argv[]) { int napravlenie1, napravlenie2; cout << "Vvedite napravlenie sortirovki 1: "; cin >> napravlenie1; spisok list2(napravlenie2); cout << "Vvedite napravlenie sortirovki 2: "; cin >> napravlenie2; spisok list1(napravlenie1); cout << "Vvedite sam spisok:"; while (1){ char str1[100]; fflush (stdin); cin.getline(str1,100); if(strcmp(str1,"")==0) break; int num = atoi(str1); if(num%2==0) list1.Ins(num); else list2.Ins(num); } } |
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 03.04.2011
Сообщений: 36
|
![]()
Я всё сделал только майн не могу написать если кто может допишите main очень надо заранее спосибо большое!
|
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Описать класс-родитель и класс-потомок. Delphi 7 | Andrew_M | Помощь студентам | 0 | 15.01.2011 14:42 |
класс | NARTZISS | Общие вопросы .NET | 10 | 28.05.2010 20:59 |
КЛАСС | 4ika | Общие вопросы C/C++ | 1 | 16.03.2010 21:32 |
C++ . Класс | Ануар56 | Помощь студентам | 8 | 23.04.2009 19:41 |
Класс | Юлёк | Фриланс | 6 | 15.06.2008 15:00 |