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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа со структурами, Как можно оперировать с указателями? 
V
    Опции темы
Deliverance
Дата 9.10.2009, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 2.12.2007
Где: Украина,Донецк

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



Вот всё моё детище целиком рабочее
Код

# include <iostream>
# include <string.h>
# include <windows.h>
# include <stdio.h>

using namespace std;
struct Storage{char titl[30];char autor[30];};



Storage Put();

Storage **AddBook(Storage**S,int &n);

Storage **NweBook(Storage**S,int &n);

Storage **DelBook(Storage**S,int &n);

Storage **SortBook(Storage**S,int &n);

int TSerchBook(Storage**S,int &n,int &index);

int ASerchBook(Storage**S,int &n,int &index);

Storage **AddBook(Storage**S,int &n);

void OutputBook(Storage**S,int &n);



Storage Put(){
    // формирование объкта
    Storage temp;
    cout<<"\n Введите название : ";
    cin>>temp.titl;
    cout<<"\n Введите автора :";
    cin>>temp.autor;
    
    return temp;
}
void OutputBook(Storage**S,int &n)
{
    Storage temp;
    for(int i=0;i<n;i++)
     {
        
             temp=*S[i];
             cout <<i<<":\t"<<temp.titl<<":\t" <<temp.autor<<'\n';
        
     }
    
        
}
Storage **SortBook(Storage**S,int &N)
{
    
    Storage tmp,tmp1;
    for(int i=0;i<=N-1;i++)
    {
      for(int j=N-1;j>i;j--)
        {
         tmp=*S[j];
         tmp1=*S[j-1];
         int r= strncmp(tmp.titl,tmp1.titl,1); 
        if(r<0)
          {
             Storage *p=S[j];
             S[j]=S[j-1];
             S[j-1]=p;
             r=0;
          }
        }
     } 

    
    return S;
}
Storage **DelBook(Storage**S,int &N)
{
    int t=N;
    Storage**temp=new Storage*[--N];
    for(int i=0;i<N;i++)
    {
        temp[i]=new Storage;
    }
    for(int i=0;i<N;i++)
     {
       *temp[i]=*S[i];
     }
    
    
    
    for(int i=0;i<t;i++)
    {
        delete[] S[i];
    }
    delete S;
    
    return temp;
    
}
Storage **AddBook(Storage**S,int &N)
{
    int t=N;
    Storage**temp=new Storage*[++N];
    for(int i=0;i<N;i++)
    {
        temp[i]=new Storage;
    }
    for(int i=0;i<N-1;i++)
     {
       *temp[i]=*S[i];
     }
    *temp[N-1]=Put();
    
    
    for(int i=0;i<t;i++)
    {
        delete[] S[i];
    }
    delete S;
    
    return temp;
}
int ASerchBook(Storage**S,int &N,int &index)
{
    Storage tmp,tmp1;
    cout << "\n Введите автора :";
    cin >>tmp1.autor;
    
    for(int i=0;i<=N;i++)
    {
      for(int j=0;j<N;j++)
        {
         tmp=*S[j];
         int r= strncmp(tmp.autor,tmp1.autor,1); 
          if(r==0)
            {
                index=j;
             return 1;
            }
        }
     } 
    return 0;
}
int TSerchBook(Storage**S,int &N,int &index)
{
    Storage tmp,tmp1;
    cout << "\n Введите название книги :";
    cin >>tmp1.titl;
    
    for(int i=0;i<=N;i++)
    {
      for(int j=0;j<N;j++)
        {
         tmp=*S[j];
         int r= strncmp(tmp.titl,tmp1.titl,1); 
          if(r==0)
            {
                index=j;
             return 1;
            }
        }
     } 
    return 0;
}
Storage **NewBook(Storage**S,int &N)
{
    int t=N;    
    cout << "\n Введите n:";
    cin >> N;

    Storage**temp=new Storage*[N];

    for(int i=0;i<N;i++)
    {
        temp[i]=new Storage;
    }
    for(int i=0;i<N;i++)
    {
      *temp[i]=Put();
    }
    
    for(int i=0;i<t;i++)
    {
        delete []S[i];
    }
    delete S;
    return temp;


}
        

void main()
{
    
    SetConsoleOutputCP(1251);
    int n=0,v=0,x=0,&N=n, &index=x;
    
    cout<<"\n Введите n= ";
    cin >> n;

    Storage **S=new Storage*[n];

    for(int i=0;i<n;i++)
    {
        S[i]=new Storage;
    }
    for(int i=0;i<n;i++)
    {
            *S[i]=Put();
    }
 while(v!=8)
    {
        system("cls");
        cout << "\t\t\t\t Меню \n\n";
        cout << "1. Новый список \n\n";
        cout << "2. Добавить элемент списка \n\n";
        cout << "3. Удалить элемент списка \n\n";
        cout << "4. Сортировка  \n\n";
        cout << "5. Вывод элементов списка на экран \n\n";
        cout << "6. Поиск списка по названию \n\n";
        cout << "7. Поиск списка по автору \n\n";
        cout << "8. Выход \n\n";
        cout << "Ваш выбор :";
        cin >> v;
        cout << '\n';

        switch(v)
               {
                case 1: 
                    {
                     S=NewBook(S,n);
                        cout <<"\n";
                        break;
                    }
                case 2:
                    {
                        S=AddBook(S,n);
                    
                        cout <<"\n";
                        break;
                    }
                case 3:
                    {
                        S=DelBook(S,n);
                        cout <<"\n";
                        
                        break;
                    }
                case 4:
                    {
                        S=SortBook(S,n);
                        cout << '\n';                
                        break;
                    }
                case 7:
                    {
                        
                     int R=ASerchBook(S,n,index);
                        if(R==1)cout<<"Книга этого автора  под № :"<<index;
                        if(R==0)cout<<"Книги этого автора нет в списке \n";
                        cout <<"\n";
                                            
                        Sleep(2000);
                        
                        break;
                    }
                case 5:
                    {
                        OutputBook(S,n);
                        cout <<"\n";
                        Sleep(2000);
                        break;
                    }
                case 6:
                    {
                        int R=TSerchBook(S,n,index);
                        if(R==1)cout<<"Книга этого автора  под № :"<<index;
                        if(R==0)cout<<"Книги этого автора нет в списке \n";
                        cout <<"\n";
                                             
                        Sleep(2000);
                    }
               }
    }

 for(int i=0;i<N;i++)
 {
     delete[]S[i];
 }
 delete S;
    
}



PM MAIL WWW ICQ Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

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

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

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

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


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

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


 




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


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

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