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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++] динамические структуры 
:(
    Опции темы
mego4el
  Дата 3.2.2011, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



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

1) Кольцевой двунаправленный список (добавление/удаление в произвольное место списка, отличное от начала (например после звена, указатель на которое задан). Проверка, пуст ли список, очистка списка, печать списка в направлении от верха к низу \ низа к верху.

Необходимо написать программу на С++.

Спасибо всем, заранее! 
PM MAIL   Вверх
mes
Дата 3.2.2011, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(mego4el @  3.2.2011,  20:50 Найти цитируемый пост)
и подскажите с чего здесь начинать?

с поиска.. подобные темы поднимались не один раз и рассмотрены  со всех сторон.. 



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


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

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



Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 


--------------------
...
PM   Вверх
mego4el
  Дата 13.2.2011, 00:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Собственно вот, что получилось:
Код

#include <iostream.h>
#include <windows.h>
 
const int NotUsed=system("color F0");
int menu();
 
struct list
{
        char sn[50];  //student name
        int sid;      //student number
        list *next;
        list *prev;
};
 
list *list_end=NULL;          //sozdanie pustogo spiska
list *dobav_nach(list *p);  //dobavit v nachalo
list *udal_nach(list *p);    //udalit iz nachala
list *dobav_proizv(list *p);  //dobavit v proizvolnoe mesto
list *udal_proizv(list *p);  //udalit iz proizvolnogo mesta
void proverka(list *p);     //proverka, pust li spisok
list *clean_list(list *p);    //ochistit spisok
void print(list *p);        //vyiti
 
//------------------------------------------------------------
 
int main()
{
        list *l=NULL;
        bool ex=true;
        while (ex)
        {
                switch(menu())
                {
                case 1:
                        l=dobav_nach(l);
                        break;
                case 2:
                        l=udal_nach(l);
                        break;
                case 3:
                        dobav_proizv(l);
                        break;
                case 4:
                        if (udal_proizv(l)==NULL)
                        l=NULL;
                        break;
                case 5:
                        proverka(l);
                        break;
                case 6:
                        l=clean_list(l);
                        break;
                case 7:
                        print(l);
                        break;
                case 0: ex=false;
                        break;
                default: cout<<"Vyberite punkt!"<<endl;
                        break;
                }
        }
        return 0;
}
 
//-----------------------------------------------
 
int menu()
{
        int m;
        cout<<" --------------------------------"<<endl;
        cout<<" Vyberite punkt: \n\n";
        cout<<" 1 - dobavit v nachalo\n";
        cout<<" 2 - udalit iz nachala\n";
        cout<<" 3 - dobavit v proizvolnoe mesto\n";
        cout<<" 4 - udalit iz proizvolnogo mesta\n";
        cout<<" 5 - proverit, pust li spisok\n";
        cout<<" 6 - ochistit spisok\n";
        cout<<" 7 - pechat spiska\n";
        cout<<" 0 - vyiti\n";
        cout<<" --------------------------------"<<endl<<endl;
    cin>>m;
        return m;
}
 
//-----------------------------------------------
 
list *dobav_nach(list *p)
{
        list *t;
        t=new list;
        cout<<endl<<" Vvedite imya studenta: ";
        cin>>(t->sn);
        cout<<" Vvedite nomer studenta: ";
        cin>>t->sid;
        if(p==NULL)
        {
                list_end=t;
                t->next=t;
                cout<<endl<<" ...Added successfully!\n\n";
        }
        else
        {
        t->next=p;
        list_end->next=t;
        cout<<endl<<" ...Added successfully!\n\n";
        }
        return t;
}
 
//-----------------------------------------------
 
list *udal_nach(list *p)
{
        list *t;
        if(p==NULL)
                cout<<" Spisok pyst!";
        else
        {
                if(p==list_end)
                {
                        delete p;
                        p=NULL;
                        list_end=NULL;
                        cout<<endl<<" ...Deleted successfully!\n\n";
                }
                else
                {
                        t=p;
                        p=p->next;
                        list_end->next=p;
                        delete t;
                        cout<<endl<<" ...Deleted successfully!\n\n";
                }
        }
        return p;
}
 
//-----------------------------------------------
 
list *dobav_proizv(list *p)
{
        int sd;
        list *s,*t;
        if(p==NULL)
                cout<<" Spisok pyst!";
        else
        {
                t=p;
                cout<<endl<<"Vvedite nomer studenta, posle kotorogo budet vstavlen etot: ";
                cin>>sd;
                do
                {
                if(t->sid==sd)
                        {
                        s=new list;
                        cout<<"Vvedite imya studenta: ";
                        cin>>(s->sn);
                        cout<<"Vvedite nomer studenta: ";
                        cin>>s->sid;
                        s->next=t->next;
                        t->next=s;
                        cout<<endl<<" ...Added successfully!\n\n";
                        if(s->next==p)
                        list_end=s;
                        break;
                        }
                t=t->next;
                }
        while(t!=p);
        }
        return s;
}
 
//-----------------------------------------------
 
list *udal_proizv(list *p)
{
        int sd;
        list *s,*t;
        if(p==NULL)
        cout<<" Spisok pyst!";
        else
        {
                t=p;
                cout<<endl<<"Vvedite nomer studenta, kotoruy budet udalen: ";
                cin>>sd;
        while(t->next!=p)
        {
                if(t->next->sid==sd)
                {
 
                        s=t->next;
                        t->next=s->next;
                        delete s;
                        cout<<endl<<" ...Deleted successfully!\n\n";
                        if(t->next==p)
                        {
                                list_end=t;
                        }
                        break;
                }
                t=t->next;
        }
        }
        return t;
}
 
//-----------------------------------------------
 
void proverka(list *p)
{
        if(p==NULL)
                cout<<endl<<" Spisok pyst!\n\n";
        else
                cout<<endl<<" Spisok ne pyst!\n\n";
}
 
//-----------------------------------------------
 
list *clean_list(list *p)
{
        list *t;
        if(p==NULL)
                cout<<" Spisok pyst!";
        else
        {
                while(p!=list_end)
                {
                        t=p;
                        p=p->next;
                        delete t;
                }
                delete p;
                p=NULL;
                list_end=NULL;
                cout<<endl<<" ...Cleaned successfully!\n\n";
        }
        return p;
 
}
 
//-----------------------------------------------
 
void print(list *p)
{
        list *t_p=p;
        if(t_p)
        {
                do
                {
                cout<<" ---------------------------"<<endl;
                cout<<" Imya studenta: "<<t_p->sn<<endl;
                cout<<" Nomer studenta: "<<t_p->sid<<endl;
                cout<<" ---------------------------\n\n";
                t_p=t_p->next;
                }
        while(t_p!=list_end->next);
        }
        else
        cout<<" Spisok pyst!\n\n";
}


пожалуйста подскажите, как сделать что бы имя студента можно было записывать с пробелами, а так же что бы номер был максимум 10 символов. и еще интересует, правильно ли вообще составлен "кольцевой двунаправленный список", и что здесь не так?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

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

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


 




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


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

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