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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++] Помогите с программой ! Не могу осилить ! Список с редактированием , интерфейсом . 
V
    Опции темы
Чoо
Дата 10.12.2010, 02:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



toxx, в ростовском государственном экономическом университете smile. по специальности "прикладная информатика в экономике". С первого курса изучаем только паскаль. Хотя когда интересовался, говорили, что будем изучать сначала паскаль, потом си, си++. Что-то еще обещали. Ну 5й курс сейчас ни си ни си++ не изучали. Вот думаю, может на 6м пройдут smile.
Хотя программирования хотелось бы по-больше. Как-то в собственном соку вариться тяжеловато. Может вторую вышку поступлю куда-нибудь в другое место.

Добавлено через 1 минуту
но хоть не VB. Честно говоря, им никогда не интересовался. Хотя знать его не мешало бы, что бы скрипты писать. Другого применения - не вижу.


--------------------
user posted image

OS: Debian Squeeze (kernel 3.8.2)
IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2
PM MAIL   Вверх
bylfer
Дата 14.12.2010, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата

Блок со 140 строки вообще не выполнется, сразу перейдет на 148. а там Search вернет 0, так как мы в эту функцию передали -1. 151 строка. Можно сразу анписать 
Выделить всёкод C++
1:
2:
    
if(!pCur)
   //далее по коду

Если же мы в Search передали все-таки number-1, а не n-1, то вроде бы должны оказхаться на 156 строке. честно говоря, там ужс. Мало того, что мы не освобождаем память, занимаемую ненужными элементами, так мы вообще рушим весь список, скажем 160й строкой.


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

Теперь вопрос по сортировке , при написании фу-ии мы вызываем список , и хотим получить имена , что то типо char "name" [80]  , имен много , хотим фу-ию которая пользуется именами как массивами , сравнивая их элементы - букавки ,  по результату сортируя все имена , на выходе хочется получить наш список с сорт.именами . 

Как написать такую фу-ию ? Без bool  желательно . 
PM MAIL   Вверх
Чoо
Дата 14.12.2010, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(bylfer @  14.12.2010,  17:00 Найти цитируемый пост)
Как написать такую фу-ию ? Без bool  желательно .  

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



--------------------
user posted image

OS: Debian Squeeze (kernel 3.8.2)
IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2
PM MAIL   Вверх
bylfer
Дата 14.12.2010, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

int Ravenstvo_slov(char name1[20], char name2[20]) // допер до такой фу-ии . 
{
    int i=0;

    while ((int)(name1[i]) == (int)(name2[i])) //этот момент меня смущает , бо мы сравнивая бакву с самого первого места и до последнего , как бы даем 
                                                //пропуск в цикл , в котором сравниваем ко-во букв , т.е. длинну , пусть и работает , но возможен ли алгоритм 
                                            //сравнения по буквенно , до тех пор пока не случится несовпадения по длинне или букавкам ? 
    {
        if (((name1[i])=='\0') && ((name2[i])=='\0'))
            return 1;

        i++;
    }
    
    return 0;
}
void Delete_name() // заводим слово и передаем наше слово и имена из списка , начиная с первого . 
{
    char slovo[20];
    ClearConsole();
    GotoXY(0, 0);
    cout << "DELETE BY NAME OF STUDENT" << endl;
    cout << "enter a name of student  ";
    cin >> slovo;

    student* pPoint = pBegin;

    if (1 == Ravenstvo_slov(pBegin -> name, slovo)) //если совподение на первом - просто двигаем указатели . 
    {
        pPoint = pPoint -> pNext;
        pBegin = pPoint;
        cout << slovo << " IS SERTIFIED";
        while(!KeyPressed());
        return;
    }

    do
    {
        if (Ravenstvo_slov(pPoint -> pNext -> name, slovo) == 1) //если где то в середине , то тоже двигаем .
        {
            pPoint -> pNext = pPoint -> pNext -> pNext;
            break;
        }
    
        pPoint = pPoint->pNext;
    }
    while (pPoint -> pNext != NULL);

    cout << slovo << " IS SERTIFIED";

    while(!KeyPressed()); //эта строчка пока не рассматривается как рабочая .

    return;
}


Хочется сортирвку сделать как в удалении , получили имена - сравнили , перетосавали . 

Ваши задачи смотрел - лес дремучий , ничего не понял . 
PM MAIL   Вверх
bylfer
Дата 21.12.2010, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



В общем программа почти готова ,если кому интересно .
Остался вопрос по сортировке : 

Код

void SortStudent_by_Name(Student* pCur)
{
    if (1 == Comparision(pBegin->Name, pBegin->pNext->Name)) // в скобках фу-ия сравнения слов по букавкам .
    {
        pBegin = pBegin -> pNext;
        pCur -> pNext = pCur -> pNext -> pNext;
        pBegin -> pNext = pCur;
        pCur = pBegin;
    }

}

void SortStudentName()
{
    ClearConsole();
    GotoXY(0, 0);
    
    int k = 0;
    Student* pCur = pBegin;
    Student* pFirst = NULL;
    Student* pSecond = NULL;
    Student* pThird = NULL;

    if (pCur->pNext == NULL)
    {
        cout << "Unchakalaka!!!11";
        while(!KeyPressed());
        return;
    }

    SortStudent_by_Name(pCur);

    Student* pHead = pBegin;
        
    while(pHead -> pNext -> pNext != NULL)
    {
        k=0;
        pHead = pBegin;
        pCur = pBegin;

        SortStudent_by_Name(pCur);

        while(pCur -> pNext -> pNext != NULL)
        {
            if (1 == Comparision(pCur->pNext->Name, pCur->pNext->pNext->Name))
            {
                pFirst = pCur -> pNext;
                pSecond = pCur -> pNext -> pNext;
                pThird = pCur -> pNext -> pNext -> pNext;
                
                pCur -> pNext = pSecond;
                pSecond -> pNext = pFirst;
                pFirst -> pNext = pThird;
                k++;
            }

            pCur = pCur -> pNext;
        }
        if (k ==0)
            break;

        pHead = pHead -> pNext;
    }

    cout << " SORTING COMPLITE";

    while(!KeyPressed());
    return;
}



В общем , вот .
Проблема в нестабильности сортировке , ведет себя странно , про то что есть другие виды я знаю , но мне не хватит уровня все переделать , потому прошу помочь с существующем . 
PM MAIL   Вверх
Batbko
Дата 21.12.2010, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Чoо, лениво пост до конца читать но если 
Цитата

единственное, что смущает, так это то, что я не сообразил как можно в параметрах функции вернуть указатель (ну в смысле не через return), поэтому удаление сделано немного криво (лишний поиск  ).

с этим ещё не разобрались, то можно делать так :
Код

/*
p_pointer - ссылка на указатель и на неё действуют все правила действующие на ссылку
*/
void setPointer(Foo*& p_pointer);
void main()
{
Foo * pointer;//ponter не инициализированн
setPointer(pointer);
// pointer инициализированн созданным обьектом

}

void setPointer(Foo*& p_pointer)
{
   p_pointer=new Foo();
}

PM MAIL   Вверх
Чoо
Дата 22.12.2010, 01:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



bylfer, завтра попробую глянуть исходник. но вообще посмотрите в отладчике пошагово, что происходит, может найдете ошибки.
да и это..
Код

if (1 == Comparision(pBegin->Name, pBegin->pNext->Name))

в код не вникал, но такая инструкция потенциально может вызвать ошибку доступа к памяти. Но еще раз подчеркну, код я еще не смотрел. 

Batbko, если бы  не
Цитата(Batbko @  21.12.2010,  22:51 Найти цитируемый пост)
лениво пост до конца читать

то далее, я написал, что с этим разобрался ;)

Добавлено через 3 минуты и 52 секунды
только я это сделал через указатель на указатель


--------------------
user posted image

OS: Debian Squeeze (kernel 3.8.2)
IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2
PM MAIL   Вверх
Чoо
Дата 22.12.2010, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А в чем проявляется нестабильность?

глянул, сразу что бросается в глаза, так это следующее:
если в списке будет 2 или 1 элемент, то тут(35 строка в вашем коде):
Код

while(pHead -> pNext -> pNext != NULL)

мы получим AV. 

да и воопще, такие инструкции, как:
Код

pThird = pCur -> pNext -> pNext -> pNext;

выглядят вообще не читабельно. Черт голову сломит, пока сообразишь, что тут происходит. можно обойтись указателями, заходящими не лальше следующего элемента.
А можно вообще не париться, если создавать новый список, удовлетворяющий новым критерям, а старый уничтожать. Это намного проще. Тем более для простого списка не нужна какая-нибудь сверхэфективность.

Это сообщение отредактировал(а) Чoо - 22.12.2010, 21:47


--------------------
user posted image

OS: Debian Squeeze (kernel 3.8.2)
IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2
PM MAIL   Вверх
bylfer
Дата 25.12.2010, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



И так , зачет в среду , посему завтра представлю вариант программы , и вопросы соответственно . 
PM MAIL   Вверх
bylfer
Дата 26.12.2010, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

#include <iostream>
#include "Conlib.h" 
using namespace std; 

struct Student // так мы задаем нашу структуру 
{
    char Name[80];
    char SurName [80];
    int Bday ;
    int Group ; 
    Student* pNext;
    
};

 Student* pBegin; // задаем с самого начала , дабы все видели .





void Enter (Student* pCur) 
{
    cout << "Input Name " ;
    cin >> pCur->Name; 

    cout << "Input SurName ";
    cin >> pCur->SurName;
    
    cout << "Input Bday ";
    cin >> pCur->Bday;
    
    cout << "Input Group ";
    cin >> pCur->Group;
    
}



void AddtoList(Student* pAdd) 
    
{
    
    if (pBegin==NULL)
    {
        pBegin=pAdd;
        pAdd->pNext=NULL;
        return;
    }
    
    Student* pCur=pBegin;


    while(pCur && pCur->pNext)
        pCur=pCur->pNext;
        
    if (pCur->pNext==NULL)
    {
        pCur->pNext=pAdd;
        pAdd->pNext=NULL;
        return;
    }
    
    Student* pNext=pCur->pNext;
    pCur->pNext=pAdd;
    pAdd->pNext=pNext;

}



void Add ()
{
    Student* pCur = pBegin;
                int i ;
                for (i =0 ; i<4 ; i++)
                    {
                        pCur = new Student;
                        Enter (pCur);
                        AddtoList(pCur);
                    }
}
Student* Search (int n)
{
    if(0 == n)
        return pBegin;

    int i = 0;
    
    Student* pCur=pBegin;
    
    while(pCur!=NULL)
    {
        if(i == n)
            return pCur;

        pCur=pCur->pNext;
        i++;
    }

    return NULL;
}




void SetChenges (Student* pCur)
{
    
    int number ; 
    int n=0;
    pCur = pBegin;
    cout << "Input Number" ;
    cin >> number ;
    Student* pSearch;
    pSearch = Search (number);
    Enter(pSearch);

}






void PrintElement(Student* pCur)
 {
    cout << pCur->Name<<"Name"<<endl;
    cout << pCur->SurName<<"SurName"<<endl;
    cout << pCur->Bday<<"Bday"<<endl;
    cout << pCur->Group<<"Group"<<endl;
 }
void PrintList ()
{

        if (pBegin==NULL)
            {
                cout << "Net zapisei" << endl;;
                return;
            }
        Student* pCur=pBegin;
        do 
        {
            PrintElement(pCur);

            pCur=pCur->pNext;
        }
        while(pCur!=NULL);
}

void GetMyKey()
 {
    int a ;
    cout << "vvedite chislo" << endl;
    a = GetKey();
    cout << "kod :" << a << endl ;
 }
 int Comparity(char* pA, char* pB) 
{
    int i=0;

    while ((int)pA[i] == (int)pB[i]) 
    {
        if (((pA[i])=='\0') && ((pB[i])=='\0'))
            return 1;

        i++;
    }
    
    return 0;
}



 int ComName(char* pA, char* pB) 
 {
    int i=0;

    while ((int)*(pA+i) >= (int)*(pB+i))
    {
        if ((int)*(pA+i) > (int)*(pB+i))
            return 1; 

        if (*(pA+i) == '\0')
            return 0;

        if (*(pB+i) == '\0')
            return 1;

        i++;
    }
    
    return 0;
}

 int ComAll (int PoleNumber, int a, int b)// данная функция призвана разгрузить сортировку , ибо сортировка пузырьком идентична
                                         // потому собираем все условия в одно место , а возвращаем только значение от сравнения
                                         // тип сравнения зависит от кода введенным пользователем в Navigate . 
 {
    Student *pA = Search(a);
    Student *pB = Search(b);
    Student* pCur = pBegin;
    switch (PoleNumber)
    {
     
     case 49:
         return ComName(pA->Name, pB->Name);

     case 50:
         return ComName(pA->SurName, pB->SurName);

     case 51:
         if(pCur->Group > pCur->pNext->Group)
             return 1;
         else
             return 0;

     case 52:
         if(pCur->Bday > pCur->pNext->Bday)
             return 1;
         else
             return 0;

     }
}
 
void DelStudentNum()
{
    int number ; 
    
    Student* pCur = pBegin;
    cout << "Input Number" ;
    cin >> number ;

    if (number<=0)
        cout << "No element" << endl ;

    if (number=1)
    {
        pCur = pBegin->pNext ;
        pCur = pCur->pNext ;
        pBegin->pNext = NULL ;
        pBegin = pCur ;
    }

    else 
    {
        pCur = Search (number-1);
        if (NULL == pCur)
        {
            cout << "Incorrect number" ;
            return ;
        }
        if (pCur->pNext->pNext == NULL)
            pCur->pNext = NULL;

        else 
            pCur->pNext = pCur->pNext->pNext ;  
            
    }

        

        
}



void DelStudentName() 
{
    char DelName[40];
    ClearConsole();
    GotoXY(0, 0);
    
    cout << "Print Name for dellit";
    cin >> DelName;

    Student* pCur = pBegin;

    if (1 == Comparity(pBegin -> Name, DelName)) 
    {
        pCur = pCur -> pNext;
        pBegin = pCur;
        cout << DelName << " done ";
        while(!KeyPressed());
        return;
    }

    do
    {
        if (Comparity(pCur -> pNext -> Name, DelName) == 1) 
        {
            pCur -> pNext = pCur -> pNext -> pNext;
            break;
        }
    
        pCur = pCur->pNext;
    }
    while (pCur -> pNext != NULL);

    cout << DelName << " done";

    while(!KeyPressed()); 

    return;
}





void DelStudentSurName() 
{
    char DelSurName[40];
    ClearConsole();
    GotoXY(0, 0);
    
    cout << "Print Surname for dellit";
    cin >> DelSurName;

    Student* pCur = pBegin;

    if (1 == Comparity(pBegin -> SurName, DelSurName)) 
    {
        pCur = pCur -> pNext;
        pBegin = pCur;
        cout << DelSurName << " done ";
        while(!KeyPressed());
        return;
    }

    do
    {
        if (Comparity(pCur -> pNext -> SurName, DelSurName) == 1) 
        {
            pCur -> pNext = pCur -> pNext -> pNext;
            break;
        }
    
        pCur = pCur->pNext;
    }
    while (pCur -> pNext != NULL);

    cout << DelSurName << " done";

    while(!KeyPressed()); 

    return;
}





void SortStudent_by_Name(Student* pCur)
{
    if (1 == ComName(pBegin->Name, pBegin->pNext->Name)) 
    {
        pBegin = pBegin -> pNext;
        pCur -> pNext = pCur -> pNext -> pNext;
        pBegin -> pNext = pCur;
        pCur = pBegin;
    }

}

void SortStudentName(int PoleNumber)
{
    ClearConsole();
    GotoXY(0, 0);
    
    int k = 0;
    Student* pCur = pBegin;
    Student* pHead = pBegin;
    Student* pFirst = NULL;
    Student* pSecond = NULL;
    Student* pThird = NULL;
    
    if (pCur->pNext == NULL)
    {
        cout << "ne verno";
        while(!KeyPressed());
        return;
    }

    SortStudent_by_Name(pCur); // необходима для 1 и 2 элементов , ибо надо переобозначать голову , остальные эл-ты по пузырьку .
    
    

    while(1)
    {
        k=0;
        pHead = pBegin;
        pCur = pBegin;

        SortStudent_by_Name(pCur);
        
        int i =0 ;
        for ( i=0 ; pCur->pNext != NULL ; i++ ) //  место для пузырька , но не уверен в отлаженности , манипуляции с курсорами 
        {                                        // не загнал в функцию ибо лень . 
            if (1 == ComAll(PoleNumber,i , i+1))
            {    
                pFirst = pCur -> pNext;
                pSecond = pCur -> pNext -> pNext;
                pThird = pCur -> pNext -> pNext -> pNext;
                    
                pCur -> pNext = pSecond;
                pSecond -> pNext = pFirst;
                pFirst -> pNext = pThird;
                k++;
            }
            pCur = pCur -> pNext;
        }
        if (k == 0)
            break;


        /*while(pCur -> pNext -> pNext != NULL)
        {
            if (1 == ComName(pCur->pNext->Name, pCur->pNext->pNext->Name))
            {
                pFirst = pCur -> pNext;
                pSecond = pCur -> pNext -> pNext;
                pThird = pCur -> pNext -> pNext -> pNext;
                
                pCur -> pNext = pSecond;
                pSecond -> pNext = pFirst;
                pFirst -> pNext = pThird;
                k++;
            }

            pCur = pCur -> pNext;
        }
        if (k == 0)
            break;

        pHead = pHead -> pNext;
    }*/


    }
    PrintList ();
    while(!KeyPressed());
    return;

    
}
void Navigate ()
{                // хотел как в Удалении на 2 странице , проблемы следующие : 
                // 1) не пере ходит в меню после добавления и вобще после фу-ии , а хотелось бы 
                // 2) вводятся только последовательные намаре , например 1-добавили , 3- не работает , только 2-удаление
                // т.е. 1-2-3 работает , 1-3-.. нет . 
                // 3) Не знаю как распечатывать по окончанию операции ( 
                // 4) Корявое отображение всего . 
        for (;;)
        {
            cout << " Press key , to " << endl ;    
            cout <<    " |1| Add student" << endl ;      
            cout <<    " |2| Delete student"  << endl ;  
            cout <<    " |3| Sort student"   << endl ;  
            cout <<    " |q| Exit a programm" << endl ; 

            char r ;
            cin >> r ; 
            switch (r)
            {
            
            case 49:
                ClearConsole();
                Add ();
                Navigate ();
                return ;
            
            case 50:
                ClearConsole();
                for (;;)
                {
                        cout << " Press key , to remove on : "<< endl ;
                        cout << " |1| Nummber"<< endl ;
                        cout <<    " |2| Name"<< endl ;
                        cout <<    " |3| Surname"<< endl ;
                        cout <<    " |q| Exit to menu"<< endl ;

                    char p ;
                    cin >> p ;
                    switch (p) 
                    { 

                    
                    case 49:
                        {
                            ClearConsole();
                            DelStudentNum();
                            PrintList ();
                            return;
                        }
                    case  50:
                        {                        
                            ClearConsole();
                            DelStudentName();
                            PrintList ();
                            return;
                        }
                    case 51:
                        {
                        ClearConsole();
                        DelStudentSurName();
                        PrintList ();
                        return ;
                        }    
                    case 169:
                        {
                            ClearConsole();
                            return ;
                        }
                    }
                }
            
                for (;;)
                {
                    cout << " Press key , to sort on : "<< endl ;
                    cout <<" |1| Name"<< endl ;
                    cout <<    " |2| SurName"<< endl ;
                    cout <<    " |3| Group"<< endl ;
                    cout <<    " |4| BDay"<< endl ;
                    cout <<    " |q| Exit to menu" << endl ;
                    
                        int PoleNumber ;
                        
                        PoleNumber = GetKey();
                        
                        if (PoleNumber == 169)
                            return ;
                        SortStudentName(PoleNumber); 
                        PrintList ();

                
                }
            
            case 169:
                return ;

            }
        
        }
}
    

        
                                        
void main()
{
    pBegin = NULL;
    Student* pCur;
    
    /*int i ;
    for (i =0 ; i<4 ; i++)
    {
        pCur = new Student;
        Enter (pCur);
        AddtoList(pCur);
    }*/
    Navigate ();
    
}
    




В общем как то так , сортировка по номеру не работает , Navigate  тоже .  
Остались проблемы по сборке но я не  знаю как это все отладить , если не трудно помогите . 


Я понимаю кода много , но основной упр это сортировка и Navigate 

Это сообщение отредактировал(а) bylfer - 26.12.2010, 14:50
PM MAIL   Вверх
Чoо
Дата 28.12.2010, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



в качестве примера, пара пунктов навигации:
Код

void add(const char* name, const char* surname, int birthday, int group)
{
    Student* p;
    p = new Student;
    strcpy(p->Name,name);
    strcpy(p->SurName,surname);
    p->Bday = birthday;
    p->Group = group;
    AddtoList(p);
}

void destroj_list()
{
    Student* pCur;
    while(pBegin)
    {
        pCur = pBegin;
        pBegin = pBegin->pNext;
        delete pCur;
    }
}

void Navigate ()
{
    for(;;)
    {
        cout << "Main menu\n"
                "   [0] - add student\n"
                "   [1] - edit list\n"
                "   [2] - sort list\n"
                "   [3] - print list\n"
                "   [4] - exit\n\n";
        char r;
        cin >> r;

        switch(r){
        case '0':
            cout << "Enter student name, surname, birthday and group. "
                    "Enter \'q\' - for back to main menu\n\n";
            char buf[200];
            char name[80],
                 surname[80];
            int  bday;
            int  group;
            gets(buf); // очистили от предыдущего вывода
            for(;;)
            {
                gets(buf); //gets - не безопасно
                if(strcmp(buf,"q")==0)
                    break;
                sscanf(buf,"%s %s %d %d", name, surname, &bday, &group);
                add(name,surname,bday,group);
            }
            break;
        case '1':break;
        case '2':break;
        case '3':
            PrintList();
            cout<<"************************\n\n";
            break;
        case '4':
            destroj_list();
            return;
        }
    }
}

сортировку не добавлял, редактирование тоже. но мысль чо да как, думаю понятна.

Это сообщение отредактировал(а) Чoо - 28.12.2010, 23:02


--------------------
user posted image

OS: Debian Squeeze (kernel 3.8.2)
IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2
PM MAIL   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

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

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

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

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


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

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


 




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


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

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