Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Список содержащий тест. Иерархия списков. 
:(
    Опции темы
Atij
Дата 19.5.2008, 08:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 13.4.2008

Репутация: нет
Всего: нет



Всем добрый день. Помогите пожалуйста релизовать слдующее:

1 – создать список строк информационная часть элементов кот-го содержит указаетли на начало слов.
2 – вывести его.
3 – удалить.
Вот что получилось по первому и второму пунктам:

Код

#include<fstream.h>

ofstream output("out.txt", ios::out);
ifstream input("input.txt", ios::in);

struct node // структура для списка строк
{
  node  *up;
  node *sled;
};
struct node1 // структура для списка слов
{
  char  elem;
  node1 *next;
};

 class Spisok {
   private:
     node *phead; //указатель на заголовочное звено списка строк
     node1 *phead1; //указатель на заголовочное звено списков слов

   public:

     Spisok() {phead=new(node);} // В куче зарезервируем место для динамического объекта, на который указывает phead:
     ~Spisok() {delete phead; delete phead1;}
     void Construction ();
     void OutList ();
    };

void main ()
{
  clrscr();
  Spisok A;

  A.Construction ();
  output<<"Elements before transformation:"<<endl;
  A.OutList ();
  

}

void Spisok::Construction ()
{
  node *t; // Отведем место для указателей в статической памяти
  node1 *p;
  char  el,slovo;
  char s;
  int i=0;


  t = phead; (*t).sled = NULL; // разбераемся с заголовочным звеном 
  while  (!input.eof()) 
  {

    (*t).sled = new (node); // Резервируем место для нового объекта списка строк
    t = (*t).sled;  //Указатель t содержит адрес   расположения созданного объекта.


    phead1=new (node1); // В куче зарезервируем место для динамического объекта, на который указывает phead1
    (*t).up = phead1; // здесь выдаёт ошибку, а я всеголишь хочу связать информационную часть одного списка с заголовочным звеном создаваевамаего списка
    p=phead1;

    (*p).next=NULL;

        while (s!='\n')
        {
        (*p).next = new (node1);
        p = (*p).next; (*p).elem = el; (*p).next = NULL;
            while (s!=' '||s!='\n')
            {
            s=input.get();
            slovo[i]=s; // ещё вот здесь ругается
            i++;
            }
        el=slovo;
        i=0;
        }
    (*t).sled=NULL;
  }

}

void Spisok::OutList ()

{
  node *t;
  node1 *p;

  t = phead; t = (*t).sled; t = (*t).sled;

for ((*t).sled;t!=NULL;t = (*t).sled)
{
p=(*t).up; // и здесь =( говорит что не могу присваивать элементы типа node типу node1, как этого избежать не понятно, пожалуйста помогите.
 p=(*p).next; p=(*p).next;
    for ((*p).next;p!=NULL;p = (*p).next)
    output<<(*p).elem <<" ";
}

}

Помогите пожалуйста кто чем сможет.
PM MAIL   Вверх
mes
Дата 19.5.2008, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Atij @  19.5.2008,  08:32 Найти цитируемый пост)
p=(*t).up; // и здесь =( говорит что не могу присваивать элементы типа node типу node1, как этого избежать не понятно, пожалуйста помогите.

присваивать можно только объекты которые можно привести к одному типу.
Цитата(Atij @  19.5.2008,  08:32 Найти цитируемый пост)
struct node // структура для списка строк
struct node 
{
  node  *up;
  node *sled;
};
struct node1 // структура для списка слов
{
  char  elem;
  node1 *next;
};

node  и  node1 этому условию не удовлетворяют.. (с node1 - явно перемудрено)
Цитата(Atij @  19.5.2008,  08:32 Найти цитируемый пост)
    (*t).up = phead1; // здесь выдаёт ошибку,

тоже самое

Цитата(Atij @  19.5.2008,  08:32 Найти цитируемый пост)
slovo[i]=s; // ещё вот здесь ругается

Цитата(Atij @  19.5.2008,  08:32 Найти цитируемый пост)
  char  el,slovo;

тип slovo не массив




--------------------
PM MAIL WWW   Вверх
Atij
Дата 19.5.2008, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 13.4.2008

Репутация: нет
Всего: нет



со структурами разобрался, а вот с char` ами пока не очень. 
Если объявляю как массив slovo, просит объявить как массив el, если объявляю как массив el, ругается в этой строке:
Код

(*p).elem = el;

PM MAIL   Вверх
mes
Дата 20.5.2008, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Atij @  19.5.2008,  18:16 Найти цитируемый пост)
если объявляю как массив el, ругается в этой строке:

так у тебя  elem типа char, а не char*. 
для начала разберись кто какого типа должен быть и все станет на места.



--------------------
PM MAIL WWW   Вверх
flyleaf
Дата 6.4.2009, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 40
Регистрация: 6.4.2009

Репутация: нет
Всего: нет



Помогите плиз! Ести иерархия класов, нужно запихнуть все в список. ну и естественно потом вывести на екран и очистить спиок.
со списками у меня все сложно( 
вот то что есть пока:
Код

#include <iostream.h>
const int len=80;
class persona
{
private:
char name[len];
unsigned long num;
public:
persona();
~persona();
void getdata()
{
cout<< "\n Vvedit fio: \n";
cin >> name;
cout << "\n Vvedit nomer: \n";
cin >> num;
}
virtual void putdata() const
{
cout << "\n fio: " << name;
cout<< "\n Number: "<<num;
}
};
persona::persona()
{
cout<<"element was created ";
}  ;
persona::~persona()
{
cout<<"element destroy!\n" ;
};

class injener: public persona
{
private:
int staj;
public:
void getdata ()
{
persona::getdata();
cout<< "\n Vvedit staj: \n";
cin >> staj;
}
void putdata() const
{
persona::putdata();
cout << "\n staj: " << staj;
}
};


class robitnuk: public persona
{
private:
int rozr9d;
public:
void getdata ()
{
persona::getdata();
cout << "\n Vvedit rozr9d robitnuka : \n";
cin >> rozr9d;
}
void putdata() const
{
persona::putdata();
cout<< "\n rozr9d: "<<rozr9d;
}
};

class slujb: public robitnuk
{
private:
char rang[len];
public:
void getdata ()
{
persona::getdata();
cout<< "\n Vvedit rang: \n";
cin >> rang;
}
void putdata() const
{
persona::putdata();
cout << "\n rang: " << rang;
}
};


struct Element
{
persona data;
Element *Next;
};
class List
{
Element *Head;
Element *Tail;
int Count;
public:
List();
~List();
void Add(persona data);
void Del();
void DelAll();
void Print();
int GetCount();
};
List::List()
{
Head=Tail=NULL;
Count=0;
};
List::~List()
{
DelAll();
};
int List::GetCount()
{
return Count;
};
void List::Add(persona data)
{

Element *temp=new Element;
temp->data=data;
temp->Next=NULL;
if(Head!=NULL) {
Tail->Next=temp;
Tail=temp;
}
else {
Head=Tail=temp;
}
};
void List::Del()
{
Element *temp = Head;
Head=Head->Next;
delete temp;
};
void List::DelAll()
{
while(Head !=0)
Del();
};
void List::Print()
{
Element *temp=Head;
while(temp!=0)
{
cout<< temp <<"\n ";
temp=temp->Next;
}
cout<<"\n\n";
};

int main()
{
char a;
List lst;
persona *p;
while (a!='Y')
{
cout<<"Vvestu dani (Y/N)? ";
cin>>a;
slujb s1;
robitnuk r1;
injener i1;
cout<< endl;
cout <<"\n Vvif informatsii pro slujbovts9";
s1.getdata();
cout <<"\n Vvif informatsii pro robitnuka";
r1.getdata();
cout <<"\n Vvif informatsii pro injenera";
i1.getdata();
}

 return(0);

}

на main все и застряло ( с добавлением в список елементов класа и выводом на екран не получается(
PM MAIL ICQ   Вверх
zim22
Дата 6.4.2009, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



flyleaf, не хотите std::list использовать?


--------------------
PM MAIL   Вверх
flyleaf
Дата 6.4.2009, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 40
Регистрация: 6.4.2009

Репутация: нет
Всего: нет



Цитата(zim22 @ 6.4.2009,  11:01)
flyleaf, не хотите std::list использовать?

Та мне любой способ! Просто в университете мы ничего толком не проходим, поетому в списках в С++ я вообще не понимаю пока, не дошла до того материала, а лабу надо здать, поетому и прошу помощи! Может подскажете как с етим std::list управлятся? 
PM MAIL ICQ   Вверх
zim22
Дата 6.4.2009, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(flyleaf @  6.4.2009,  11:09 Найти цитируемый пост)
 Может подскажете как с етим std::list управлятся? 

http://www.cplusplus.com/reference/stl/list/
там все операции расписаны для списка.
например push_front() - вставить элемент в начало списка
pop_back() - извлечь из конца.
и т.д. и т.п.


--------------------
PM MAIL   Вверх
flyleaf
Дата 6.4.2009, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 40
Регистрация: 6.4.2009

Репутация: нет
Всего: нет



zim22Оу, буду разбираться =) спасибо =)
PM MAIL ICQ   Вверх
flyleaf
Дата 6.4.2009, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 40
Регистрация: 6.4.2009

Репутация: нет
Всего: нет



тут надо использовать библиотеку list, на нее вроде не ругается, а когда прописываю
list<persona> pers
оно ругается на list(
PM MAIL ICQ   Вверх
mrbrooks
Дата 6.4.2009, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 19
Всего: 306



flyleaf, телепаты все на обеде. код в студию.
PM MAIL   Вверх
flyleaf
Дата 6.4.2009, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 40
Регистрация: 6.4.2009

Репутация: нет
Всего: нет



Цитата(mrbrooks @ 6.4.2009,  14:17)
flyleaf, телепаты все на обеде. код в студию.

На пару сообщений выше код моей программы и вся основа проблемы


Это сообщение отредактировал(а) flyleaf - 6.4.2009, 14:22
PM MAIL ICQ   Вверх
zim22
Дата 6.4.2009, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(flyleaf @  6.4.2009,  14:12 Найти цитируемый пост)
оно ругается на list(

как оно ругается? сильно?


--------------------
PM MAIL   Вверх
flyleaf
Дата 6.4.2009, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 40
Регистрация: 6.4.2009

Репутация: нет
Всего: нет



Цитата(zim22 @ 6.4.2009,  14:28)
Цитата(flyleaf @  6.4.2009,  14:12 Найти цитируемый пост)
оно ругается на list(

как оно ругается? сильно?

как на неопределенную переменную
Undefined symbol 'list'
Dev-C++ ругается на <,>

PM MAIL ICQ   Вверх
mrbrooks
Дата 6.4.2009, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 19
Всего: 306



Цитата(flyleaf @  6.4.2009,  14:22 Найти цитируемый пост)
На пару сообщений выше код моей программы и вся основа проблемы

жуть. ну попробуем призвать темные силы джедаев.  smile 
пробуй так.
Код

#include <list>
class persona
{
//blablabla
};

std::list<persona> pers;

PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1427 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.